我想捕获端口80上所有转发到正向地址的tcp数据包,并将它们传递给用户空间程序进行修改。我知道如何使用IPtables规则来执行此操作,例如
iptables -A FORWARD ... -j NFQUEUE --queue-num 10
但我似乎无法找到任何示例,并且有时间限制,所以我不能只通过wireshark代码进行筛选。我正在寻找例子,甚至是一个开始的地方。我可以使用套接字吗?或者是否有一个内核数据结构可以用来从堆栈中弹出数据包,一旦完成,我怎样才能将数据包传回netfilter?
答案 0 :(得分:3)
您可以编写一个内核模块来注册特定协议的排队数据包。 你可以阅读netfilter-hacking-HOWTO,第25页有一个部分"处理排队数据包"。本节将在更高层次上讨论,但回答您提出的所有问题。
从以下网址下载: http://www.netfilter.org/documentation/index.html#documentation-howto
您可以使用nf_reinject()让数据包得到进一步处理。
我不想重复本指南中的任何内容,但这应该足以开始了。