私の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
正しく動作します。何が問題ですか?
私の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
正しく動作します。何が問題ですか?
回答:
短編小説:あなたがそれをした方法は正しいです(質問へのコメントに従って)。
長い話:Linuxでは、呼び出されるネットワーク「デバイス」foo:bar
は、「foo」インターフェースに複数のネットワーク設定を割り当てる必要がある場合に使用される「foo」のエイリアスです。たとえば、同じワイヤー上の複数のサブネットで応答させるためです。
これはこれを行うのが難しい方法であり、起動に一貫性がありません。IPv6の場合、インターフェースeth0に割り当てられたすべてのアドレスがeth0エントリーの下に一緒にリストされます。これを行う(ip addr
コマンドを介して)より近代的な方法があります。
:
名前にコロンが含まれていて、コロンの左側の部分が現存するインターフェース名であり、使用する場合のインターフェーススタンザifconfig
が非常に短いため、エイリアスインターフェースを見つけることができます。またHWaddr
、「親」インターフェースのものと同一である必要があります。また、それらはにリストされません/proc/net/dev
。あなたが言っていた場合はip addr
、eth0:0
インタフェースの2番目のアドレスとして表示されるでしょうeth0
。(で始まるインデントされた行を探しますinet
)
エイリアスとその親は、物理層を共有しているため、多くの設定とフィールドを共有しています。カーネルはそれらを完全に別個のインターフェースとして扱いません。1つは、トラフィックがエイリアスではなく親インターフェイスに表示されることです。エイリアスにパケット/バイトカウンターさえないことに気づいたかもしれません!
エイリアスインターフェイスのトラフィックやファイアウォールなどをスニッフィングする必要がある場合は、代わりにその親を使用する必要があります。エイリアスの親との唯一の違いはIPv4設定であるため、エイリアス上のトラフィックを照合する唯一の方法は、それらのIP設定を使用することです。を使用iptables
すると、回答のコメントで行ったように、エイリアスのIPv4アドレスを照合します。