如何在 iptables 的输出中捕获“DROP”数据包?

如何在 iptables 的输出中捕获“DROP”数据包?

有一个相当复杂的OUTPUT处理iptables,如何捕获/显示(至少类似于如何tcpdump捕获它们)那些应该通过接口离开,但却DROPiptables OUTPUT/FORWARD链处理的各个地方被 ped 的数据包?

(由于这些数据包没有出现在物理接口上,所以可能无法使用tcpdump,对吗?)

(我能想到的最好的办法就是在所有 iptables 中将“DROP”目标更改为将所有此类要丢弃的数据包转发到虚拟/虚假接口的目标,然后在此接口上运行 tcpdump - 但这似乎需要大量工作。而且我仍然不清楚如何仅使此类数据包进入此虚假接口 - “route”将导致此类 IP 的所有数据包都进入虚假接口,但我只需要要丢弃的数据DROP包进入那里)

更新尴尬的几乎相同的问题已经在另一个论坛上被问过,并在https://unix.stackexchange.com/questions/174107/record-contents-of-packets-dropped-in-iptables /尴尬的;我唯一能要求的改进就是不要把日志规则放在NFLOG每条可能的DROP规则之前 / 之前。有人愿意吗?

答案1

一般来说,记录每个丢弃的数据包是一个好主意,这样你就可以轻松地调试哪怕是暂时的问题。

我通常会创建一个将两者结合起来的新“目标”:

iptables -N drop iptables -j NFLOG iptables -j DROP

然后用作 的-j drop替代品DROP

相关内容