环境:

VMware workstation 10  +  CentOS 6.5

经过测试, CentOS 7.x 不存在该问题,仅 CentOS 6.x 系列存在。

故障:

为了方便,直接偷懒通过VMware workstation10的克隆功能,能够快速创建一个虚拟机。启动新创建的虚拟机,发现网卡无法使用。使用ifconfig命令,只有回环网卡:

[root@localhost ~]# ifconfig -a

然后,我重启网络服务,报以下错误:

[root@localhost ~]# service network restart
Bringing up interface eth0: Device eth0 does not seem to be present, delaying initialization.   [FAILED]
Bringing up interface eth1: Device eth1 does not seem to be present, delaying initialization.   [FAILED]

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

udev将MAC与网卡名称的对应关系保存在 /etc/udev/rules.d/70-persistent-net.rules中。

[root@localhost ~]# vim /etc/udev/rules.d/70-persistent-net.rules

再看一下我们网卡配置文件:

[root@localhost ~]# grep HWADDR /etc/sysconfig/network-scripts/ifcfg-eth*

问题推测:

从上面的文件可以看出,udev的配置文件,与网卡配置文件ifcfg-eth*记录的MAC地址不一致。导致了前面提到的网络故障。

因为基本系统的网络相关配置都是基于eth0的,如果基于此克隆虚拟机继续克隆或复制新的虚拟机,网卡的标识每一次都会自动加1变成eth1(第二次克隆会变成eth2),dmesg却显示内核只识别到网卡eth0。

原因分析

很多Linux distribution使用udev动态管理设备文件,并根据设备的信息对其进行持久化命名。例如在CentOS中,udev会在系统引导的过程中识别网卡,将mac地址和网卡名称对应起来记录在udev的规则脚本中。但是通过VMware进行克隆,VMware会再自动重新生成虚拟机的MAC地址。这样,由于基本系统的虚拟机已经记录了原始虚拟机的网卡mac地址对应于网卡eth0,而在克隆出的虚拟机中由于mac地址发生改变,udev会自动将该mac对应于网卡eth1(累加的原则)。以此类推,udev会记录所有已经识别的mac与网卡名的关系,所以每次克隆网卡名称会自动加1,而其实kernel仅仅只识别到一张网卡,跟网卡名相关的网络配置也未发生任何变化。

  • udev将mac与网卡名称的对应关系保存在 # vi /etc/udev/rules.d/70-persistent-net.rules中,使用VMware克隆功能,会为新克隆的虚拟机创建一个与原始虚拟机网卡不同的MAC地址。对于CentOS这样的Linux系统,会把运行的网卡MAC地址记录到 /etc/udev/rules.d/70-persistent-net.rules文件中,这样克隆好的新系统里会多保存一个这样的记录。

  • 网卡名相关的网络配置也未发生任何变化 # vi /etc/sysconfig/network-scripts/ifcfg-eth0。当新系统启动时,由于VMware已经为其配置了不同的MAC地址,因此系统会在启动扫描硬件时,把这个新的MAC地址的网卡当作是eth1,并且增加记入上述文件中。而此时配置文件中的/etc/sysconfig/network-scripts/ifcfg-eth0里记录的还是原来的MAC地址,而这个MAC地址在新系统里是不存在的,所以无法启动。

  • 在新系统里,把rules文件里记录的老MAC对应的那个eth0一行删除掉,然后把新MAC对应的eth1的名字改为eth0。然后在ifcfg-eth0文件里把HDADDR的值改为新的MAC地址。这样rules和ifcfg-eth0就彼此对应(rules里的eth0对应ifcfg-eth0文件名,rules里的mac对应ifcfg-eth0文件里的HDADDR)好了。

  • 虚拟机的配置文件:安装目录下的 *.vmx 配置文件,其MAC地址由VMware自动维护,保留最新创建的MAC地址

解决办法:

1、首先编辑udev的配置文件,删除原始的两条记录eth0和eth1, 然后再把eth3及eth4改为eth0,eth1即可

[root@localhost ~]# vi /etc/udev/rules.d/70-persistent-net.rules

2、然后,编辑 /etc/sysconfig/network-scripts/ifcfg-eth*, 根据实际情况

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

将HWADDR修改为70-persistent-net.rules中eth0对应的MAC地址,使二者保持一致。并注释UUID。

3、重启系统: reboot

4、或者不用重启系统: start_udev , 然后重新启动网络服务: service network restart

    start_udev # 命令重启 udev守护进程
本操作会对所有的设备重新查询规则目录下所有的规则文件,然后执行所匹配的规则里的行为.
通常使用该命令让新的规则文件立即生效.

总结上述操作,处理步骤

步骤1:将克隆出的虚拟机中只要删除与 NAME="eth0" 相关的行,并把下行的 eth1 的改为 eth0 ;并记录一下 ATTR{address} 的值;

步骤2:记录此克隆机MAC地址,然后编辑 # vi /etc/sysconfig/network-scripts/ifcfg-eth0  修改 HWADDR 并注释 UUID

步骤3: 重启系统;

下面提供一个脚本,自动处理上述步骤:

### 注意,需要根据实际的网卡数目进行相应的调整echo "Updating 70-persistent-net.rules with eth0..."
sed -i '7,9d' /etc/udev/rules.d/70-persistent-net.rules
sed -i s/eth1/eth0/g /etc/udev/rules.d/70-persistent-net.rulesecho "Updating ifcfg-eth0 with new MAC address..."
newmac=`ip a | tail -n 1 | awk '{print $2}'`
oldmac=`grep HWADDR /etc/sysconfig/networking/devices/ifcfg-eth0 | awk -F "=" '{print $2}'`
sed -i s/$oldmac/$newmac/g /etc/sysconfig/networking/devices/ifcfg-eth0
cp /etc/sysconfig/networking/devices/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0echo "Rebooting the OS"
sleep 2
reboot

