1

问题是:如何在分片之前使用 netfilter NFQUEUE将数据包排入用户空间?

根据Linux 内核源码nf_defrag_ipv4安装在NF_INET_PRE_ROUTING(在 iptables/nftables 中称为 PREROUTING)和NF_INET_LOCAL_OUT(OUTPUT)。

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

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),这是我自己libnetfilter_queue.so.1.

4

1 回答 1

0

我只是自己解决了。

我误解了 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

于 2015-07-29T06:16:53.910 回答