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.