nftablesチェーンから特定の要素を削除する方法は?

nftablesチェーンから特定の要素を削除する方法は?

現在のシステム:

  • ディストリビューション:Ubuntu 20.04
  • カーネル: 5.4.0-124-一般
  • nft: nftables v0.9.3(Topsy)

私は初めてnftablesに触れ、nftablesを学んでいます。これは現在のnftルールセットです。

$sudo nft list ruleset                                                                                                                                                                                           taxmd-dh016d-02: Wed Sep 21 12:09:08 2022

table inet filter {
        chain input {
                type filter hook input priority filter; policy accept;
        }

        chain forward {
                type filter hook forward priority filter; policy accept;
        }

        chain output {
                type filter hook output priority filter; policy accept;
                ip daddr 192.168.0.1 drop
        }
}

ip daddr 192.168.0.1 drop出力チェーンから削除したいです。私は以下を試しました:

sudo nft del rule inet filter output ip daddr 192.168.0.1 drop
sudo nft delete rule inet filter output ip daddr
sudo nft 'delete element ip daddr 192.168.0.1 drop'
sudo nft 'delete element ip'
sudo nft delete rule filter output ip daddr 192.168.0.1 drop

しかし、何も動作しません。次のエラーが発生し続けます。

Error: syntax error, unexpected inet
delete inet filter chain output ip daddr 192.168.0.1 drop
       ^^^^

なぜ特定の要素を削除できないのですか?私はこれが簡単だと思いますが、何か落ちました。

答え1

これウィキペディアあなたが試していることはまだ実装されていないと言います。ルールを削除するには、ハンドルをインポートする必要があります。。例は次のとおりです。

$ sudo nft -a list table inet filter
table inet filter {
      ...
      chain output {
            type filter hook output priority 0;
            ip daddr 192.168.1.1 counter packets 1 bytes 84 # handle 5
      }
}

-a割り当てられたハンドル「5」をコメントとして表示します。

$ sudo nft delete rule filter output handle 5

関連情報