自分はLinuxをVMWare上でいつも使っているが、VMWareの便利な機能としてクローン機能がある。しかし、このクローン機能で、面倒くさいトラブルにはまってしまった。
【NICが有効化できないときの対処】
●トラブル事象
一言でいうと、ネットワークがつながらない。詳細事象は以下のとおり。
①ifconfigコマンドを実行しても、ループバックアドレスしか表示されない。
②ifupコマンドでNICを有効化すると以下のエラーが発生
Device eth0 does not seem to be present, delaying initialization.
②ifconfig -aコマンド を実行すると、eth0ではなく何故かeth1が表示される
※備考
ifconfig(オプションなし):起動しているNICのみの情報を表示
ifconfig -a :存在するNIC全ての情報を表示
●原因
VMWareのクローンを作成した際、NICの設定がオリジナルのままになっていたため。ネットワーク起動スクリプトやudevルールファイルに、誤ったMACアドレスが設定されていた。
●対処
①以下のネットワーク起動スクリプトを編集する(NICが複数ある場合はその分全て確認)
/etc/sysconfig/network-scripts/ifcfg-eth0
→HWADDRの項目があれば、削除、もしくはifconfig -aで表示される正しいMACアドレスを記載する。
②以下のudevルールファイルを編集する
/etc/udev/rules.d/70-persistent-net.rules
→記述されている設定を全て削除。削除しても、NIC有効化のタイミングでまた更新される。
③NIC再起動
※今回は①の対処は不要であった。
●確認環境
CentOS6.0 x86_64(最小構成インストール)
●参考
・25.3.3. サブチャンネルのマッピングとネットワークデバイス名
http://docs.redhat.com/docs/ja-JP/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/ap-s390info-Adding_a_Network_Device-Mapping_Subchannels_and_network_device_names.html・NIC の設定にMACアドレスを入れないと入れ替わってしまう
http://zephel.com/archives/linuxunix/netwrork/※/etc/modules.confが存在するディストリビューションはこっちを参考
●関連
・Linuxでのトラブル「Device eth0 has different MAC address than expected, ignoring」
http://192168111.blog71.fc2.com/blog-entry-9.html※上記はkudzuがインストールされている場合に使える対処。今回の方法のほうが確実だね
●実行例
[root@localhost ~]# ifconfig ※トラブル事象①
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
[root@localhost ~]# ifup eth0 ※トラブル事象②
Device eth0 does not seem to be present, delaying initialization.
[root@localhost ~]# ifconfig -a ※トラブル事象③
eth1 Link encap:Ethernet HWaddr 00:0C:29:65:D7:23
inet addr:192.168.111.10 Bcast:192.168.111.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:521 errors:0 dropped:0 overruns:0 frame:0
TX packets:311 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:51436 (50.2 KiB) TX bytes:28703 (28.0 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 ※対処①(今回はHWADDRの項目がないため変更なし)
DEVICE="eth0"
NM_CONTROLLED="yes"
ONBOOT="yes"
BOOTPROTO="static"
IPADDR="192.168.111.10"
NETMASK="255.255.255.0"
GATEWAY="192.168.111.2"
[root@localhost ~]# cat /etc/udev/rules.d/70-persistent-net.rules ※udevのルール確認。
# 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 0x8086:0x100f (e1000) (custom name provided by external tool)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:65:d7:03", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
# PCI device 0x8086:0x100f (e1000) (custom name provided by external tool)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:65:d7:23", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
# PCI device 0x8086:0x100f (e1000) (custom name provided by external tool)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:65:d7:23", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
※上記を見ると、1つのNICに対して何故か3つの設定が記述されていた。3つのうち1番上はこのマシン上に存在しないMACアドレスのNICである。これはオリジナルのVMにあったNICの設定である)
[root@localhost ~]# vi /etc/udev/rules.d/70-persistent-net.rules ※対処②(上記3つのルールを全て削除する)
[root@localhost ~]# /etc/init.d/network restart ※対処③
インターフェース eth0 を終了中: [ OK ]
ループバックインターフェースを終了中 [ OK ]
ループバックインターフェイスを呼び込み中 [ OK ]
インターフェース eth0 を活性化中: [ OK ]
[root@localhost ~]# ifconfig ※結果の確認。
eth0 Link encap:Ethernet HWaddr 00:0C:29:65:D7:23
inet addr:192.168.111.10 Bcast:192.168.111.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:521 errors:0 dropped:0 overruns:0 frame:0
TX packets:311 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:51436 (50.2 KiB) TX bytes:28703 (28.0 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
[root@localhost ~]# cat /etc/udev/rules.d/70-persistent-net.rules ※udevルールファイルの更新を確認
# 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 0x8086:0x100f (e1000) (custom name provided by external tool)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:65:d7:23", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
- 2011/07/19(火) 04:57:50|
- Linux/Unix
-
| トラックバック:1
-
| コメント:1
ここかぁーー!! って感じでした、助かりました^^;
>②以下のudevルールファイルを編集する
>/etc/udev/rules.d/70-persistent-net.rules
ちなみに当方はXenServer-5.6.1で確認しました。
- 2011/07/29(金) 23:03:28 |
- URL |
- くろえる #-
- [ 編集 ]
自分用メモCentOS6 ミニマルでインストールそのままVMwareでフルクロ...
- 2012/04/17(火) 20:41:45 |
- kaiman++ 悔い無く過ごす!