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です。