構成の状態が不明なホストがある場合、設定されているファイアウォールルールがiptables
またはnftables
のどちらで管理されているかを非対話的に判断する効果的な方法があるかどうかを知りたいと思います。
非常に単純に聞こえます。私はこれについてかなり考えましたが、スクリプトを作成するための意味のある答えが返ってきませんでした...
この問題の変形 最近Kubernetesで対処されました なので、そこで何が行われたかを確認する価値があります。 (バリアントは、iptables-legacy
またはiptables-nft
とそれらのIPv6バリアントを使用してホストのルールを駆動するかどうかです。)
Kubernetesで採用されているアプローチは それぞれの「保存」コマンドによって出力される行数を確認するため 、iptables-legacy-save
およびiptables-nft-save
(およびそれらのIPv6バリアント)です。前者が10行以上の出力を生成する場合、または後者よりも多くの出力を生成する場合は、iptables-legacy
を使用する必要があると見なされます。それ以外の場合は、そのiptables-nft
を使用する必要があります。
あなたの場合、決定木は次のようになります。
iptables
がインストールされていない場合は、nft
を使用します。nft
がインストールされていない場合は、iptables
を使用します。iptables-save
がルールを定義する出力を生成しない場合は、nft
を使用します。nft list tables
とnft list ruleset
が出力を生成しない場合は、iptables
を使用します。iptables-save
とnft list ...
の両方が出力を生成し、iptables
がiptables-nft
でない場合、自動化されたプロセスが決定できるかどうかはわかりません。