为什么通过 mangle PREROUTING 匹配的数据包却没有通过过滤器 INPUT 或过滤器 FORWARD 匹配?
从这个图表来看http://www.64-bit.de/dokumentationen/netzwerk/e/002/DE-IPTABLES-HOWTO-3.html,第 3.5 点,我认为每个数据包至少应该通过这两种方式之一。数据包也确实出现在 Wireshark 中。
我的三行 iptables 是:
iptables -t mangle -A PREROUTING -s 192.168.178.222 -d 192.168.178.28 -j LOG --log-prefix "iptables: "
iptables -t filter -A FORWARD -s 192.168.178.222 -d 192.168.178.28 -j LOG --log-prefix "iptables: "
iptables -t filter -A INPUT -s 192.168.178.222 -d 192.168.178.28 -j LOG --log-prefix "iptables: "
日志仅填充了第一条活动的规则,其他两条规则显然没有任何作用。
编辑:有趣的是,当使用 mangle 的 FORWARD 和 INPUT 时,它会按预期工作。过滤表有什么特殊之处阻止它工作吗?
此外,使用 mangle 时,它们会同时通过 FORWARD 和 INPUT,这让我更加困惑。
编辑:输出iptables -L -v -n
:
Chain INPUT (policy ACCEPT 5 packets, 280 bytes)
pkts bytes target prot opt in out source destination
0 0 LOG all -- * * 192.168.178.222 192.168.178.28 LOG flags 0 level 4 prefix "iptables: "
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 LOG all -- * * 192.168.178.222 192.168.178.28 LOG flags 0 level 4 prefix "iptables: "
Chain OUTPUT (policy ACCEPT 2 packets, 100 bytes)
pkts bytes target prot opt in out source destination
只有前两个规则处于活动状态(这种方式不起作用,但应该可以工作)。
另外要注意的是,显示的两个 IP 都不是运行 iptables 的计算机,尽管如此,由于中间人攻击,数据包还是会通过它。