eth0 e eth1 ambos atribuíram o mesmo IP no boot

1

Eu tenho um servidor físico SLES 11 SP2 em um Sun Fire x4140 que está me dando problemas com a rede após a reinicialização. As NICs estão a bordo.

A rede aparece bem sucedida durante a inicialização, mas os serviços de rede, como o nfs, falham. Isso ocorre porque eth0 e eth1 estão recebendo a mesma configuração e são ambos ifup-ed. Uma vez que tudo expira e eu estou no console, ifconfig mostra que eth0 e eth1 estão em UP e rodando com o mesmo IP. A tentativa de pingar qualquer coisa nessa sub-rede falha. Reiniciar o serviço de rede resolve o problema.

eth0 é o NIC correto que deve ser configurado como primário, de acordo com o endereço MAC.

Pergunta: O que está causando o eth1 a ser criado com a mesma configuração que eth0 ??

Eu não tenho um script de configuração configurado para eth1:

banjer@harp:~> ls -la /etc/sysconfig/network/
total 104
drwxr-xr-x 6 root root  4096 Jun 11 12:21 .
drwxr-xr-x 6 root root  4096 Apr 10 09:46 ..
-rw-r--r-- 1 root root 13916 Apr 10 09:32 config
-rw-r--r-- 1 root root  9952 Apr 10 09:36 dhcp
-rw------- 1 root root   180 Jun 11 12:21 ifcfg-eth0
-rw------- 1 root root   180 Jun 11 12:21 ifcfg-eth3
-rw------- 1 root root   172 Feb  1 08:32 ifcfg-lo
-rw-r--r-- 1 root root 29333 Feb  1 08:32 ifcfg.template
drwxr-xr-x 2 root root  4096 Apr 10 09:32 if-down.d
-rw-r--r-- 1 root root   239 Feb  1 08:32 ifroute-lo
drwxr-xr-x 2 root root  4096 Apr 10 09:33 if-up.d
drwx------ 2 root root  4096 May  5  2010 providers
-rw-r--r-- 1 root root    25 Nov 16  2010 routes
drwxr-xr-x 2 root root  4096 Apr 10 09:36 scripts

Em uma nota lateral, o eth3 também é configurado com um IP em uma sub-rede diferente, mas isso não causou nenhum problema. FYI o módulo do kernel que está sendo usado é forcedeth .

banjer@harp:~> sudo cat /etc/sysconfig/network/ifcfg-eth0
BOOTPROTO='static'
BROADCAST=''
ETHTOOL_OPTIONS=''
IPADDR='172.21.64.25/20'
MTU=''
NAME='MCP55 Ethernet'
NETWORK=''
REMOTE_IPADDR=''
STARTMODE='auto'
USERCONTROL='no'
ONBOOT="yes"

Aqui está a eth3 caso você precise ver:

banjer@harp:~> sudo cat /etc/sysconfig/network/ifcfg-eth3
BOOTPROTO='static'
BROADCAST=''
ETHTOOL_OPTIONS=''
IPADDR='172.11.200.4/24'
MTU=''
NAME='MCP55 Ethernet'
NETWORK=''
REMOTE_IPADDR=''
STARTMODE='auto'
USERCONTROL='no'
ONBOOT="yes"

Talvez seja algo relacionado ao udev? 70-persistent-net-rules parece OK para mim, mas posso não entender completamente.

banjer@harp:~> cat /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x10de:0x0373 (forcedeth)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:18:4f:8d:85:4c", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"

# PCI device 0x10de:0x0373 (forcedeth)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:18:4f:8d:85:4a", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x10de:0x0373 (forcedeth)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:18:4f:8d:85:4b", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

# PCI device 0x10de:0x0373 (forcedeth)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:18:4f:8d:85:4d", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth3"

# PCI device 0x1077:0x3032 (qla3xxx)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:c1:dd:0e:34:6c", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth4"

Quaisquer outras reflexões sobre o que causaria isso?

UPDATE 1

Por sugestões, eu dei uma configuração para todas as outras NICs não sendo usadas (eth1 e eth2), por exemplo aqui está a eth1:

banjer@harp:/etc/sysconfig/network> sudo cat ifcfg-eth1
BOOTPROTO='static'
BROADCAST=''
ETHTOOL_OPTIONS=''
IPADDR=''
MTU=''
NAME='MCP55 Ethernet'
NETMASK='255.255.255.0'
NETWORK=''
REMOTE_IPADDR=''
STARTMODE='off'
ONBOOT='no'
USERCONTROL='no'

