Como configurar dispositivos ethernet para hardware específico no Centos 7

2

Eu tenho um sistema Centos 7 onde eu desabilitei o novo sistema de nomes de rede e reverti para o sistema antigo (eth0, eth1, etc.). Eu fiz isso porque estou usando isso em uma configuração RDO Openstack, e isso precisa dos mesmos nomes de dispositivos Ethernet em alguns hosts diferentes. Alguns desses hosts estão em kvm e usam o sistema de nomenclatura eth.

Desde que isso é feito, a cada algumas reinicializações, meus dispositivos ethernet são revertidos.

Em uma inicialização saudável, vejo

[ 11.172339] tg3 0000:03:00.0 eth0: Tigon3 [partno(BCM95723) rev 5784100] (PCI Express) MAC address 68:b5:99:72:d8:02
[ 11.269599] e1000e 0000:02:00.0 eth1: (PCI Express:2.5GT/s:Width x1) 68:05:ca:04:90:16

Em um 'boot ruim', eles serão revertidos e o e1000e será eth0 com o tg3 sendo eth1.

Eu fiz o seguinte até agora:

  • Adicionado "net.ifnames = 0 biosdevname = 0" à linha GRUB_CMDLINE_LINUX em / etc / default / grub
  • grub2-mkconfig -o /boot/grub2/grub.cfg
  • criado /etc/udev/rules.d/70-persistent-net.rules

Depois de executar o grub2-mkconfig, vejo o seguinte em /boot/grub2/grub.cfg (o que implica que minha alteração acima está em vigor)

linux16 /boot/vmlinuz-3.10.0-123.el7.x86_64 root=UUID=eabee081-85f8-4f33-b72a-fbbdc575e010 ro vconsole.keymap=uk crashkernel=auto vconsole.font=latarcyrheb-sun16 rhgb net.ifnames=0 biosdevname=0 quiet

O conteúdo de 70-persistent-net.rules é o seguinte:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?", ATTR{address}=="68:B5:99:72:D8:02", ATTR{type}=="1", KERNEL=="eth", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?", ATTR{address}=="68:05:CA:04:90:16", ATTR{type}=="1", KERNEL=="eth", NAME="eth1"

Eu também tentei alterar as letras nos endereços MAC neste arquivo para minúsculas para coincidir com a saída do dmesg. Isso não faz diferença.

Eu tenho o NetworkManager desabilitado e eu tenho a entrada HWADDR em / etc / sysconfig / network-scripts / ifcfg-eth *.

Sob o Ubuntu e versões anteriores do Centos, o acima funciona bem e de forma confiável.

Nada disso está levando a dispositivos previsíveis nesta caixa com o Centos 7.

Qualquer conselho sobre como fixar esses dispositivos aos nomes de eth seria muito apreciado!

    
por Anonymouslemming 04.01.2015 / 17:14

1 resposta

2

Eu investiguei mais e encontrei mais detalhes.
A razão para este comportamento desfavorável foram as condições de corrida entre o kernel e o software udev (os desenvolvedores declararam em um relatório de bug). Portanto, os desenvolvedores do udev decidiram remover a nomenclatura confiável de NICs como ethX e forçar uma nomenclatura menos previsível. Eles removeram o código que permitia ao administrador usar uma ordem confiável das interfaces ethX e também adicionaram código que se recusa a usar qualquer nome ethX que já tenha sido usado pelo kernel como o nome da NIC interna.

Portanto, parece que você não pode receber pedidos confiáveis se quiser usar os nomes eth0, eth1 e similares.
Alguns sugerem usar nomes como netX em vez disso.
Também pode funcionar se você configurar ethX com X maior que o número real de interface.

Eu era o autor original que achava ter encontrado a solução, quando na verdade era apenas temporário. Depois de alguns testes, achei os dispositivos ethernet nomeados aleatoriamente e não da maneira que eu defini em 60-net.rules.

Eu tinha postado a resposta original anonimamente e depois decidi me inscrever para poder participar mais. Então eu sinto muito. A resposta postada abaixo NÃO resolve o problema originalmente respondido. Faz isso por algumas botas, mas não funciona de forma confiável.

Eu tive sucesso com o CD-Minimal do CentOS 7 e a seguinte estratégia:

Eu fiz muitas coisas que não ajudaram, então tive que mudar algumas delas de volta.

Eu reinstalei o biosdevname (ele foi removido).

Eu editei / etc / default / grub e adicionei biosdevname = 0 AND ifnames = 0 para o CMDLINE.

Eu refiz a configuração do grub com: grub2-mkconfig -o /boot/grub2/grub.cfg

Também importei os dois arquivos a seguir de uma instalação do CentOS 6.5:

/lib/udev/rules.d/75-persistent-net-generator.rules

/ lib / udev / write_net_rules

(mas estes podem não ter qualquer efeito)

Então eu criei um arquivo chamado 60-net.rules em /etc/udev/rules.d/ com uma linha para cada NIC que eu tenho:

SUBSYSTEM == "net", ACTION == "add", MOTORISTAS ==, ATTR {endereço} == "aa: bb: cc: dd: ee: ff" "*?", ATTR {dev_id} =="0x0", ATTR {type} == "1", NAME="eth1"

(Claro que o MAC ADDRESS 'aa: bb: ...' tem que ser o correto).

Depois disso eu iniciei e funcionou.

    
por 06.03.2015 / 14:08