![为什么在 iptables 中将 ACCEPT 目标放在 DROP 之后?](https://linux22.com/image/1456777/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%9C%A8%20iptables%20%E4%B8%AD%E5%B0%86%20ACCEPT%20%E7%9B%AE%E6%A0%87%E6%94%BE%E5%9C%A8%20DROP%20%E4%B9%8B%E5%90%8E%EF%BC%9F.png)
我的 iptables -nvL 如下所示:
bash# iptables -nvL
Chain INPUT (policy ACCEPT 1031 packets, 81085 bytes)
pkts bytes target prot opt in out source destination
11111 951K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
0 0 DROP tcp -- ppp0 * 0.0.0.0/0 0.0.0.0/0 tcp dpts:135:139
0 0 DROP udp -- ppp0 * 0.0.0.0/0 0.0.0.0/0 udp dpts:135:139
0 0 DROP all -- ppp0 * 0.0.0.0 0.0.0.0/0
0 0 DROP udp -- ppp0 * 0.0.0.0/0 0.0.0.0/0 udp dpts:67:68
0 0 DROP all -- ppp0 * 255.255.255.255 0.0.0.0/0
0 0 DROP tcp -- !eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
0 0 ACCEPT all -- ppp0 * 10.0.0.0/8 0.0.0.0/0 state NEW,ESTABLISHED
为什么在 ACCEPT all ppp0 [ip] 之前会说 DROP all ppp0?
INPUT 链不是在到达第二条规则 (即 stop att DROP all ppp0) 之前停止吗?
会不会有人想保留规则但只是暂时阻止?还是即使匹配成功,规则匹配仍会继续通过链?据我了解,当满足条件时,链遍历会直接停止,还是我误解了这一点?
答案1
事实证明 0.0.0.0 表示“无效的 IP 地址”(注意/0丢失!)
而不是‘每个 IP 地址’,因此 ACCEPT 规则实际上可能会匹配!
0 0 DROP all -- ppp0 * 0.0.0.0 0.0.0.0/0
答案2
据我所知,您说得对 - 最后一条规则永远不会被满足。您可以在运行一段时间后再执行一次 iptables -vnL 并查看规则捕获的字节和数据包来验证这一点 - 我猜它们将始终是 0 和 0。