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.