Linux: Renomeando interfaces de rede com o udev

Os nomes atribuídos às placas de rede no Linux sempre causarem uma certa dose de transtornos para quem utiliza duas ou mais placas, sobretudo se forem duas placas com o mesmo chipset.

Tradicionalmente, as placas de rede recebem nomes como “eth0” e “eth1”, que são atribuídos conforme o sistema detecta as placas durante o boot. Isso significa que, de
acordo com a distribuição usada, as placas podem trocar de posição, sem falar que é comum que os nomes troquem ao reiniciar a máquina, fazendo com que a placa eth1 passe a ser vista como eth0 e vice-versa, quebrando toda a configuração da rede.

Com a introdução do udev, as trocar de nomes ao reiniciar se tornaram ainda mais comuns. Cheguei a ver a placa wireless de um notebook Centrino trocar de nome três
vezes em três reboots: primeiro eth2, depois eth1, em seguida eth0 e novamente eth1.

Antigamente, a solução para o problema era criar aliases para as placas de rede no arquivo “/etc/modules.conf”, relacionando cada interface ao driver usado, como
em:

alias eth0 via-rhine
alias eth1 8139too

Entretanto, os aliases não ajudavam muito em casos em que eram utilizadas duas placas iguais, sem falar que esta configuração não funciona mais em distribuições
recentes, que utilizam o udev. Nelas, podemos atribuir os nomes de forma muito mais confiável adicionando regras do udev.

As regras podem ser criadas com base no endereço MAC de cada placa de rede (a forma mais confiável, já que o MAC só muda ao trocar de placa), ou através do módulo usado
por ela.

Você pode descobrir o endereço MAC das placas rapidamente através do comando “ifconfig”. Para descobrir o módulo, você pode fazer uma pesquisa no Google, ou usar o
comando “ethtool -i“, como em:

# ethtool -i eth1

driver: ipw2200
version: git-1.1.1
firmware-version: ABG:9.0.2.6 (Mar 22 2005)
bus-info: 0000:01:05.0

O ethtool não vem instalado por padrão em todas as distribuições, mas normalmente está disponível como pacote extra nos repositórios. Nas distribuições derivadas do
Debian você pode instala-lo via apt-get: apt-get install ethtool.

Agora que já sabe o MAC e o driver de cada uma das placas, crie o arquivo “/etc/udev/rules.d/z99-network.rules“, onde vão as regras.

Para relacionar com base no endereço MAC, adicione linhas como:

SUBSYSTEM==”net”, SYSFS{address}==”00:15:00:4b:68:db”, NAME=”ipw0″

Para relacionar com base no módulo usado (o que só funciona ao usar duas placas diferentes), use regras como:

SUBSYSTEM==”net”, DRIVER==”ipw2200″, NAME=”ipw0″

O udev lê todos os arquivos dentro da pasta “/etc/udev/rules.d” e processa todas as regras contidas neles. A opção SUBSYSTEM==”net” especifica que a regra só se aplica
a placas de rede. Usamos em seguida a opção “SYSFS{address}==” ou “DRIVER==” para especificar a informação que permite ao sistema diferenciar a placa desejada das demais instaladas no sistema. Finalmente, a opção “NAME=” especifica o nome que passará a
ser usado pela placa.

Imagine que você tem uma placa Realtek e uma SiS900. Para atribuir os nomes baseado no endereço MAC, você usaria as regras:

SUBSYSTEM==”net”, SYSFS{address}==”00:E0:7D:9B:F9:04″, NAME=”rtl0″
SUBSYSTEM==”net”, SYSFS{address}==”00:11:D8:41:52:78″, NAME=”sis0″

Ao atribuir com base no módulo, você usaria as regras:

SUBSYSTEM==”net”, DRIVER==”8139too”, NAME=”rtl0″
SUBSYSTEM==”net”, DRIVER==”sis900″, NAME=”sis0″

Nos exemplos, usei “ipw0”, “rtl0” e “sis0” como nomes para as placas, mas você pode atribuir qualquer nome. O único porém é que algumas ferramentas de configuração de
rede não encontram as placas caso elas usem nomes fora do padrão. Neste caso, você pode usar nomes mais comuns, como “eth2” e “eth3”, desde que diferentes dos que as placas usavam anteriormente, para evitar situações onde o udev possa tentar atribuir o
mesmo nome às duas placas.

Para que a alteração entre em vigor, é necessário recarregar os módulos das placas, ou simplesmente reiniciar o micro. Naturalmente, você precisará reconfigurar a rede,
mas em compensação, só precisará fazer isso uma vez ;).

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X