私のiptablesルールが機能しないのはなぜですか?

私のiptablesルールが機能しないのはなぜですか?

私のVPSには2つのインターフェースがあります:eth0eth0:0eth0:0iptablesを使用してポート80からの着信パケットをブロックしたいと思います。私はこれを試しましたが、うまくいきません。

iptables -A INPUT -i "eth0:0" -p tcp --destination-port 80 -j DROP

変更するとeth0:0うまくeth0いきます。問題は何ですか?

答え1

短い話:あなたは正しくしています(質問に対するあなたの意見によると)。

簡単に言えば、Linuxでfoo:bar同じ行の複数のサブネットに応答するなど、「foo」インターフェースに複数のネットワーク設定を割り当てる必要がある場合、「foo」というネットワーク「デバイス」はエイリアスです。

これは曖昧なアプローチであり、開始と一致しません。 IPv6の場合、インターフェイスeth0に割り当てられているすべてのアドレスは、eth0エントリの下に一緒に一覧表示されます。これを行うより現代的な方法があります(コマンドを通じてip addr)。

エイリアスインターフェイスは名前にコロンがあり、コロンの:左側は既存のインターフェイス名であり、エイリアスインターフェイスを検索するときはインターフェイスセクションがifconfig非常に短いため検索できます。HWaddrまた、「親」インターフェースと同じでなければなりません。また、に記載されていません。つまり、/proc/net/devインターフェイスの2番目のアドレスとして表示されます。 (で始まるインデントされた行を探してください)ip addreth0:0eth0inet

エイリアスとその親エントリは物理層を共有するため、多くの設定とフィールドを共有します。カーネルはそれらを完全に独立したインターフェースとして扱いません。まず、トラフィックが表示されます。エイリアスではないインターフェイスです。エイリアスにはパケット/バイトカウンタもないことに気付くでしょう。

エイリアスインターフェイスからトラフィック、ファイアウォールなどをスニッフィングする必要がある場合は、その親インターフェイスを使用する必要があります。エイリアスとその親の唯一の違いはIPv4設定であるため、エイリアスのトラフィックを一致させる唯一の方法は、そのIP設定を使用することです。を使用すると、iptables回答の説明で説明したように、エイリアスのIPv4アドレスを一致させることができます。

関連情報