Como faço para controlar o pedido de interfaces de rede?

6

Estou tentando configurar uma máquina com 3 NICs, os dois primeiros são controladores GbE internos, o terceiro é um controlador de 10GbE. Através do NetworkManager, configurei a 'primeira' GbE NIC (que na época era eth0) para usar um endereço IP estático. A segunda NIC GbE será configurada em uma rede privada separada e a NIC 10GbE não está sendo usada no momento.

Quando eu reinicio a máquina, a ordem de eth0, eth1, eth2, etc. parece ser aleatória. Ocasionalmente o eth0 pega o endereço IP estático, outras vezes é reconhecido como eth1 e pega um endereço DHCP. Nesse caso, preciso trocar os cabos antes de reconfigurar corretamente.

Como posso controlar a ordem para que um NIC físico específico apareça como eth0 ou eth1 sem alterar a próxima reinicialização?

    
por Andy 21.07.2014 / 17:48

5 respostas

3

O método ainda suportado no RHEL 6 é via regras de dispositivo do udev.

Deve haver um /etc/udev/rules.d/70-persistent-net.rules gerado automaticamente que force a nomenclatura consistente:

# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.

# PCI device 0x8086:0x10c9 (igb)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:25:90:1d:d1:30", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x8086:0x10c9 (igb)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:25:90:1d:d1:31", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

Se não, você pode usar uma sintaxe semelhante com seus próprios endereços MAC para forçar a nomenclatura de dispositivos persistentes.

    
por 21.07.2014 / 17:59
4

Talvez alguém ache essas informações úteis: Em primeiro lugar, no RHEL7, você não precisa reinstalar o sistema para alterar a convenção de nomenclatura da interface.

Nota: os parâmetros de inicialização são obrigatórios:

a) With no parameters or net.ifnames=1 used, the names will use systemd Predictable Network Interface Names
b) With biosdevname=1 used, the names will be managed by udev (technically systemd-udev) using Consistent Network Device Naming
c) With net.ifnames=0 and biosdevname=0 both specified, traditional ("kernel names") ethX names will be used; if udev rules are also added they can rename the interfaces to anything except eth

Exemplo:

Edit /etc/default/grub
append selected params eg.
biosdevname=0 net.ifnames=0
grub2-mkconfig -o /boot/grub2/grub.cfg

E no caso do tópico principal: Quando você precisa ajustar a ordem de todas as interfaces, o procedimento é fácil:

mv /etc/udev/rules.d/70-persistent-net.rules /root/ 
(New udev rules will be generated at next boot)

Adjust configuration files in
/etc/sysconfig/network-scripts/ifcfg-eth*
[Edit device name, connection name, HWADDR etc.] 

Reboot and then udev will generate rules basing on configuration files - if you did it properely.
    
por 29.12.2016 / 12:53
4

A maneira suportada para fazer isso, para o RHEL 6 e no futuro, é nomenclatura de dispositivo de rede consistente . Isso garante que todas as interfaces obtenham um nome significativo baseado no hardware e permaneça o mesmo durante toda a vida útil do sistema (se você não alterar o hardware, de qualquer maneira, e geralmente, mesmo que você o faça).

(Observe que, no RHEL 7, um formato de nomenclatura diferente é usado.)

Para mudar para o RHEL 6, você precisa reinstale o sistema e, ao instalar, você deve passar a opção de linha de comando do kernel biosdevname=1 ao iniciar a mídia de instalação e sempre que inicializar o sistema.

    
por 21.07.2014 / 17:52
2

Como sugerido por RedHat documentação você pode especificar o parâmetro HWADDR=MAC-address em seu arquivo de configuração da interface.

HWADDR=MAC-address where MAC-address is the hardware address of the Ethernet device in the form AA:BB:CC:DD:EE:FF. This directive must be used in machines containing more than one NIC to ensure that the interfaces are assigned the correct device names regardless of the configured load order for each NIC's module. This directive should not be used in conjunction with MACADDR.

    
por 21.07.2014 / 17:52
0

Como mencionado por HBruijn, a ordenação em rhel6 é /etc/udev/rules.d/70-persistent-net.rules. Este arquivo é escrito por / lib / udev / write_net_rules.

Se por algum motivo você precisar de um ordenamento arbitrário e predeterminado de suas interfaces de rede, você pode substituir esse script pelo seu próprio, para criar o arquivo 70-persistent-net.rules. Isso garante que não seja sobregravado.

Você pode obter informações do dispositivo para fazer isso usando

lspci | grep -i ethernet

para obter a lista de dispositivos

ethtool -i ethx
ethtool -P ethx

para obter o MAC-addr de cada um (correlacionar PCI @ / MAC @).

    
por 22.07.2014 / 08:57