Por que minha regra do iptables não funciona?

9

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

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

Se eu mudar eth0:0para eth0ele funciona corretamente. Qual é o problema?

sinoohe
fonte
4
Resolvi minha pergunta da seguinte maneira: minha interface era virtual para que o iptables não pudesse acessá-lo, então bloqueei a interface pelo IP da minha interface e não pelo nome da interface, meu comando é: iptables -A INPUT -p tcp --dport 80 -d {IP de ETH0: 0} -j REJECT
sinoohe 12/12

Respostas:

6

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

A longa história: no Linux, um 'dispositivo' de rede chamado foo:baré um apelido 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 arrogante de fazer isso, e inconsistente para inicializar. Para 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 (através do ip addrcomando).

Você pode identificar 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 da interface ifconfigé muito curta. O HWaddrtambé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:0seria exibido como o segundo endereço da interface eth0. (procure a linha recuada começando com inet)

Os aliases e seus pais compartilham muitas 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 possui contadores de pacotes / bytes!

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

Alexios
fonte