4

我想捕获端口 80 上的所有 tcp 数据包,这些数据包将发送到转发地址,并将它们传递给用户空间程序进行修改。我知道如何使用 IPtables 规则来做到这一点,例如

iptables -A FORWARD ... -j NFQUEUE --queue-num 10

但我似乎找不到任何例子,而且有时间限制,所以我不能只筛选wireshark代码。我正在寻找例子,甚至是一个开始的地方。我可以使用插座吗?或者是否有一个内核数据结构可用于将数据包从堆栈中弹出,一旦完成,如何将数据包传递回 netfilter?

4

1 回答 1

3

您可以编写一个内核模块来注册特定协议的排队数据包。您可以阅读 netfilter-hacking-HOWTO,第 25 页有一节“处理排队的数据包”。本节在更高层次上讨论,但回答您提出的所有问题。

下载地址:http: //www.netfilter.org/documentation/index.html#documentation-howto

您可以使用 nf_reinject() 让数据包得到进一步处理。

我不想重复本指南中的任何内容,但这应该足以开始。

于 2012-05-04T01:38:30.840 回答