nft - 要素を削除した後、コレクションに再度追加することはできません(OpenVZコンテナから)。

nft - 要素を削除した後、コレクションに再度追加することはできません(OpenVZコンテナから)。

Nftablesについて理解できない奇妙な問題があります。

私の状態につながった一連のコマンドは次のとおりです。

~# nft add table inet firewall
~# nft add set inet firewall blacklist4 \{ typeof ip saddr \; flags interval \; auto-merge \; \}
~# nft add element inet firewall blacklist4 \{ 192.0.2.0/25 \}
~# nft add element inet firewall blacklist4 \{ 192.0.2.128/25 \}
~# nft -a list ruleset
table inet firewall { # handle 0
        set blacklist4 { # handle 0
                typeof ip saddr
                flags interval
                auto-merge
                elements = { 192.0.2.0/25, 192.0.2.128/25 }
        }
}

今まではそんなに良くなった。/24ネットワークの2つの部分を1つのレコードに自動的にマージしないことに注意してください。これは私が予想したものです。そして私はこれを初めて気づいた人ではないことに気づきました。https://www.spinics.net/lists/netfilter/msg58958.html

この状態では、「結合」または「部分」範囲要素を追加できません。

~# nft add element inet firewall blacklist4 \{ 192.0.2.128/26 \}
Error: interval overlaps with an existing one
add element inet firewall blacklist4 { 192.0.2.128/26 }
                                       ^^^^^^^^^^^^^^
Error: Could not process rule: File exists
add element inet firewall blacklist4 { 192.0.2.128/26 }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~# nft add element inet firewall blacklist4 \{ 192.0.2.0/24 \}
Error: interval overlaps with an existing one
add element inet firewall blacklist4 { 192.0.2.0/24 }
                                       ^^^^^^^^^^^^
Error: Could not process rule: File exists
add element inet firewall blacklist4 { 192.0.2.0/24 }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

したがって、これら2つの要素を削除し、次の点を確認してください。

~# nft delete element inet firewall blacklist4 \{ 192.0.2.0/24 \}
Error: interval not found in set
delete element inet firewall blacklist4 { 192.0.2.0/24 }
                                          ^^^^^^^^^^^^
Error: Could not process rule: No such file or directory
delete element inet firewall blacklist4 { 192.0.2.0/24 }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~# nft delete element inet firewall blacklist4 \{ 192.0.2.0/25 \}
~# nft delete element inet firewall blacklist4 \{ 192.0.2.128/25 \}
~# nft -a list ruleset
table inet firewall { # handle 0
        set blacklist4 { # handle 0
                typeof ip saddr
                flags interval
                auto-merge
        }
}

前述のように、「ファイルが存在します」という理由でマージされたファイルを最初に削除しようとしました。ただし、削除するときは存在せず、追加するときにのみ存在することがわかりました。最後のコマンドはコレクションが空であることを示しました。それでは何かを追加してみましょう。

~# nft add element inet firewall blacklist4 \{ 192.0.2.0/24 \}
Error: Could not process rule: File exists
add element inet firewall blacklist4 { 192.0.2.0/24 }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~# nft add element inet firewall blacklist4 \{ 192.0.2.0/25 \}
Error: Could not process rule: File exists
add element inet firewall blacklist4 { 192.0.2.0/25 }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~# nft add element inet firewall blacklist4 \{ 192.0.2.0/26 \}
Error: Could not process rule: File exists
add element inet firewall blacklist4 { 192.0.2.0/26 }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~# nft -a list ruleset
table inet firewall { # handle 0
        set blacklist4 { # handle 0
                typeof ip saddr
                flags interval
                auto-merge
        }
}

同じスーパーブロックまたは部分ブロックを追加することはできません。 「ファイルが存在します」というメッセージが表示されます。なぜ?どこ? list コマンドは、コレクションが空であると言い続けます。

今どうやって追加しますか?

この設定はデバイスを洗浄することでリセットできます。ただし、このテストセットは空ですが、実際には他のデータがある可能性があります。セットなしで作成された場合、削除はauto-merge期待flags intervalどおりに機能しますが、単一のIPアドレスに対してのみ機能します。

これはOpenVZシステム3.10.0-1160.42.2.vz7.184.10 #1 SMP Fri Dec 31 04:05:16 MSK 2021 x86_64 GNU/Linuxに接続できますか?

nftバージョンは、nftables v0.9.8 (E.D.S.)システムが新しく更新されたDebian Bullseyeです。

ベストアンサー1

おすすめ記事