【问题标题】:Packet injection, filtering and mangling WITHOUT GPL?没有 GPL 的数据包注入、过滤和修改?
【发布时间】:2013-05-06 12:24:04
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: linux iptables netfilter


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 那是不真实的。许可在netfilter.org/licensing.html 明确规定 - libnetfilter 是 GPLv2,这意味着任何链接到它的东西都是派生作品,因此受 GPLv2 条款的约束。
      猜你喜欢
      • 1970-01-01
      • 2023-04-02
      • 2014-03-13
      • 1970-01-01
      • 2014-02-28
      • 2020-04-23
      • 2016-11-01
      • 1970-01-01
      • 2012-03-23
      相关资源
      最近更新 更多