2

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

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

我想过netfilter通过简单地调用来并行使用 TAP/TUN 设备来控制iptables,但这似乎充其量是混乱的......

那么,有什么替代品netfilter吗?

4

2 回答 2

1

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

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

但是,我最后一次遇到这个问题时,我libpcap改用了 BSD 许可。这是一个鲜为人知的事实,libpcap可以发送原始数据包以及接收它们。然而,它比 netfilter 低得多——你得到的是原始数据包,仅此而已。

于 2016-11-11T17:14:23.167 回答
-1

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

于 2016-11-11T16:55:15.810 回答