Determinando a designação de NIC do endereço PCI

4

Estou no processo de atualização de um sistema legado do RHEL 5.4 para o 5.8. Há três NICs instaladas, cada uma com endereços IP definidos e fiação conectada.

Após a atualização, as placas estão nos mesmos endereços PCI, mas o sistema operacional variou as designações da NIC:

network old  new
net A   eth0 eth1
net B   eth1 eth2
net C   eth2 eth0

Os endereços PCI em uso são 05.03.0 para Net C e os outros dois estão em 03.03.0 e 03.03.1 .

Não há arquivo /etc/udev/rules.d/70-persistent-net.rules .

Existe uma maneira de especificar quais endereços PCI são usados para cada interface?

Atualizar

Encontrei os arquivos /etc/sysconfig/hwconf e /etc/sysconfig/network-scripts/ifcfg-eth? que contêm os valores de endereço IP e MAC. O hwconf também especifica o endereço PCI, mas parece ser reescrito na inicialização.

Eu preferiria ser capaz de especificar as NICs por posição PCI, pois é efetivamente o que é usado para determinar o comportamento em vez do endereço MAC que seria alterado se uma placa diferente fosse usada.

    
por DanS 31.08.2012 / 13:48

2 respostas

4

Geralmente, isso é feito pelo endereço MAC, não pelo endereço PCI.

  1. Se o RHEL 5.8 suportar o arquivo /etc/udev/rules.d/70-persistent-net.rules, você poderá criar um.

    Basta copiar um de outro computador e editá-lo para que o nome correto do dispositivo seja atribuído com base no endereço MAC.

    Tudo o que você realmente precisa nesse arquivo é de 3 linhas como esta: (ignore qualquer quebra de linha, isso é tudo uma linha)

    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:23:cd:b0:23:b9", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

    Altere os endereços ATTR {} e NAME="eth [012]" para adequar suas NICs e seus requisitos.

    Não tenho certeza se o RHEL 5.4 ou 5.8 o possui, mas talvez valha a pena verificar se você tem um script chamado / lib / udev / write_net_rules - se tiver, basta executá-lo, ele irá gerar o 70 -persistent-net.rules, então apenas edite o NAME para cada NIC.

    Você pode obter os endereços MAC com ifconfig | grep 'eth.*HWaddr' e, em seguida, copiá-los e colá-los no arquivo 70-persistent-net.rules.

    Quando isso for feito, você poderá reinicializar ou desativar todas as suas interfaces, descarregar seus módulos de driver de kernel, recarregar os módulos (as interfaces agora terão seus nomes de dispositivos atribuídos) e, em seguida, restaurar suas interfaces.

  2. Antes do udev e do arquivo 70-persistent-net.rules, eu costumava usar um programa chamado ifrename do pacote wireless-tools (ele funciona em qualquer NIC, não apenas em wireless). Ele usa um arquivo / etc / iftab para renomear as interfaces de rede pelo endereço MAC. Isso funcionou principalmente, mas foi menos confiável do que o método do udev.

    Não tenho ideia se está empacotado para RHEL ou não, mas você pode encontrá-lo em link

  3. Eu não usei este método para uma NIC, mas também é possível usar o udev para nomear persistentemente dispositivos baseados em endereço PCI. Primeiro, exclua o /etc/udev/rules/70-persistent-net.rules se ele existir. Em seguida, crie um novo arquivo em / etc / udev / rules - talvez chame-o 70-persistent-net-by-pci.rules

    Adicione linhas como as seguintes:

    ACTION=="add", SUBSYSTEM=="net", BUS=="pci", KERNELS=="0000:03:03.0",    NAME="eth0"
    ACTION=="add", SUBSYSTEM=="net", BUS=="pci", KERNELS=="0000:03:03.1",    NAME="eth1"
    ACTION=="add", SUBSYSTEM=="net", BUS=="pci", KERNELS=="0000:05:03.0",    NAME="eth2"
    

    Em alguns Linuxes mais novos (por exemplo, Ubuntu 13.04 ou posterior), é necessário remover o qualificador de BUS, de modo que as regras devem se parecer com:

    ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:03:03.0",    NAME="eth0"
    

    Em seguida, reinicie ou descarregue & recarregue os módulos do driver conforme descrito acima.

    Você pode encontrar mais detalhes no link - mas a página é bastante antigo e refere-se ao comando obsoleto udevinfo . Use udevadm info em vez disso

por 31.08.2012 / 14:28
0

No RedHat 5, o MAC e o nome da interface devem ser suficientes. Eu nunca lidei com o udev ou com designadores PCI.

Defina HWADDR para o MAC e DEVICE para o nome do dispositivo de destino.

Quanto ao nome em / etc / sysconfig / network * , você pode usar um alias significativo para os nomes de configuração ifcfg-ALIAS .

    
por 31.08.2012 / 23:13