【问题标题】:Linux Netfilter: Enqueue packets to the user-space before defragmentLinux Netfilter:在碎片整理之前将数据包排队到用户空间
【发布时间】:2015-07-29 14:16:53
【问题描述】:

问题是:如何使用 netfilter NFQUEUE before defragment 将数据包排入用户空间?

根据Linux kernel sourcenf_defrag_ipv4安装在NF_INET_PRE_ROUTING(在iptables/nftables中称为PREROUTING)和NF_INET_LOCAL_OUT(OUTPUT)。

所以我为NF_INET_LOCAL_OUT 尝试了以下反碎片整理 nftables 过滤器(原始:https://stackoverflow.com/a/30638753/5167443),但我仍然收到de碎片数据包。

sudo nft add table filter
sudo nft add chain filter predefrag { type filter hook output priority -- -450 \; }
sudo nft add filter predefrag skuid nfqhooked counter queue num 42

在上述过滤器中,-450 代表优先于NF_IP_PRI_CONNTRACK_DEFRAG=-400。即,过滤器应该在nf_defrag_ipv4之前工作。

我正在使用 Linux 3.19 (Ubuntu 15.04) 和 this my own bindinglibnetfilter_queue.so.1

【问题讨论】:

    标签: linux-kernel iptables netfilter ip-fragmentation


    【解决方案1】:

    我自己解决了。

    我误解了 netfilter 处理实际上由“TCP Auto Corking”处理的 TCP 重组。

    现在我可以通过将0 写入/proc/sys/net/ipv4/tcp_autocorking 来获取碎片化(即非阻塞)数据包。

    http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f54b311142a92ea2e42598e347b84e1655caf8e3

    【讨论】:

      猜你喜欢
      • 2014-04-09
      • 1970-01-01
      • 1970-01-01
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-06
      • 2014-09-11
      相关资源
      最近更新 更多