e adicionou o HWADDR específico às NICs que estão realmente conectadas (eth0 e eth3). Durante a reinicialização do teste, vejo a rede aparecer como esperado, e eth1 e eth2 dizem "ignorado" como esperado. No entanto, eth1 ainda está sendo educado com a configuração da eth0.

Defino udev_log="debug" em /etc/udev/udev.conf e agora tenho um monte de mensagens de depuração em /var/log/messages . Aqui está uma pasta de grep eth1 /var/log/messages , mas não vejo nada que se destaque quando comparado a um grep de outras eth's.

UPDATE 2

Pensando que esse é um problema do udev, fiz uma alteração em /lib/udev/rules.d/75-persistent-net-generator.rules e fiz rm /etc/udev/rules.d/70-persistent-net.rules .

# device name whitelist
#KERNEL!="eth*|ath*|wlan*[0-9]|msh*|ra*|sta*|ctc*|lcs*|hsi*", GOTO="persistent_net_generator_end"
KERNEL!="eth[03]|ath*|wlan*[0-9]|msh*|ra*|sta*|ctc*|lcs*|hsi*", GOTO="persistent_net_generator_end"

Após a reinicialização, isso fez exatamente o que eu queria (regras geradas para eth0, eth3), mas não resolveu o problema. A eth1 ainda é criada. Existe uma maneira de depurar todo o processo de inicialização, por exemplo, strace? Eu não tenho ideia de onde isso está vindo.

Como um band-aid, estou adicionando um script rc para reiniciar a rede no final do processo de inicialização.

    
por Banjer 22.06.2012 / 15:33

4 respostas

0

Não consegui determinar a causa por trás desse mistério de duas NICs que estão configurando o mesmo IP e sub-rede na inicialização.

A solução final para o problema, no entanto, foi mover o cabo da primeira NIC para a segunda NIC, ou seja, de eth0 para eth1. Então eu configurei ifcfg-eth1 e "unconfigured" ifcfg-eth0. Agora meus serviços de rede e dependentes de rede surgem perfeitamente.

Tenho a impressão de que pode ser um módulo forcedeth ou talvez um problema de BIOS, mas não gastarei mais tempo com ele, já que estamos construindo servidores com hardware totalmente diferente nos dias de hoje e mudando de SLES para o CentOS, então não espero que o problema se manifeste novamente.

    
por 26.06.2012 / 17:30
2

você diz que não tem um script de configuração para eth1. Por que não? é suposto ser configurado ou não? se for, então qual IP é suposto ter. alocações estáticas ou dhcp?

essas são perguntas para você pensar, btw, não necessariamente para responder aqui.

tente criar uma configuração para eth1, mesmo que seja apenas uma mínima com ONBOOT="no" , o suse pode estar fazendo alguma porcaria automagic insana padrão se não houver arquivo de configuração.

    
por 25.06.2012 / 04:42
2

Tornar os arquivos de configuração mais específicos deve ajudar. Adicione as seguintes diretivas aos seus arquivos ifcfg-ethX:

DEVICE=eth0
HWADDR=00:18:4f:8d:85:4a

Lavar, Ensaboar, Repetir para eth3 etc

Você poderia (deveria?) adicionar arquivos de configuração para eth1 etc também:

DEVICE=eth1
HWADDR=00:18:4f:8d:85:4b
ONBOOT=no
    
por 25.06.2012 / 04:48
1

Tente adicionar:

HWADDR='00:18:4f:8d:85:4a'

para /etc/sysconfig/network-scripts/ifcfg-eth0 . Você também pode criar um ifcfg-eth1 que contenha algo assim:

DEVICE='eth1'
BOOTPROTO='none'
HWADDR='00:18:4f:8d:85:4b'
USERCONTROL='no'
ONBOOT='yes'

Pelo menos no RHEL que abrirá a interface sem configuração de IP, e os scripts de inicialização de rede são semelhantes no SuSE 11. A outra solução relacionada à configuração de rede SuSE é limpar o 70-persistent-net.rules com algo como:

cat < /dev/null > /etc/udev/rules.d/70-persistent-net.rules

Isso irá limpar as regras do udev e dizer ao init para usar os arquivos ifcfg-eth * para identificação da interface.

    
por 25.06.2012 / 04:36