Почему мое правило iptables не работает?


9

У меня есть два интерфейса на моем VPS: eth0и eth0:0. Я хочу заблокировать входящие пакеты через порт 80 при eth0:0использовании iptables. Я попробовал это, но это не работает:

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: IP-адрес 0} -j REJECT
sinoohe

Ответы:


6

Короткая история: то, как вы сделали это правильно (согласно вашему комментарию к вопросу).

Длинная история: в Linux сетевое «устройство» называется foo:barпсевдонимом «foo», используемым, когда нам нужно назначить несколько сетевых настроек для интерфейса «foo», например, чтобы он отвечал на несколько подсетей на одном проводе.

Это грязный способ сделать это, и несовместимо с загрузкой. Для IPv6 все адреса, назначенные интерфейсу eth0, перечислены вместе под записью eth0. Есть более современный способ сделать это (с помощью ip addrкоманды).

Интерфейсы псевдонимов можно обнаружить, поскольку :в их именах есть двоеточие , слева от двоеточия - существующее имя интерфейса, а раздел интерфейса, когда вы это делаете ifconfig, очень короткий. Также HWaddrдолжен быть идентичным интерфейсу родительского интерфейса. Они также не будут перечислены в /proc/net/dev. Если бы вы сказали ip addr, eth0:0будет отображаться как второй адрес интерфейса eth0. (найдите строку с отступом, начинающуюся с inet)

Псевдонимы и их родители имеют много общих настроек и полей, поскольку они имеют общий физический уровень. Ядро не рассматривает их как полностью отдельные интерфейсы. Например, трафик отображается на родительском интерфейсе, а не на псевдониме. Возможно, вы заметили, что псевдоним даже не имеет счетчиков пакетов / байтов!

Если вам нужно перехватить трафик, брандмауэр и т. Д. На интерфейсе псевдонима, вы должны использовать вместо него его родитель. Поскольку единственное отличие псевдонима от его родителя - это настройки IPv4, единственный способ сопоставить трафик с псевдонимом - использовать эти настройки IP. С помощью iptablesвы сопоставляете IPv4-адрес псевдонима так же, как в комментарии к своему ответу.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.