Dlaczego moja reguła iptables nie działa?

9

Mam dwa interfejsy na moim VPS: eth0i eth0:0. Chcę zablokować przychodzące pakiety na porcie 80 przy eth0:0użyciu iptables. Próbowałem tego, ale to nie działa:

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

Jeśli zmienię eth0:0na eth0to, działa poprawnie. Jaki jest problem?

Sinoohe
źródło
4
Pytanie rozwiązałem w ten sposób: mój interfejs był wirtualny, więc iptables nie mógł uzyskać do niego dostępu, więc zablokowałem interfejs pod adresem IP mojego interfejsu, a nie według nazwy interfejsu, moje polecenie brzmi: iptables -A WEJŚCIE -p tcp --port 80 -d {ETH0: 0's IP} -j REJECT
sinoohe

Odpowiedzi:

6

Krótka historia: sposób, w jaki to zrobiłeś, jest poprawny (zgodnie z komentarzem do pytania).

Długa historia: w Linuksie nazywane „urządzenie” sieciowe foo:barto alias „foo” używany, gdy musimy przypisać wiele ustawień sieciowych do interfejsu „foo”, np. Aby odpowiadał w wielu podsieciach na tym samym przewodzie.

Jest to niechlujny sposób na zrobienie tego i niekonsekwentne uruchamianie. W przypadku IPv6 wszystkie adresy przypisane do interfejsu eth0 są wymienione razem pod wpisem eth0. Istnieje bardziej nowoczesna metoda robienia tego (za pomocą ip addrpolecenia).

Możesz wykryć interfejsy aliasów, ponieważ :w nazwach mają dwukropek , część po lewej stronie dwukropka to zachowana nazwa interfejsu, a zwrotka interfejsu ifconfigjest bardzo krótka. HWaddrPowinny również być identyczny z interfejsem „macierzystego”. Nie będą również wymienione w /proc/net/dev. Jeśli chcesz powiedzieć ip addr, eth0:0pokaże się jako drugi adres interfejsu eth0. (poszukaj wciętej linii zaczynającej się od inet)

Aliasy i ich rodzice mają wiele ustawień i pól, ponieważ dzielą warstwę fizyczną. Jądro nie traktuje ich jako całkowicie oddzielnych interfejsów. Po pierwsze, ruch pojawia się w interfejsie nadrzędnym , a nie w aliasie. Być może zauważyłeś, że alias nie ma nawet liczników pakietów / bajtów!

Jeśli musisz wąchać ruch, zaporę ogniową itp. W interfejsie aliasu, musisz zamiast tego użyć jego elementu nadrzędnego. Ponieważ jedyną różnicą, jaką alias ma od swojego rodzica, są ustawienia IPv4, jedynym sposobem dopasowania ruchu na aliasie jest użycie tych ustawień IP. Za pomocą iptablesdopasowujesz adres IPv4 aliasu, tak jak w komentarzu do odpowiedzi.

Alexios
źródło