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


9

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

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

変更eth0:0した場合、eth0正しく動作します。何が問題ですか?


4
私の質問はこのように解決しました:私のインターフェイスは仮想であったため、iptablesはそれにアクセスできませんでした。そのため、インターフェイスの名前ではなく、インターフェイスのIPによってインターフェイスをブロックしました。コマンドは次のとおりです。iptables -A INPUT -p tcp --dport 80 -d {ETH0:0のIP} -j REJECT
sinoohe

回答:


6

短編小説:あなたがそれをした方法は正しいです(質問へのコメントに従って)。

長い話:Linuxでは、呼び出されるネットワーク「デバイス」foo:barは、「foo」インターフェースに複数のネットワーク設定を割り当てる必要がある場合に使用される「foo」のエイリアスです。たとえば、同じワイヤー上の複数のサブネットで応答させるためです。

これはこれを行うのが難しい方法であり、起動に一貫性がありません。IPv6の場合、インターフェースeth0に割り当てられたすべてのアドレスがeth0エントリーの下に一緒にリストされます。これを行う(ip addrコマンドを介して)より近代的な方法があります。

:名前にコロンが含まれていて、コロンの左側の部分が現存するインターフェース名であり、使用する場合のインターフェーススタンザifconfigが非常に短いため、エイリアスインターフェースを見つけることができます。またHWaddr、「親」インターフェースのものと同一である必要があります。また、それらはにリストされません/proc/net/dev。あなたが言っていた場合はip addreth0:0インタフェースの2番目のアドレスとして表示されるでしょうeth0。(で始まるインデントされた行を探しますinet

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

エイリアスインターフェイスのトラフィックやファイアウォールなどをスニッフィングする必要がある場合は、代わりにその親を使用する必要があります。エイリアスの親との唯一の違いはIPv4設定であるため、エイリアス上のトラフィックを照合する唯一の方法は、それらのIP設定を使用することです。を使用iptablesすると、回答のコメントで行ったように、エイリアスのIPv4アドレスを照合します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.