【发布时间】:2015-07-06 03:58:42
【问题描述】:
我在 C 中使用libnetfilter_queue 来捕获数据包。我正在设置一个 iptable 规则来排队传入的数据包,这些数据包稍后将由用户空间实现处理,如下所示:iptables -A INPUT -j NFQUEUE --queue-num 0。我使用nfqnl_test 示例作为实现捕获的框架。一切都按预期工作。但是,我注意到不可能在 ip 片段级别检查队列。也就是说,如果一个数据包是以片段的形式出现的,它首先会在放入队列之前重新组装。但我想使用片段。那么有没有办法强制执行这种行为呢?我想要的是一个队列,我可以在其中观察原始传入数据包(碎片和未碎片),以便我能够相应地对它们采取行动。
我读到重组确实发生过。另一方面,使用 iptables 时,-f 标志可用,因此我正在寻找一个“碎片粒度”。我也试过调整 iptable 规则(例如iptables -t raw -D PREROUTING -i eth0 -j NFQUEUE --queue-num 0),但结果还是一样。我只能观察已经重组的数据包,我肯定知道这些数据包以碎片形式到达。
非常感谢任何帮助。
【问题讨论】:
标签: c linux iptables netfilter ip-fragmentation