是否命令重要吗?例如:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
如果是这样,那么按时间顺序阅读时,forward
在这个规则链中排在第二位是否正确,还是这相当主观?iptables
答案1
命令的顺序iptables
不会影响预定义链的处理方式。默认链INPUT
、FORWARD
和OUTPUT
不会按顺序处理,通过INPUT
链的数据包不会击中FORWARD
和OUTPUT
链,通过的数据包FORWARD
不会进入OUTPUT
和INPUT
链等。请参阅iptables 教程。
答案2
您在不同的链中打乱了一条链中规则的顺序,这很重要。对于您的示例,这无关紧要,因为和链INPUT
中的规则针对完全不同的数据包进行处理。FORWARD
OUTPUT
但是如果你将规则添加到同一个链中,那么顺序就变得绝对重要:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j REJECT
这样,第一个规则 ACCEPT 将被首先添加。一旦数据包与该规则匹配,它就会被 ACCEPT 并离开链。即,REJECT 规则在上述示例中永远不会起作用,因为数据包将始终首先匹配 ACCEPT 规则。