接受来自网络过滤器的用户空间中的数据包



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

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

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

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

从以下位置下载:http://www.netfilter.org/documentation/index.html#documentation-howto

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

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

最新更新