Nas versões de kernel mais atuais (desde a série 3), foi introduzido um sistema de nomenclatura de dispositivos de rede conhecido como Consistent Network Device Naming (biosdevname). A intenção foi criar uma padronização de nomes de acordo com o tipo de dispositivo de rede e barramento (onboard, interface PCI e etc). Ou seja, se trocarmos uma placa de rede, sem mudar de barramento, a identificação da NIC não mudará e nenhum ajuste de sistema será necessário.
A ideia foi boa, mas, dependendo do ambiente, tornou a leitura das interfaces de rede mais confusa. Se, neste novo modelo, fosse possível apelidar as interfaces, seria mais interessante. Mas, desconheço esta possibilidade. Com isto, a maioria dos administradores estão desabilitando o recurso.
Confiram esta tabela (extraída da documentação da RedHat Enterprise):
Dispositivo | Nome antigo | Nome novo |
---|---|---|
Embedded network interface (LOM) |
eth[0123…] |
em[1234…] [a] |
PCI card network interface |
eth[0123…] |
p<slot>p<ethernet port> [b] |
Virtual function |
eth[0123…] |
p<slot>p<ethernet port>_<virtual interface> [c] |
O sistema operacional que tenho adotado, por padrão, em instalações de Firewall é o Ubuntu Server, e será o alvo de configuração das técnicas discutidas no site. No entanto, nada impede que os ajustes sejam feitos em outras distribuições (pouca coisa muda).
Para desabilitar o recurso biosdevname faça a seguinte alteração:
- Edite o arquivo /etc/default/grub e adicione o seguinte
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
- Aplique as alterações com o comando update-grub e reinicie o sistema.
Atualmente, a forma de apelidar, manualmente, uma interface de rede é através de ajustes no UDEV (fixando pelo endereço MAC). É uma configuração que tenho adotado, mas pedirá reconfiguração caso a NIC seja trocada.
- Edite ou crie o arquivo /etc/udev/rules.d/70-persistent-net.rules e adicione a seguinte linha:
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",ATTR{address}=="00:01:02:ab:c1:c2", ATTR{dev_id}=="0x0",ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
Ao optar pelo ajuste manual (apelidando por MAC), recomendo “configurar todas as interfaces presentes no firewall“ para evitar que as demais sofram mudança de nome caso ocorra alguma substituição de interface de rede. É uma dica de quem já passou por isto! 😉
Existem várias razões que podem nos levar a tais ajustes manuais.
Há alguns anos atrás, por exemplo, configurei um firewall com múltiplas vlans sobre uma interface eth0. A demanda de rede cresceu muito. Recentemente, visando melhorar a vazão e o processo de interrupção de hardware, iniciamos uma migração, separando algumas destas vlans por interface física. Como a política de acesso destas vlans é comum, muitas regras foram escritas identificando a interface como “eth0+“. Com a migração de hardware, para não ter que reescrever todas as regras (ou multiplicar), optei por apelidar cada interface como eth0_<id_da_vlan>. Ou seja, separei as vlans por interface física, mas mantive a referência lógica.