Eu tenho duas interfaces no meu VPS: eth0
e eth0:0
. Quero bloquear pacotes de entrada na porta 80 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 mudar eth0:0
para eth0
ele funciona corretamente. Qual é o problema?
Respostas:
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 addr
comando).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 interfaceifconfig
é muito curta. OHWaddr
também deve ser idêntico ao da interface 'pai'. Eles também não serão listados em/proc/net/dev
. Se você dissesseip addr
,eth0:0
seria exibido como o segundo endereço da interfaceeth0
. (procure a linha recuada começando cominet
)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.fonte