有一个相当复杂的OUTPUT
处理iptables
,如何捕获/显示(至少类似于如何tcpdump
捕获它们)那些应该通过接口离开,但却DROP
在iptables
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
。