2013-05-06 43 views
2

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

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

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

那么,有什么替代品netfilter

回答

1

我相信你的问题是,libnetfilter是受GPLv2许可证(而不是LGPL)和任何项目建设,因此也将受到GPLv2许可证;这是你想要避免的(我认为)。

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

但是,我最后一次遇到这个问题时,我使用libpcap而不是BSD许可。这是一个鲜为人知的事实,libpcap可以发送原始数据包以及接收它们。但是,它比netfilter低得多 - 你会得到原始数据包,就这么简单。

-1

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

+0

这是不真实的。许可证明确地在http://www.netfilter.org/licensing.html中列出 - libnetfilter是GPLv2,意味着链接到它的任何东西都是派生的工作,因此受到GPLv2条款的约束。 – abligh 2016-11-11 17:07:49