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 interface ifconfig
é muito curta. 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 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.