eth0 и eth1 оба назначены один и тот же IP при загрузке

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

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

eth0 - это правильный NIC, который должен быть настроен как первичный для 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, но я не вижу ничего, что выделяется при сравнении с другими людьми.

ОБНОВЛЕНИЕ 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-скрипт для перезагрузки сети в конце процесса загрузки.

4 ответа

Решение

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

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

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

Создание конфигурационных файлов должно помочь. Добавьте следующие директивы в ваши файлы 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 = "no", 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* для идентификации интерфейса.

Другие вопросы по тегам