先说一下发生这个问题时的环境
虚拟机 = WMware Workstation 8.0.2 build-591240
OS = CentOS 6.3 x86_64
发生这个问题时的条件
安装好 CentOS 并进行一些配置,包括网卡ip等,然后进行clone(full clone)虚拟机,在启动克隆好的虚拟机时问题出现了,在启动画面有2个错误一闪而过,登陆系统后用 ifconfig 查看,发现只有 loopback,而 eth0 和 eth1 都消失了,于是想到启动时的那个错误画面,查看 /var/log/messages 时发现了这个问题的详细错误信息,如下:
kernel: udev: renamed network interface eth1 to eth2
kernel: udev: renamed network interface eth0 to eth3
看这个提示,就字面意思是网络接口 eth1 被重命名为 eth2,eth0 被重命名为 eth3,而导致这个问题的程序是 udev,所以可以去 /etc/udev/rules.d/*.rules,经过查看确实发现了一个文件 70-persistent-net.rules 内容如下:
# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:6a:66:7f", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:6a:66:89", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:85:39:61", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"
# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:85:39:57", ATTR{type}=="1", KERNEL=="eth*", NAME="eth3"
这个文件的前两部分和原机(安装机而非克隆的机器)一样,mac 地址是一样的,问题就出在这里了,把这个文件删除:
rm -f /etc/udev/rules.d/70-persistent-net.rules
重启虚拟机,ok 搞定。当然了,ip 还是需要修改的,否则会和原机冲突的。
这个文件删除后,udev会自动构建。
参考文章:http://blog.giuseppeurso.net/udev-renamed-network-interface-eth-to-eth/index.html