无论如何,Netfilter_queue只提供控制数据包

时间:2013-10-03 11:31:52

标签: networking tcp linux-kernel netfilter

我正在开展一个提供拦截能力的项目 网络连接源自Linux机器并进入Linux机器 在网络连接生命周期的各个阶段。

这些阶段包括以下内容:

  1. 就在出站网络连接之前 - 即发送第一个SYN数据包时。
  2. 在建立出站网络连接之后。
  3. 在连接终止后。
  4. 建立入站连接时 - 即从外部接收第一个SYN数据包时。
  5. 对于上述要求,我正在评估netfilter_queue得到 用户空间中的数据包然后决定判断是否 允许或丢弃数据包。

    我主要担心的是,一旦我完成了 netfilter_queue注册,我将开始获取所有数据包。但 我只对控制数据包感兴趣,不想要数据包 被发送到用户空间。

    所以,我的问题是 - 有没有现成的方法来告诉 netfilter_queue内核模块只发送控制包而不发送 数据包?此外,是否有可能得到通知 连接建立和终止?

    如果没有现成的方法来实现上述目标,那么它会成功吗? 修改libnfnetfilter_queue和netfilter_queue内核模块的意义 根据配置模式设置仅提供控制包, 即引入NFQNL_COPY_CONTROL_PACKET以仅复制控件 数据包到用户空间?

    很抱歉,如果我的问题看起来很幼稚,因为我仍在探索netfilter_queue。

    我也在netfilter邮件列表上发布了相同的问题,但到目前为止没有回复:(

    感谢您的帮助。

    拉​​夫

1 个答案:

答案 0 :(得分:1)

您需要制定iptables规则以将某些数据包添加到队列中。您可以制定一个只对所需数据包进行排队的规则。例如:

ip6tables -I INPUT -i eth0 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j QUEUE

此页面描述了--tcp-flags选项:http://www.netfilter.org/documentation/HOWTO/packet-filtering-HOWTO-7.html#ss7.3