关于nftables和规则处理顺序的问题

关于nftables和规则处理顺序的问题

我从阅读中了解到,一旦规则匹配,就不再评估进一步的规则。然而;我对以下示例的经验似乎表明情况并非如此。寻找对此的一些澄清。

table netdev retag {
    chain tagin {
            type filter hook ingress devices = $lan priority -149; policy accept;
            
            ip saddr 10.0.0.0/8 ip daddr 10.0.0.0/8 ip dscp set af21 counter;
            
            ip saddr 10.0.1.0/24 ip daddr 10.0.2.0/24 ip dscp set af31 counter;
    }
}

如果上述语句成立,则“nft list Ruleset”应显示针对第一条规则的命中数和针对第二条规则的 0 命中率,因为第一条规则始终在第二条规则之前匹配。然而;查看对两者的命中。我在这里错过了一些愚蠢的事情吗?

答案1

某些操作,例如accept, drop, reject阻止进一步的规则处理。

其他操作,例如counter, log执行任务并继续执行下一条规则。

在这个稍作修改的示例中,我添加了accept第一条规则,这将阻止进一步评估。

table netdev retag {
    chain tagin {
            type filter hook ingress devices = $lan priority -149; policy accept;
            
            ip saddr 10.0.0.0/8 ip daddr 10.0.0.0/8 ip dscp set af21 counter accept;
            
            ip saddr 10.0.1.0/24 ip daddr 10.0.2.0/24 ip dscp set af31 counter;
    }
}

相关内容