虚拟机复制上网问题 Device eth0 has different MAC address than expected, ignoring.

来源:互联网 发布:高仿永硕e盘源码下载 编辑:程序博客网 时间:2024/05/01 12:53
1.当虚拟机被克隆之后,原来的在基本系统中的网卡 eth0 在新系统中就没有了,使用 ifconfig -a 会发现只有 eth1。因为基本系统的网络配置都是基于 eth0 的,eth1 没有网络相关配置,此时要正常使用改虚拟机中的网络,只有添加 eth1 的网络配置,这样每次都要修改网卡配置,这样在做多 linux 系统测试的时候很不方便。更进一步,如果基于此克隆机继续克隆货复制新的虚拟机,网卡的标识每次都会自动加1(第二次克隆编程 eth2)。dmesg 却显示内核只识别到网卡 eth0。原因分析:Linux 的很多版本使用 udev 动态管理设备文件,并根据设备的信息对其进行持久化命名。udev 会在系统引导过程中识别网卡,将 mac 地址和网卡名称对应起来记录在 udev 的规则脚脚本中。而VMware会自动生成虚拟机的mac地址。这样,由于基本系统的虚拟机已经记录了改虚拟机的网卡 mac 地址对应于网卡 eth0,而克隆出来的虚拟机中由于 mac 地址发生改变,udev 会自动将该 mac 对应于eth1,以此类推,udev会记录所有已经识别的 mac 于网卡名的关系,所以每次克隆网卡名就会自动增加1,而其实 kernel仅仅识别到一张网卡,跟网卡名相关的网络配置也未发送任何变化。

解决办法:
1.查看当前虚拟机的当前的 mac 地址
1.1.vi /etc/udev/rules.d/70-persistent-net.rules
1.2.找出其中 NAME 最大的那个,然后把其他的都删掉,并修改 NAME="eth0"
例如下面这种情况
# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:61:c6:af", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:3c:c7:1a", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
修改后为:
# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:3c:c7:1a", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
1.3.修改 /etc/sysconfig/network-scripts/ifcfg-eth0 配置文件
修改 HWADDR=00:0C:29:61:C6:AF 为上班的 00:0c:29:3c:c7:1a 即可。
然后重启虚拟机就可以了。

0 0
原创粉丝点击