eth0 和 eth1 在啟動時都分配了相同的 IP
我在 Sun Fire x4140 上有一個物理 SLES 11 SP2 伺服器,它在重新啟動時給我帶來了網路問題。網卡是板載的。
網路在引導過程中顯示為成功,但網路服務(如 nfs)嚴重失敗。這是因為 eth0 和 eth1 都接收相同的配置並且都是 ifup-ed。一旦一切都超時並且我在控制台,ifconfig 顯示 eth0 和 eth1 已啟動並使用相同的 IP 執行。嘗試 ping 該子網中的任何內容都會失敗。重新啟動網路服務可解決此問題。
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
根據建議,我為所有其他未使用的 NIC(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
到實際插入的 NIC(eth0 和 eth3)。在測試重新啟動期間,我看到網路按預期啟動,並且 eth1 和 eth2 按預期說“已跳過”。但是,eth1 仍然在使用 eth0 的配置。我設置
udev_log="debug"
了/etc/udev/udev.conf
,現在我有一堆調試消息/var/log/messages
。 這是 的粘貼,grep eth1 /var/log/messages
但與其他 eth 的 grep 相比,我沒有看到任何突出的東西。更新 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 腳本以在啟動過程的後期重新啟動網路。
你說你沒有 eth1 的配置腳本。為什麼不?是否應該配置?如果是,那麼它應該擁有什麼IP。靜態分配還是 dhcp?
順便說一句,這些是您需要考慮的問題,不一定要在這裡回答。
嘗試為 eth1 創建一個配置,即使它只是一個帶有*ONBOOT=“no”*的最小配置,如果沒有配置文件,suse 可能會做一些瘋狂的預設自動魔法廢話。
使配置文件更具體應該會有所幫助。將以下指令添加到您的 ifcfg-ethX 文件中:
DEVICE=eth0 HWADDR=00:18:4f:8d:85:4a
沖洗、起泡、重複 eth3 等
您也可以(應該?)為 eth1 等添加配置文件:
DEVICE=eth1 HWADDR=00:18:4f:8d:85:4b ONBOOT=no