nftables 中表/链的顺序是如何排列的?

Xia*_*ian 2 linux networking firewall

例如,我有两个表:

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
  }
}
Run Code Online (Sandbox Code Playgroud)

首先filter执行的是,所以我所有的转发数据包都被丢弃了,这不是我想要的。如何设置最后执行的表/链以使其作为默认选项工作?

小智 6

Nftables 使用底层的 netfilter 框架,它有 6 个钩子点位于 linux 内核网络堆栈的不同位置。

当一个或多个规则添加到同一个钩子点时,netfilter 框架会根据优先级类型对规则进行优先级排序

例如,在您添加链的情况下,您可以为每个链使用不同的优先级类型。假设您想为以下定义forward chain的规则赋予更高的优先级

filter table不是forward chainfilter2 table

.

nft add table ip filter2

nft add chain ip filter2 forward {type filter hook forward priority 0 \;}

我们给予更高的优先级forward chainfilter小于0的表指定优先权。

nft add table inet filter

nft add chain inet filter '{type filter hook forward priority -1 }'

这里较高的优先级值意味着较低的优先级,反之亦然。

但是在使用不同的优先级类型时要小心,因为它有时可能会导致意外的数据包行为。有关更多信息,请阅读

PS:负优先级的语法略有不同