Warum funktioniert meine iptables-Regel nicht?

9

Ich habe zwei Schnittstellen auf meinem VPS: eth0und eth0:0. Ich möchte eingehende Pakete an Port 80 bei eth0:0Verwendung von iptables blockieren . Ich habe es versucht, aber es funktioniert nicht:

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

Wenn ich dazu wechsle eth0:0, eth0funktioniert es richtig. Worin besteht das Problem?

Sinoohe
quelle
4
Ich habe meine Frage folgendermaßen gelöst: Meine Schnittstelle war virtuell, sodass iptables nicht darauf zugreifen konnte. Daher habe ich die Schnittstelle durch die IP-Adresse meiner Schnittstelle blockiert, nicht durch den Namen der Schnittstelle. Mein Befehl lautet: iptables -A INPUT -p tcp --dport 80 -d {ETH0: 0's IP} -j REJECT
sinoohe

Antworten:

6

Die Kurzgeschichte: Die Art und Weise, wie Sie das getan haben, ist richtig (gemäß Ihrem Kommentar zur Frage).

Die lange Geschichte: Unter Linux ist ein Netzwerk-Gerät namens foo:bar"foo" ein Alias ​​von "foo", der verwendet wird, wenn der "foo" -Schnittstelle mehrere Netzwerkeinstellungen zugewiesen werden müssen, z. B. um sie auf mehrere Subnetze auf derselben Leitung reagieren zu lassen.

Dies ist eine klobige Art und Weise und inkonsistent zu booten. Bei IPv6 werden alle der Schnittstelle eth0 zugewiesenen Adressen zusammen unter dem Eintrag eth0 aufgelistet. Es gibt eine modernere Methode, um dies zu tun (über den ip addrBefehl).

Sie können Alias-Schnittstellen erkennen, da sie einen Doppelpunkt :in ihren Namen haben, der Teil links vom Doppelpunkt ein vorhandener Schnittstellenname ist und die Zeilengruppe der Schnittstelle, wenn Sie dies tun, ifconfigsehr kurz ist. Das HWaddrsollte auch mit dem der 'übergeordneten' Schnittstelle identisch sein. Sie werden auch nicht in aufgeführt /proc/net/dev. Wenn Sie sagen würden ip addr, eth0:0würde als zweite Adresse der Schnittstelle anzeigen eth0. (Achten Sie auf die eingerückte Linie, die mit beginnt. inet)

Aliase und ihre Eltern teilen viele Einstellungen und Felder, da sie die physische Schicht teilen. Der Kernel behandelt sie nicht als völlig separate Schnittstellen. Zum einen wird der Datenverkehr auf der übergeordneten Schnittstelle angezeigt , nicht auf dem Alias. Möglicherweise haben Sie bemerkt, dass der Alias ​​nicht einmal Paket- / Bytezähler enthält!

Wenn Sie Datenverkehr, Firewall usw. auf einer Alias-Schnittstelle abhören müssen, müssen Sie stattdessen deren übergeordnetes Element verwenden. Da der einzige Unterschied zwischen einem Alias ​​und seinem übergeordneten Element die IPv4-Einstellungen sind, besteht die einzige Möglichkeit, den Datenverkehr auf einem Alias ​​abzugleichen, darin, diese IP-Einstellungen zu verwenden. Mit iptablesstimmen Sie die IPv4-Adresse des Alias ​​genau wie im Kommentar mit Ihrer Antwort ab.

Alexios
quelle