iptablesはホスト名をどのように処理しますか?

iptablesはホスト名をどのように処理しますか?

IPブロックが私のサーバーのポート22にアクセスするのを防ぐためにiptablesにルールを書くPythonスクリプトがあります。

これらのルールを作成した後、ブロックの1つのホスト名は「localhost / 22」です。 iptablesはこれを127.0.0.1として扱いますか、それともまだIPアドレスを認識しますか?このため、私のサーバーがロックされたくありません。

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       all  --  *****/14  anywhere            
DROP       all  --  localhost/22         anywhere            
DROP       all  --  ****/20      anywhere            

また、簡単な質問:iptablesが各ルールのポートを表示しないのはなぜですか? dportとして22を指定しました。

答え1

iptablesNetfilter を構成するツールです。 Netfilter はホスト名を処理しません。

ルールを変更するとiptablesホスト名がIPとして解決され、ルールを一覧表示するとiptablesIPリバースルックアップが実行されます(この-nオプションを使用しない場合)。

localhost が 127.0.0.1 以降の別の項目で確認された場合、または他の項目の逆照会結果である場合、非常に奇妙な設定を持つことになり驚くことがあります。

答え2

ループバックインターフェイスで許可されるトラフィックを決定するルールがないのはなぜですか?

iptables -I INPUT 1 -i lo -m comment --comment "ALLOW loopback interface" -j ACCEPT

「localhost」のIPを見ることができます。

iptables -L -v -n

関連情報