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

时间:2016-07-02 16:23:42

标签: 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
  }
}

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

1 个答案:

答案 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

PS:有轻微different syntax for negative priority