Pesquisa de site

Como renomear interfaces de rede para eth0 no CentOS


Neste artigo, aprenderemos sobre a nomenclatura da interface Linux. Ele foi escrito para distribuições Linux baseadas em RHEL como AlmaLinux, CentOS e Rocky Linux. Você aprenderá como a interface de rede no Linux chamada eth(X), ens(X), eno(X), etc.

Primeiramente, aprenderemos sobre o conceito de nomenclatura de uma interface de rede no sistema Linux, incluindo o esquema de nomenclatura clássico, biosdevname e política do sistema udev.

1. Convenção de Nomenclatura Tradicional

A Convenção de Nomenclatura Tradicional é o esquema de nomenclatura de interface tradicional padrão fornecido pelo driver do kernel Linux. Como sabemos, a Convenção de Nomenclatura Tradicional é como eth(n) para dispositivo Ethernet, wlan(n) para dispositivo LAN sem fio e usb(n) para usbnet.

Na convenção de nomenclatura tradicional, todo o hardware de rede será tratado da mesma forma pelo driver do kernel. É bom o suficiente para nos contar sobre o tipo de conexão, mas não muito para o hardware natural com o qual você está acostumado.

2. Nome do Biosdev

O Biosdevname é um projeto iniciado pela Dell para fornecer nomenclatura consistente de dispositivos de rede. O Biosdevname é um utilitário auxiliar do udev que fornece um mecanismo de nomenclatura consistente para dispositivos de rede com base na localização física do hardware, conforme sugerido pelo BIOS do sistema.

Abaixo está a política padrão do esquema de nomenclatura fornecido pelo biosdevname:

  • Para os dispositivos de rede integrados, será nomeado como "em[_]"
  • Para dispositivos NICs complementares, serão nomeados como "pp[_]"

Mais detalhes:

  • em=dispositivos de rede integrados
  • =o respectivo slot PCI
  • =Número da porta das NICs (se houver NICs multiportas)
  • =o índice da instância SRIOV e/ou NPAR
  • O 'p' na NIC complementar é o slot PCI e a porta, respectivamente

3. Regras do Systemd Udev

Hoje em dia, algumas distribuições Linux populares, como Ubuntu, CentOS e Debian, estão usando o Systemd como gerenciador de sistemas e serviços. E desde a versão 197, o systemd foi adicionado às políticas e esquemas de nomenclatura nativos para interfaces de rede semelhantes ao Biosdevname.

Abaixo estão 5 políticas de nomenclatura de interface de rede para sistemas baseados em Systemd:

  1. Para dispositivos de rede integrados, será nomeado como 'eno1', 'eno2', etc.
  2. Para incorporar Firmware/BIOS, são fornecidos números de índice de slot hotplug PCI Express, denominados 'ens1'. Isso será aplicado se a primeira política falhar. Usado principalmente pela máquina virtual, como VMWare e KVM.
  3. Nomes que incorporam a localização física do conector do hardware (exemplo: enp2s0) são aplicados se aplicável, caso contrário, retornam diretamente ao esquema 5 em todos os outros casos.
  4. Nomes que incorporam o endereço MAC da interface (exemplo: enx78e7d1ea46da) não são usados por padrão, mas estão disponíveis se o usuário desejar.
  5. O esquema tradicional de nomenclatura imprevisível do kernel é usado se todos os outros métodos falharem (exemplo: eth0).

Agora aprendemos sobre a convenção de nomenclatura de interface do Linux.

A seguir, mostraremos como alterar o nome das interfaces de rede para o tradicional 'et0', eth1, etc. E há duas maneiras de fazer isso, alterar os nomes das interfaces de rede através do 'biosdevname' e através do 'systemd udev regras'.

1. Altere o nome da interface para eth0 desativando Biosdevname

Como sabemos acima, o biosdevname é um utilitário udev criado pela Dell para nomear interfaces de rede conforme sugerido pelo BIOS do sistema. E por padrão, o pacote biosdevname é instalado no sistema Linux.

Para desabilitar o biosdevname no sistema Linux, você precisará desabilitá-lo no nível de inicialização editando a configuração do grub em seu sistema.

Antes de prosseguir, vamos verificar as interfaces atuais do sistema usando o seguinte comando.

ifconfig -a
ip addr

E abaixo está o resultado.

Como resultado, temos duas interfaces de rede 'ens3' e 'ens8'.

