Como posso mudar o dispositivo de rede “ens33” padrão para “eth0” antigo no Fedora 19?

22

Acabei de instalar um Fedora 19 na estação de trabalho VMware 9. O dispositivo de rede padrão é "ens33" em vez de "eth0" no RHEL.

A razão pela qual eu tenho que usar "eth0" é que o componente de licença de um de nossos produtos deve estar vinculado a "eth0".

Existem alguns posts discutindo sobre problemas semelhantes, a maioria dos quais para sistemas operacionais mais antigos. Não encontrei um que corresponda exatamente à minha situação.

YM Jiang
fonte
O Fedora 19 é significativamente diferente do RHEL 5.5, pois na pergunta foi marcada uma duplicata e a resposta não é a mesma.
mattdm

Respostas:

31

A maneira mais fácil de restaurar a maneira antiga como o Kernel / modules / udev renomeia suas interfaces Ethernet é fornecer esses parâmetros do kernel ao Fedora 19 :

  1. net.ifnames = 0
  2. biosdevname = 0

Para fazer isso, siga estas etapas:

  1. Edite / etc / default / grub
  2. No final da linha GRUB_CMDLINE_LINUX , acrescente " net.ifnames = 0 biosdevname = 0 "
  3. Salve o arquivo
  4. Digite " grub2-mkconfig -o /boot/grub2/grub.cfg "
  5. Digite " reiniciar "

Se você não forneceu esses parâmetros durante a instalação, provavelmente precisará ajustar e / ou renomear os arquivos de interface em / etc / sysconfig / network-scripts / ifcfg- * .

Até o Fedora 18 , apenas biosdevname = 0 era suficiente.

Como exemplo, em uma certa máquina, em uma pesquisa exaustiva, obtive:

- Sem parâmetros: NIC identificado como " enp5s2 ".
-Parameter biosdevname = 0: NIC identificado como " enp5s2 ".
-Parameter net.ifnames = 0: NIC identificado como " em1 ".
-Parameter net.ifnames = 0 AND biosdevname = 0: NIC identificado como " eth0 ".

Guilsson
fonte
Muito obrigado pelas etapas detalhadas! Tudo o que o MathWorks estava me fornecendo era para versões muito mais antigas do Fedora.
Dr. Watson
@ dr-watson: Até o Fedora 14, ethX era o nome padrão para interfaces Ethernet. No Fedora 15, a Nomeação Consistente de Dispositivos em Rede foi implementada. Do Fedora 15 aos 18, apenas biosdevname = 0 foi suficiente para manter a nomeação ethX. Você é bem vindo.
Guilsson
3
Esta solução também funciona no Fedora 20. Obrigado.
heuristicus
Também trabalhou no Fedora 21
Eric Grunzke
Ubuntu 14.04 também.
S2
9

Você pode fazer isso usando uma regra do udev, assim:

cat > /etc/udev/rules.d/99-rename-to-eth0.rules << EOF
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="$(cat /sys/class/net/ens33/address)", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
EOF
Chris Down
fonte
Obrigado pelo exemplo. Para outros, vale a pena notar que o valor /sys/class/net/ens33pode ser diferente dependendo dos valores retornados pela bios e encontrados na saída de lspci -vv | grep -A25 Ethernet. Além disso, se a intenção é usar eth0como nome, pode ser mais apropriado especificar apenas os sinalizadores de inicialização do kernel para desativar a nomeação "previsível" do dispositivo.
Mark Edington
7

No Fedora 20, as coisas parecem ter mudado um pouco mais.

1) argumentos do kernel do grub
Sim, "net.ifnames = 0" e "biodevame = 0" parecem necessários.

2) / etc / sysconfig / network-scripts / ifcfg-ethX
Sim, também são necessários.

3) /etc/udev/rules.d/60-net.rules
Se você possui várias interfaces e deseja controlar a nomeação de cada dispositivo, em vez de permitir que o kernel faça da sua maneira, /etc/udev/rules.d/60 -net.rules parece necessário substituir /usr/lib/udev/rules.d/60-net.rules como a seguir.

# PCI device 0x1011:0x0019 (tulip) {SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:c0:f0:4c:f5:78", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

# PCI device 0x10ec:0x8168 (r8169) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="60:a4:4c:b5:26:48", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

4) yum remove biosdevnameparece desnecessário.

hiro
fonte
1
Obrigado por detalhar os vários fatores. Parece que você tem um erro de digitação no ponto # 1, deve ser "biosdevname" e não "biodevame".
precisa saber é o seguinte
2

Isso é diferente no Fedora 19 do que nas versões anteriores. Há duas coisas a serem abordadas:

  1. Remova biosdevname, se estiver instalado. ( yum remove biosdevname, ou coloque -biosdevnameno seu kickstart.
  2. Desative a regra do udev: ln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rules

Mais informações podem ser encontradas em http://fedoraproject.org/wiki/Features/SystemdPredictableNetworkInterfaceNames

mattdm
fonte
2

Embora a resposta aceita forneça uma solução que funcione, ela não explica por que ens33está sendo usada. Os links abaixo fornecem informações sobre por que o dispositivo de rede recebeu outro nome eth0e como agora é nomeado nas variantes do RHEL 7:

Também é importante observar que valores como "33" que aparecem ens33são provenientes do valor do slot do adaptador PCI, conforme retornado pelo BIOS. Use este comando para ver quais valores seu sistema listou para "Slot físico":

lspci -vv | grep -A20 Ethernet

Informações adicionais sobre a parte "ens" do nome podem ser encontradas no código-fonte do udev .

Mark Edington
fonte
1

Para o Fedora-24:

  1. Editar /etc/default/grub

  2. No final da GRUB_CMDLINE_LINUXlinha, acrescentenet.ifnames=0 biosdevname=0

  3. Salve o arquivo

  4. Tipo

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

    ou tipo

    grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
    
  5. Tipo reboot

Hafiz
fonte
Por que o dispositivo de rede desaparece completamente do sistema se eu aplicar esse método ao Fedora 26? ifconfigapenas retorna loe virbr0, mas originalmente enp4s0não está mais lá.
ajeh
Para me responder: preciso ter cuidado para alterar todos os scripts de rede a serem usados ​​na ethNnomeação para usar essa convenção. Eu havia deixado enp4s0um script.
ajeh