为什么在 iptables 中将 ACCEPT 目标放在 DROP 之后?

为什么在 iptables 中将 ACCEPT 目标放在 DROP 之后?

我的 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。

相关内容