Alterar o Device da Placa de Rede no Linux

As placas de rede no linux, geralmente são reconhecidas como eth0, eth1, eth2, ..., etc, onde cada placa é vinculada a uma dessas interfaces com suas configurações próprias de ip, máscara, gateway e o endereço mac.
Devido a regras do udev cada endereço mac é atribuído permanentemente ao device (eth1, eth2 ..) o que é uma grande vantagem, pois ao efetuar um reboot no sistema você não corre o risco da configuração da placa de rede reconhecida como eth0 seja atribuída a eth1 ou vice-versa o que causaria uma grande dor de cabeça em um servidor em produção por exemplo.


Então por que eu iria querer alterar o device da minha placa ? simples, digamos que seu computador possuí apenas uma placa de rede reconhecida como eth0, então em algum momento sua placa de rede queime, e você compra uma nova placa, do mesmo modelo que sua placa antiga e ao trocar as placas em seu computador a nova placa é reconhecida como eth1 mesmo sendo a única placa adicionada.
Por que sua nova placa não foi reconhecida como eth0 sendo que ela é a única placa existente em seu computador ? o motivo é justamente pela regra do udev que salvou o endereço mac da sua placa antiga e criou uma nova regra para sua nova placa sendo disponibilizado o device eth1.

O motivo que me levou a alterar o device da placa de rede foi a manutenção de máquinas virtuais sempre que eu clonava ou migrava uma VM, ao subir o sistema era atribuído um novo device para a placa de rede por conta do endereço mac.


Os devices ficam armazenados no arquivo /etc/udev/rules.d/70-persistent-net.rules (tanto no red hat quanto no debian o arquivo fica no mesmo local) com o conteúdo parecido com a saída abaixo:


# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.




# PCI device 0x8086:0x100e (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:16:c2:99", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth5"

Veja que o arquivo é gerado automaticamente e dependendo da quantidade de placas de rede que o computador possuir haverá mais linhas de configuração com cada placa de rede e seu respectivo endereço mac, no meu caso estou utilizando apenas uma placa de rede. 

A configuração se inicia com uma linha comentada com a identificação da placa PCI e seu módulo porém a linha que nos interessa é NAME="eth5" basta alterar essa linha para o device desejado, como exemplo irei alterar para eth0. 


# vi /etc/udev/rules.d/70-persistent-net.rules

O arquivo ficou da seguinte forma: 
 
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x8086:0x100e (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:16:c2:99", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Após editar o arquivo devemos reiniciar o udev para que a alteração tenha efeito, execute o comando abaixo como root:

No Red Hat/CentOS

# /sbin/start_udev

No Debian

# /etc/init.d/udev restart

Caso você já tenha suas interfaces configurada em /etc/network/interfaces ou em /etc/sysconfig/network-scripts/ifcfg-ethX , o sistema já reconheceu e inicializou as placas de rede, verifique se estão devidamente configurada com ifconfig. 

Se ao reiniciar o udev você se deparar com um problema de leitura no arquivo /etc/udev/rules.d/70-persistent-net.rules, você simplesmente pode exclui-lo e reiniciar o udev novamente, pois o próprio sistema irá regerar o arquivo e reconhecer as placas do computador automaticamente.

Deixe um comentário