Назад | Перейти на главную страницу

eth0 и eth1 назначали одинаковый IP-адрес при загрузке

У меня есть физический сервер SLES 11 SP2 на Sun Fire x4140, который вызывает у меня проблемы с сетью при перезагрузке. Сетевые карты есть на борту.

Во время загрузки сеть кажется успешной, но сетевые службы, такие как nfs, терпят неудачу. Это связано с тем, что eth0 и eth1 получают одинаковую конфигурацию и оба обновлены. Когда все время истекает и я нахожусь в консоли, ifconfig показывает, что eth0 и eth1 работают и работают с одним и тем же IP. Попытка проверить связь с чем-либо в этой подсети не удалась. Перезапуск сетевой службы устраняет проблему.

eth0 - это правильный сетевой адаптер, который должен быть настроен как первичный согласно MAC-адресу.

Вопрос: Что заставляет eth1 запускаться с той же конфигурацией, что и eth0 ??

У меня нет сценария конфигурации для 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

Кстати, eth3 также настроен с IP-адресом в другой подсети, но это не вызвало никаких проблем. К вашему сведению, используемый модуль ядра 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"

Вот eth3 на случай, если вам нужно его увидеть:

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"

Возможно, что-то связано с udev? 70-persistent-net-rules На мой взгляд, это нормально, но я могу не полностью его понять.

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"

Есть ли другие мысли о том, что может вызвать это?

ОБНОВЛЕНИЕ 1

По предложениям я дал конфигурацию всем другим сетевым адаптерам не используется (eth1 и eth2) например вот 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'

и добавил конкретные HWADDR к фактически подключенным сетевым адаптерам (eth0 и eth3). Во время тестовой перезагрузки я вижу, что сеть работает, как и ожидалось, а eth1 и eth2 говорят «пропущено», как и ожидалось. Однако eth1 все еще запускается с конфигурацией eth0.

Я установил udev_log="debug" в /etc/udev/udev.conf, и теперь у меня есть куча отладочных сообщений в /var/log/messages. Вот паста из grep eth1 /var/log/messages, но я не вижу ничего, что выделялось бы при сравнении с grep других eth.

ОБНОВЛЕНИЕ 2

Думая, что это проблема udev, я изменил /lib/udev/rules.d/75-persistent-net-generator.rules и сделал 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"

После перезагрузки это сделало именно то, что я хотел (сгенерировал правила для eth0, eth3), но это не решило проблему. eth1 все еще поднят. Есть ли способ отладить весь процесс загрузки, например strace? Я понятия не имею, откуда это взялось.

В качестве повязки я добавляю rc-скрипт для перезапуска сети в конце процесса загрузки.

Более конкретная конфигурация файлов конфигурации должна помочь. Добавьте в файлы ifcfg-ethX следующие директивы:

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

Промыть, вспенить, повторить для eth3 и т. Д.

Вы также можете (должны?) Добавить файлы конфигурации для eth1 и т. Д .:

DEVICE=eth1
HWADDR=00:18:4f:8d:85:4b
ONBOOT=no

вы говорите, что у вас нет сценария конфигурации для eth1. почему нет? он должен быть настроен или нет? если да, то какой IP у него должен быть. статические выделения или dhcp?

это вопросы, над которыми вы должны подумать, кстати, не обязательно отвечать здесь.

попробуйте создать конфигурацию для eth1, даже если она минимальная с ONBOOT = "нет", suse может творить какую-то безумную автоматическую чушь по умолчанию, если нет файла конфигурации.

Попробуйте добавить:

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

к /etc/sysconfig/network-scripts/ifcfg-eth0. Вы также можете создать ifcfg-eth1 который содержит что-то вроде этого:

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

По крайней мере, на RHEL, который просто вызовет интерфейс без IP-конфигурации, и сетевые сценарии инициализации выглядят аналогично SuSE 11. Другое решение, касающееся сетевой конфигурации SuSE, - очистить 70-persistent-net.rules с чем-то вроде:

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

Это очистит правила udev и скажет init использовать файлы ifcfg-eth * для идентификации интерфейса.

Мне не удалось определить причину этой загадки двух сетевых адаптеров, настроенных на один и тот же IP-адрес и подсеть при загрузке.

Однако окончательным решением проблемы было перемещение кабеля от первого сетевого адаптера ко второму сетевому адаптеру, то есть от eth0 к eth1. Затем я настроил ifcfg-eth1 и "ненастроил" ifcfg-eth0. Теперь мои сетевые и сетевые сервисы подходят идеально.

Я чувствую, что это может быть forcedeth модуль или, возможно, проблема с BIOS, но я не буду тратить на это больше времени, поскольку в наши дни мы создаем серверы с совершенно другим оборудованием и переходим с SLES на CentOS, поэтому я не ожидаю, что проблема снова проявится .