2013-05-06 139 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