为什么 iptables 不丢弃数据包?

为什么 iptables 不丢弃数据包?

我们的 iptables 配置文件 /etc/sysconfig/iptables 中有以下规则

-A INPUT -s 84.23.99.97 -j DROP

当我执行 iptables --list 时,我得到以下内容

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
DROP       all  --  84.23.99.97          anywhere


Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

但是,如果我执行 tcpdump,我仍然可以看到来自该 ip 的所有这些流量,为什么?

tcpdump -ttttn tcp port 1234 | grep 84.23.99.97
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
2010-10-21 23:49:33.828011 IP 84.23.99.97.9061 > myip: Flags [S], seq 3522466008, win 65535, options [mss 1460,sackOK,eol], length 0
2010-10-21 23:49:33.832182 IP 84.23.99.97.64804 > myip: Flags [S], seq 1088176500, win 65535, options [mss 1460,sackOK,eol], length 0
....

答案1

tcpdump在进入 iptables 之前查看入站流量. 在上述示例中,这解释了为什么您能看到入站 SYN,但看不到来自您机器的 SYN/ACK。

答案2

您需要保存规则。也许您保存了,但没有提到?如果没有,请尝试以下操作:% sudo /sbin/service iptables save

这将导出当前使用的规则并启动防火墙。无论 /etc/sysconfig/iptables 中的内容是什么,它都会告诉您防火墙实际正在使用什么。

相关内容