例如,我有两个表:
table inet filter2 {
chain forward {
type filter hook forward priority 0; policy accept;
ct state established,related accept
iifname $wireif oifname $wirelessif accept
}
}
table inet filter {
chain forward {
type filter hook forward priority 0; policy accept;
drop
}
}
首先执行filter
,因此我的所有转发数据包都被丢弃,这不是我想要的。如何设置最终要执行的表/链以使其作为默认选项?
答案 0 :(得分:1)
Nftables使用底层的netfilter框架,has 6 hooks points位于linux内核网络堆栈的不同位置。
当在同一个挂钩点添加一个或多个规则时,netfilter框架优先于priority type的规则。
例如,在您添加链的情况下,您可以为每个链使用不同的优先级类型。 假设您希望优先考虑
的规则forward chain
filter table
而不是forward chain
filter2 table
。
nft add table ip filter2
nft add chain ip filter2 forward {type filter hook forward priority 0 \;}
现在优先考虑forward chain
filter
表优先级小于0的nft add table inet filter
。
nft add chain inet filter '{type filter hook forward priority -1 }'
{{1}}
此处较高优先级值表示较低优先级,反之亦然。
但是在使用不同的优先级类型时要小心,因为它有时会导致数据包的意外行为。有关详细信息,请参阅this