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