RHEL6 虚拟机克隆网络问题,未解决

来源:互联网 发布:js 对联式浮动广告 编辑:程序博客网 时间:2024/05/18 20:06

装完虚拟机的系统,配置了一部分,为避免重复劳动,故找到安装后的文件,copy了一份,果然可以,两个虚拟机可以同时开启,发现了一个问题,eth0丢失了,重启之后就没了,还得手动ifconfig eth0 up ,网上查阅资料,如下:

------------------------------------------------------------------------------------------------------------------------

例如在Debian etch中,udev会在系统引导的过程中识别网卡,将mac地址和网卡名称对应起来记录在udev的规则脚本中。而VMware会自动天生虚拟机的 mac地址。这样,由于基本系统的虚拟机已经记录了该虚拟机的网卡mac地址对应于网卡eth0,在克隆出的虚拟机中由于mac地址发生改变,udev会 自动将该mac对应于网卡eth1。以此类推,udev会记录所有已经识别的mac与网卡名的关系,所以每次克隆网卡名称会自动加1,而实在kernel 仅仅只识别到一张网卡,跟网卡名相关的网络配置也未发生任何变化。解决方案: 网络搜索发现在Debian etch下,udev将mac与网卡名称的对应关系保存在/etc/udev/rules.d/z25_persistent-net.rules中,在 克隆出的虚拟机中只要删除跟NAME="eth0"相关的行并重启系统即可。例如在Debian etch中删除如下两行: # PCI device 0x1022:0x2000(pcnet32)SUBSYSTEM=="net",DRIVERS=="? *",ATTRS{address}=="00:0c:29:4c:46:01",NAME="eth0" 在我的fedora9 下修改/etc/udev/rules.d 下的 70-persistent-net.rules 文件 删除 # Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rule written by anaconda) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:ad:06:2a", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" 然后把eth1对应的哪一行的"eth1"修改为"eth0"即可。另外一种方法是:把里面的内容都删除,然后重新启动,系统也会重新发现网卡硬件,重新 产生该文件。


用VirtualBox的vboxmanager克隆的虚拟机,操作系统RHEL6,启动后发现网卡不能用了。重启网络服务,报以下错误:
Bringing up interface eth0: Device eth0 does not seem to be present, delaying initialization.

快捷解决办法:
rm -rf /etc/udev/rules.d/70-persistent-net.rules 然后重启系统

分析:
在RHEL5里也发生类似事情,因为复制虚拟机MAC会重新生成,但是操作系统的MAC却写在ifcfg-ethx里,造成了不一致,所以不能启动网络接口,在RHEL5里可以使用kudzu或者注释网卡配置文件的MAC字段来解决这个问题。但是在RHEL6里,kudzu已经被hal服务取代了。虽然lspci能够正常认到网卡,但是却无法使用/etc/init.d/network restart来启动服务。尝试注释ifcfg-eth0的MAC字段,还是报错。查看了下udev的规则,发现了问题的所在。

[root@Oracle ~]# 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.

# net device () (custom name provided by external tool)
SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”08:00:27:16:31:11″, ATTR{type}==”1″, KERNEL==”eth*”, NAME=”eth0″

# net device ()
SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”08:00:27:32:66:63″, ATTR{type}==”1″, KERNEL==”eth*”, NAME=”eth1″
[root@Oracle ~]#

原来UDEV这里把克隆前的MAC当成了当前虚拟机的eth0 MAC,而重新生成的08:00:27:32:66:63是eth1的MAC。

解决这个问题,只要删除旧的UDEV配置,修改为:
[root@Oracle ~]# 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.

# net device () (custom name provided by external tool)
SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”08:00:27:32:66:63″, ATTR{type}==”1″, KERNEL==”eth*”, NAME=”eth0″

重启network服务,一切OK
[root@Oracle ~]# /etc/init.d/network restart
Shutting down interface eth0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: [ OK ]
[root@Oracle ~]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 08:00:27:32:66:63
inet addr:172.16.100.3 Bcast:172.16.100.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe32:6663/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:206 errors:0 dropped:0 overruns:0 frame:0
TX packets:203 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:21157 (20.6 KiB) TX bytes:24515 (23.9 KiB)

Virtualbox有这个问题,VMWARE克隆虚拟机应该也是有这个问题的。

-------------------------------------------------------------

但发现一个问题,系统里找不到/etc/udev/rules.d/z25_persistent-net.rules,或其他之类的


解决方法:

找到安装文件,用记事本修改后缀名vmx的文件,其中有MAC地址,将其修改成另外的就可以了

原创粉丝点击