iptables は、127.0.0.1 の代わりに localhost 名を使用するときに冗長ルールを挿入します。

iptables は、127.0.0.1 の代わりに localhost 名を使用するときに冗長ルールを挿入します。

INPUTチェーンにルールを挿入すると、2回コピーされます(つまり、元のルールと3つの同じコピーがあります)。与えられたコマンドは次のようになります。/sbin/iptables -w -I INPUT 20 -m comment -p tcp -s localhost -d localhost --comment 'TEST' -j LOG

この動作はCentOSシステム(Linux version 3.10.0-1127.8.2.el7.x86_64)、Ubuntuシステム(Linuxバージョン5.6.1-x86)、元のDebianシステム(Linux version 4.19.0-9-amd64)で発生します。

ただし、次に置き換えるlocalhost127.0.0.1これは発生しません(localhost値をそのアドレスに置き換えると重複のみが生成されます)。-nにパラメータを渡そうとすると、皮肉なことに、iptablesinsert()でオプションを使用できないというメッセージが表示されますIllegal option '-n' with this command。しかし、straceそれが何に使用されているかを確認するために実行すると、明らかに開きますiptables(しかし、IPアドレスではなく値/etc/resolv.confとして使用するときのみ)。localhost

これは意図的に設計されていますか?

修正する:/etc/hostslocalhostおよびに含まれる内容は次のとおりです127.0.0.1

127.0.0.1       localhost                                 
127.0.1.1       ubuntu.nodes.hosting.com       ubuntu    
...                                                          
::1     localhost ip6-localhost ip6-loopback              

アップデート2:@ 9000さんのコメントのおかげで、ホストファイルを見ました。/etc/hosts次の行を含み、他の参照はないファイルが与えられたらlocalhost...

127.0.0.1   localhost 
::1         localhost

localhost...2行目(名前をIPv6アドレスに関連付ける行::1)とこのコマンドをコメントアウトします。

/sbin/iptables -w -I INPUT 20 -m comment -p tcp -s localhost -d localhost --comment 'TEST' -j LOG

...単一のルールのみを生成します。

/sbin/iptablesIPv6アドレスが解析されたり、代わりに呼び出されたりすると動作に影響するのはなぜですか/sbin/ip6tables?両方に接続されていますxtables-multi。ユーザーが望むバージョンは確認されていないようです。また、挿入された冗長ルールはIPバージョンによって変わりません。どちらもIPv4アドレスを使用して送信元と宛先を表します。

ベストアンサー1

おすすめ記事