A seguir, renomearemos ambas as interfaces para 'eth0' e 'eth1' em nosso sistema CentOS 8 editando a configuração do grub e a configuração de rede para cada interface.

- Configurar Grub2

Vá para o diretório '/etc/sysconfig/' e edite a configuração do 'grub' usando o editor vim.

cd /etc/sysconfig/
vim grub

Na configuração 'GRUB_CMDLINE_LINUX', adicione a seguinte configuração para desabilitar o biosdevname e o parâmetro do kernel net.ifnames.

net.ifnames=0 biosdevname=0

Salvar e fechar.

Depois disso, gere uma nova configuração do grub usando o comando ‘grub2-mkconfig’ conforme abaixo.

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

E você obterá o resultado conforme abaixo.

- Editar script de rede

Em seguida, precisamos renomear ambas as interfaces de rede na configuração localizada no diretório '/etc/sysconfig/network-scripts/'.

Vá para '/etc/sysconfig/network-scripts/'.

cd /etc/sysconfig/network-scripts/

Renomeie o nome da interface para 'ifcfg-ethX'.

mv ifcfg-enp0s3 ifcfg-eth0
mv ifcfg-enp0s8 ifcfg-eth1

Depois disso, altere ambas as interfaces para ‘ethX’ em ambos os arquivos usando o comando sed abaixo.

sed -i -e 's/enp0s3/eth0/g' ifcfg-eth0
sed -i -e 's/enp0s8/eth1/g' ifcfg-eth1

Agora reinicie o sistema CentOS 8.

sudo reboot

- Teste

Depois de fazer login novamente, verifique as interfaces de rede disponíveis usando o seguinte comando.

ifconfig
ip addr

E você verá o resultado conforme abaixo.

Ambas as interfaces de rede no sistema CentOS 8 foram alteradas e agora usam a convenção de nomenclatura tradicional. As interfaces de rede foram alteradas desativando o 'biosdevname' durante a inicialização do sistema.

- Opcionalmente

Se quiser verificar detalhes sobre as alterações na inicialização do sistema, você pode executar o seguinte comando.

dmesg | grep -i eth

Você verá que o nome da interface padrão foi alterado para o nome tradicional 'ethX', alterado por meio das regras personalizadas do udev.

2. Altere o nome da interface para eth0 usando as regras do Udev

Outra maneira de alterar o nome da interface de rede para uma nomenclatura tradicional, como eth0 etc., é criando regras personalizadas do udev. E usando as regras personalizadas do udev, as interfaces de rede serão alteradas após o sistema.

- Criar regras personalizadas do Udev

Agora vá para o diretório '/etc/udev/rules.d/' e crie a regra personalizada chamada '70-persistent-net.rules' usando o editor vim.

cd /etc/udev/rules.d/
vim 70-persistent-net.rules

Altere o endereço mac e a interface padrão 'ens3' e 'ens8' pelos seus e cole-os.

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:6c:a8:e6", ATTR{type}=="1", KERNEL=="ens3", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:97:cf:33", ATTR{type}=="1", KERNEL=="ens8", NAME="eth1"

Salvar e fechar.

- Editar script de rede

Em seguida, vá para o diretório '/etc/sysconfig/network-scripts'.

cd /etc/sysconfig/network-scripts/

Renomeie o nome da interface para 'ifcfg-ethX'.

mv ifcfg-enp0s3 ifcfg-eth0
mv ifcfg-enp0s8 ifcfg-eth1

Depois disso, altere ambas as interfaces para ‘ethX’ em ambos os arquivos usando o comando sed abaixo.

sed -i -e 's/enp0s3/eth0/g' ifcfg-eth0
sed -i -e 's/enp0s8/eth1/g' ifcfg-eth1

Agora reinicie o servidor CentOS 8.

sudo reboot

- Teste

Depois de fazer login novamente, verifique todas as interfaces de rede disponíveis usando os seguintes comandos.

ifconfig
ip addr

E você obterá a nova interface 'ethX' que foi atribuída.

- Opcionalmente

Se quiser verificar detalhes sobre as alterações na inicialização do sistema, você pode executar o seguinte comando.

dmesg | grep -i eth

Você verá que o nome 'ensX' foi alterado para o nome tradicional 'ethX', alterado por meio das regras personalizadas do udev.

Referência

  • https://access.redhat.com/documentation/

Artigos relacionados: