私のVPSには2つのインターフェースがあります:eth0
とeth0:0
。eth0:0
iptablesを使用してポート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 addr
eth0:0
eth0
inet
エイリアスとその親エントリは物理層を共有するため、多くの設定とフィールドを共有します。カーネルはそれらを完全に独立したインターフェースとして扱いません。まず、トラフィックが表示されます。親エイリアスではないインターフェイスです。エイリアスにはパケット/バイトカウンタもないことに気付くでしょう。
エイリアスインターフェイスからトラフィック、ファイアウォールなどをスニッフィングする必要がある場合は、その親インターフェイスを使用する必要があります。エイリアスとその親の唯一の違いはIPv4設定であるため、エイリアスのトラフィックを一致させる唯一の方法は、そのIP設定を使用することです。を使用すると、iptables
回答の説明で説明したように、エイリアスのIPv4アドレスを一致させることができます。