web-dev-qa-db-ja.com

iptablesまたはnftablesが使用されているかどうかを確認します

構成の状態が不明なホストがある場合、設定されているファイアウォールルールがiptablesまたはnftablesのどちらで管理されているかを非対話的に判断する効果的な方法があるかどうかを知りたいと思います。

非常に単純に聞こえます。私はこれについてかなり考えましたが、スクリプトを作成するための意味のある答えが返ってきませんでした...

1
Pedro

この問題の変形 最近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 tablesnft list rulesetが出力を生成しない場合は、iptablesを使用します。

iptables-savenft list ...の両方が出力を生成し、iptablesiptables-nftでない場合、自動化されたプロセスが決定できるかどうかはわかりません。

2
Stephen Kitt