
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
)で発生します。
ただし、次に置き換えるlocalhost
と127.0.0.1
これは発生しません(localhost
値をそのアドレスに置き換えると重複のみが生成されます)。-n
にパラメータを渡そうとすると、皮肉なことに、iptables
insert()でオプションを使用できないというメッセージが表示されますIllegal option '-n' with this command
。しかし、strace
それが何に使用されているかを確認するために実行すると、明らかに開きますiptables
(しかし、IPアドレスではなく値/etc/resolv.conf
として使用するときのみ)。localhost
これは意図的に設計されていますか?
修正する:/etc/hosts
localhostおよびに含まれる内容は次のとおりです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/iptables
IPv6アドレスが解析されたり、代わりに呼び出されたりすると動作に影響するのはなぜですか/sbin/ip6tables
?両方に接続されていますxtables-multi
。ユーザーが望むバージョンは確認されていないようです。また、挿入された冗長ルールはIPバージョンによって変わりません。どちらもIPv4アドレスを使用して送信元と宛先を表します。