Por que a minha regra iptables não funciona?

9

Eu tenho duas interfaces no meu VPS: eth0 e eth0:0 . Eu quero bloquear pacotes de entrada na porta 80 em eth0:0 usando iptables. Eu tentei isso, mas não funciona:

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

Se eu alterar eth0:0 para eth0 , isso funcionará corretamente. Qual é o problema?

    
por sinoohe 12.12.2011 / 08:12

1 resposta

6

A história curta: a maneira como você fez isso está correta (de acordo com o seu comentário à pergunta).

A longa história: no Linux, um "dispositivo" de rede chamado foo:bar é um alias de "foo" usado quando precisamos atribuir várias configurações de rede à interface "foo", por exemplo, para que ele responda em várias sub-redes no mesmo fio.

Esta é uma maneira desajeitada de fazer isso, e inconsistente para inicializar. Para o IPv6, todos os endereços atribuídos à interface eth0 são listados juntos na entrada eth0. Existe um método mais moderno de fazer isso (via o comando ip addr ).

Você pode identificar as interfaces de alias porque elas têm dois pontos : em seus nomes, a parte à esquerda dos dois-pontos é um nome de interface existente e a sub-rotina de interface quando você faz ifconfig é muito curto. O HWaddr também deve ser idêntico ao da interface "pai". Eles também não serão listados em /proc/net/dev . Se você dissesse ip addr , eth0:0 seria mostrado como o segundo endereço da interface eth0 . (procure a linha recuada começando com inet )

Os aliases e seus pais compartilham muitas das configurações e campos, pois compartilham a camada física. O kernel não os trata como interfaces totalmente separadas. Por um lado, o tráfego aparece na interface pai , não no alias. Você deve ter notado que o alias nem tem contadores de pacotes / bytes!

Se você precisa farejar tráfego, firewall, etc. em uma interface de alias, é necessário usar seu pai. Como a única diferença que um alias tem de seu pai são suas configurações IPv4, a única maneira de corresponder o tráfego em um alias é usar essas configurações de IP. Com iptables , você corresponde ao endereço IPv4 do alias como fez no comentário da sua resposta.

    
por 12.01.2012 / 09:00