从netfilter接受用户空间中的数据包

时间:2012-05-03 22:05:03

标签: firewall packet netfilter

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

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

但我似乎无法找到任何示例,并且有时间限制,所以我不能只通过wireshark代码进行筛选。我正在寻找例子,甚至是一个开始的地方。我可以使用套接字吗?或者是否有一个内核数据结构可以用来从堆栈中弹出数据包,一旦完成,我怎样才能将数据包传回netfilter?

1 个答案:

答案 0 :(得分:3)

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

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

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

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