看看这组命令:
iptables -F
iptables -P OUTPUT DR0P
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -A FORWARD -d 195.83.164.0/23 -p udp --dport 53 -i eth0 -j ACCEPT
iptables -A FORWARD -s 195.83.164.0/23 -p udp --sport 53 -j ACCEPT
iptables -A FORWARD -p tcp --sport 22 -j ACCEPT
iptables -A FORWARD -p tcp --dport 22 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE
iptables -A INPUT -i eth0 -j REJECT
告诉我以下几点是否正确:
第 N°1 行刷新所有表(MANGLE、NAT、FILTER、...)的所有链(FORWARD、INPUT、OUTPUT...)
第 N°2、N°3、N°4 行将默认表的 (FILTER) OUTPUT/INPUT/FORWARD 链的默认操作设置为 DROP
首先,任何数据包都会被 MANGLE 的 PREROUTING 链分析:没有任何指示,所以我们假设默认动作是 ACCEPT
然后会被NAT的PREROUTING链解析:同
然后,读取数据包的目的地址............:
如果数据包的目的地不是路由器(“NDTR”),那么...:
MANGLE 的 FORWARD 链分析 NDTR 数据包:没有任何指示,因此我们假设默认操作是 ACCEPT
然后,NDTR 数据包由 FILTER 的 FORWARD 链分析:N°5、N°6、N°7、N°8 和 N°4 行告诉 NDTR 数据包只有在其目的地是 195.83.164.0 时才会被接受/23 AND 目标端口是 53 AND 目标接口是 eth0 ] 或者如果 [ 它的源是 195.83.164.0/23 AND 目标端口是 53 ] 或者如果 [ 它是一个 SSH 数据包 ] ELSE,它将被丢弃。
如果 NDTR 数据包被丢弃,那么……嗯……它被丢弃了,这就是这个“算法”的结束。否则,如果是ACCEPTED,就会被MANGLE的POSTROUTING链分析:什么都不指明,我们假设默认动作是ACCEPT:那么,它会被NAT的POSTROUTING链分析:什么都不指明,再次默认接受。然后,数据包已到达其目的地。
否则,如果数据包实际发往此路由器(“DR”)......:
MANGLE 的 INPUT 链将分析 DR 数据包:没有任何指示,我们假设 ACCEPT
然后,DR 数据包将由 FILTER 的 INPUT 链分析:如果其目标接口是 eth0,它将被拒绝,否则将被丢弃。
在这两种情况下,它都是结束。
仅供参考:数据包将由 MANGLE 的 OUTPUT 链分析,然后由 NAT 的 OUTPUT 链分析,然后由 FILTER 的 OUTPUT 链分析,然后由 MANGLE 的 POSTROUTING 链分析,然后由 NAT 的 POSTROUTING 链分析,然后将其返回给发送它的主机。
好吧,我是否正确理解了 Netfilter/iptables ?