原文参考:http://heylinux.com/archives/2416.html

后记

后来,有网友提到一个更简单粗暴的方法:

1、直接删除/etc/udev/rules.d/70-persistent-net.rules配置文件中的mac地址和网卡绑定行,重启后系统也会自动识别加载新网卡的mac信息的。

或者

2、通过VMware虚拟机软件,将原有的网卡删除,然后重新添加网卡

转载于:https://blog.51cto.com/skypegnu1/1436233

VMware (CentOS 6.x)克隆导致的网卡问题相关推荐

  1. Centos 6 克隆导致网卡eth0变成eth1、及修改网卡名的方法

    centos 6.6 克隆导致eth0 变成eth1的修改方法 解决问题如下: 1.在grub里增加biosdevname=0的启动参数,形如 kernel /vmlinuz-2.6.32-131.2 ...

  2. 3分钟教你搞定VMware 克隆虚拟主机之Centos系列虚拟机克隆[⭐建议收藏⭐]

    文章目录 VMware Centos 7 如何克隆虚拟主机 关于作者 前言 一.手把手教你创建一台 虚拟主模板 1.1 创建一台Centos 7 虚拟机 1.2 为什么 克隆虚拟主机 二 . 制作Ce ...

  3. VMware克隆出来的网卡错误

    VMware克隆出来的网卡错误 在VMware里克隆出来的CentOS Linux,ifconfig...没有看到eth0..然后重启网卡又报下面错误. 解决办法: 1,打开vim /etc/udev ...

  4. linux无法找到网卡6,CentOS 6/7克隆主机网卡无法启动解决

    1,CentOS6和Red Hat Linux6左右的版本 第一,先找到网卡的mac地址,将其配置在配置文件中,重新启动网卡. 故障产生的原因: 由于克隆虚拟机,vmware只是修改了虚拟机的名字等信 ...

  5. 克隆虚拟机导致的网卡出错,service network restart失败

    克隆虚拟机导致的网卡出错,service network restart失败 1.如果在克隆之前没有删除 /etc/udev/rules.d/70-persistent-net.rules文件,就会出 ...

  6. VMware的快照和克隆总结

    多重快照功能简介: 快照的含义:对某一个特定文件系统在某一个特定时间内的一个具有只读属性的镜像.当你需要重复的返回到某一系统状态,又不想创建多个虚拟机的时候,就可以使用快照功能.其实,快照并不是VMw ...

  7. 克隆虚拟机启动网卡提示错误 Device eth0 does not seem to be present, delaying initialization...

    错误原因: 克隆的Linux系统在新的机器上运行,新服务器网卡物理地址已经改变.而/etc/udev/rules.d/70-persistent-net.rules这个文件确定了网卡和MAC地址的信息 ...

  8. VMware CentOS镜像 虚拟机装机 保姆级教程

    VMware CentOS镜像 虚拟机装机 保姆级教程 总目录 提示:保姆级教程,猴子也能学得会. 前言 一.VMware 下载 安装 1.下载 2.安装 二.CentOS镜像 下载 (二选一) 1. ...

  9. VMware CentOS网络配置设置简单NAT网络

    Vmware CentOS虚拟机设置简单NAT网络 前提 NAT模式 测试 前提 win+R进入运行模式写入ncpa.cpl,回车,进入网络连接 查看自己是否有VMware Network Adapt ...

最新文章

  1. 如何给一个空白磁盘安装操作系统
  2. android格式化手机号正则,Android验证手机号的正则表达式
  3. linux-squirrel
  4. c语言求佩尔方程的解设计思路,c语言版 佩尔方程求最小正整数解及第k解(矩阵快速幂)...
  5. 浙江linux学习,浙江大学现代教务管理系统
  6. vivo NEX 3探索5G手机极致新形态:99.6%瀑布屏让左右无界 未来无限
  7. ajax传图片的方法
  8. Flex4序列号 adobe flash builder 4 序列号
  9. TreeSet 和 TreeMap 排序
  10. 2018杭州云栖大会参会总结
  11. 在windows服务器部署mysql,局域网内操作
  12. python工程师怎么考-【一个合格的Python工程师需要达到怎样的编程水平】
  13. 饥荒搜索服务器未响应,饥荒联机版代码用不了?东西无法捡起,怪物打不了?试试这个方法...
  14. 开源社区“大牛”关于“开源”的大讨论
  15. python epub 精品_如何利用Python打包HTML页面为epub?
  16. Mentor Graphics LP Wizard 软件使用----创建零件BGA封装库
  17. 程序员的三大优点:懒惰、急躁和傲慢
  18. Chrome 屏蔽https中访问http(不安全内容)
  19. 利用USRP探索软件无线电(2)
  20. jQuery实现图片卡片层叠式切换效果

热门文章

  1. 马斯克又有新麻烦上身!前员工将他告到美国证监会,曝出一大堆惊天八卦
  2. AlphaZero完胜三大世界冠军棋类程序:5000个TPU、自学一天
  3. Xamarin自定义布局系列——PivotPage(多页面切换控件)
  4. python获取指定日期的前N天日期和后N天日期
  5. 聊天机器人中的 A/B 测试
  6. [转]nodejs npm常用命令
  7. android4.0蓝牙使能的详细解析 (转载)
  8. 为Laravel的artisan指令增加bash脚本
  9. centos下CMAKE源码安装MYSQL5.5.23
  10. 金属商务本-戴尔Vostro成就3450评测