【问题标题】:Is there anyway for Netfilter_queue to provide only control packets无论如何,Netfilter_queue 是否只提供控制数据包
【发布时间】:2013-10-03 11:31:52
【问题描述】:

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

这些阶段包括:

  1. 就在建立出站网络连接之前 - 即发送第一个 SYN 数据包时。
  2. 就在出站网络连接建立之后。
  3. 就在连接终止之后。
  4. 建立入站连接时 - 即从外部接收到第一个 SYN 数据包时。

对于上述要求,我正在评估 netfilter_queue 以获得 用户空间中的数据包,然后决定是否要 允许或丢弃数据包。

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

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

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

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

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

感谢大家的帮助。

高拉夫

【问题讨论】:

    标签: networking tcp linux-kernel netfilter


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2014-01-24
      • 2015-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-26
      • 1970-01-01
      • 2020-06-21
      • 2018-08-05
      相关资源
      最近更新 更多