iptables -a -i 区别
在iptables中,-A和-I的区别主要体现在规则的插入位置和匹配优先级上:12
iptables -A:这个选项用于在规则链的末尾附加一条新的规则。当防火墙进行包匹配时,它会按照规则链中规则的顺序,从上到下依次检查每一条规则,直到找到与数据包匹配的规则并执行相应的操作。因此,使用-A添加的规则会位于现有规则之后,这意味着它只会影响那些没有在其他规则中匹配到的数据包。
iptables -I:这个选项用于将一条新的规则插入到规则链的特定位置。如果-I后面没有指定具体的规则链位置,那么它默认会将新规则插入到规则链的开头。这意味着使用-I添加的规则具有最高的匹配优先级,它会在其他所有规则之前被检查。
总结来说,-A和-I的主要区别在于它们将规则添加到规则链的不同位置,从而影响匹配的顺序和优先级。使用-A添加的规则会位于规则链的末尾,而使用-I添加的规则则会位于规则链的开头,具有最高的匹配优先级。
int FirewallController::setUidRule(ChildChain chain, int uid, FirewallRule rule) {
const char* op;
const char* target;
FirewallType firewallType = getFirewallType(chain);
if (firewallType == WHITELIST) {
target