数据包注入,过滤和修改没有GPL?

时间:2013-05-06 12:24:04

标签: linux iptables netfilter

我必须在Linux系统上进行数据包检查,修改,丢弃和注入数据包。理想情况下,这也将出现在用户空间以及IP数据包和以太网帧上。

不幸的是,我不能为此开放OpenSource,这基本上排除了基于NFQUEUElibnetfilter_queue的任何方法,因为所有netfilter(和他们的狗)都只是GPL。

我想通过简单地调用netfilter来同时使用TAP / TUN设备来控制iptables,但这似乎充其量只是凌乱......

那么,netfilter还有其他选择吗?

2 个答案:

答案 0 :(得分:1)

我认为您的问题是libnetfilter受GPLv2许可(不是LGPL)的约束,因此构建这些许可的任何项目也将受GPLv2许可的约束;这是你想要避免的(我认为)。

另一种方法是使用不受GPLv2许可证约束的语言绑定。一个候选人似乎是Go绑定 - 例如,参见here,这似乎是在Apache许可下。我显然没有检查其中每个文件的来源。另一种方法是将您的应用程序分成两部分 - 一个与Netfilter通信的小层,通过(例如)RPC接口与您的应用程序的其余部分进行通信。

但是,上次我遇到这个时,我使用了libpcap代替了BSD许可。一个鲜为人知的事实是libpcap可以发送原始数据包并接收它们。但是,它比netfilter低得多 - 你得到原始数据包就是这样。

答案 1 :(得分:-1)

许可证不适用于您的用户空间应用程序。