無料のTCPポートを必要とするユーティリティがあります。既存の構成ファイルを変更したくないため、nftablesにルールを動的に追加できる必要があります。
入力ルールを含む filter という inet テーブルがあります。
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
# existing rules
}
}
ルールを追加するのは簡単です。たとえば、次のようになります。
nft add rule inet filter input tcp dport { 4848 } ct state new,established counter accept
ここでの質問は、これをすばらしい方法で行う方法です。
- 同じコマンドを2回、2回実行するとまったく同じルールが作成されました。
nft delete rule inet filter input handle ##
変更されるハンドル番号が必要で、それを使用してnft -n -a list ruleset | grep ...
ハンドル番号を解決するのは正しいとは思いません。- 新しいチェーンを追加し
nft -f
て毎回更新することも、上記のように機能しません。ここ:
これはいいえチェーンは、拒否(または削除)ルールを持つチェーンよりも(許可ルールの形で)より広範なアクセスを提供できます。
答え1
コレクションを使用すると、管理が簡単になります。
table inet filter {
set myport_tcp {
type inet_service
elements = { 4848 }
}
chain input {
type filter hook input priority 0; policy drop;
# existing rules
tcp dport @myport_tcp ct state new,established counter accept
# more existing rules
}
}
次の方法でコレクションを消去できます。
nft flush set inet filter myport_tcp
次の方法でコレクションに新しいポートを追加できます。
nft add element inet filter myport_tcp elements = { 4949 }
または、次の方法でコレクションに複数のポートを追加します。
nft add element inet filter myport_tcp elements = { 14949, 9494 }