问题是:如何在分片之前使用 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
.