linux – iptables -A和-I选项之间的区别

前端之家收集整理的这篇文章主要介绍了linux – iptables -A和-I选项之间的区别前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在尝试(几个小时)配置iptables以允许DNS查询到我的DNS服务器,并发现我的iptables由于我一直在使用的规则添加选项而保持阻止访问.大多数论坛建议的规则类似于以下内容
iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT

但是,就我而言,我必须将规则更改为插入类型才能使其工作:

iptables -I INPUT -p udp -m udp --dport 53 -j ACCEPT

我知道一个规则是附加插入,另一个规则是插入,以及两个术语的含义,但有人可以解释两者之间的区别以及何时使用哪个选项?我查了一下Ubuntu的iptables如何,但没有看到太多的信息.

解决方法

iptables -A在规则集的末尾附加规则,而iptables -I将规则插入规则集中的特定位置,如您所指出的那样.

查看iptables的man条目显示

-I,–insert chain [rulenum] rule-specification Insert one or more rules in the selected chain as the given rule number. So,if the rule
number is 1,the rule or rules are inserted at the head of the chain.
This is also the default if no rule number is specified.

这就是为什么 – 我为你工作而-A不工作的原因.如果您不提供任何气压,则会在第一个位置插入您的规则.这意味着在你的情况下,你的规则集中的某个地方必须有一个禁止DNS数据包的规则(可能是一般禁止UDP的规则?)因为iptables处理从第一个到最后一个的所有规则,应用第一个匹配并停止.
顺便说一下,这也是为什么你应该把与大多数数据包匹配的规则放在最上面的原因:如果你把最常用的规则放在和,那么根据每个可能消耗大量资源的规则来检查数据包.

并且用于:当你想在最后附加规则或者你的规则在哪里无关紧要时,你可以保存使用-A.如果你想要你的规则在特定的位置,使用-I像这样:例如:iptables -I INPUT 6 -p tcp -j DROP(这将为所有tcp数据包添加一个DROP语句,该数据包发送到主机本身的位置6 INPUT规则集.)

猜你在找的Linux相关文章