背景:做linux下分布式测试的时候,重新安装了两个linux虚拟机,结果分布式脚本没有做好,分布式也没有做成。
今天想练练linux命令,打开vmware,启动linux1 虚拟机,使用ifconfig -a,查看ip,结果没有网卡eth0显示,也没有ip,显示成了eth2。
我想着其他虚拟机会不会这样呢,又启动了linux2 虚拟机,使用ifconfig -a,查看ip,结果显示网卡eth0了,但是没有显示ip。
好气哦,以前用得好好的啊。。。。。开始问题查找~
一、使用ifconfig -a 显示了成了网卡eth2,但是没有ip显示 。
原因:
很多Linux distribution使用udev动态管理设备文件,并根据设备的信息对其进行持久化命名。udev会在系统引导的过程中识别网卡,将mac地址和网卡名称对应起来记录在udev的规则脚本中。而对于新的虚拟机,VMware会自动为虚拟机的网卡生成MAC地址,当你克隆或者重装虚拟机软件时,由于你使用的是以前系统虚拟硬盘的信息,而该系统中已经有eth0的信息,对于这个新的网卡,udev会自动将其命名为eth1(累加的原则),所以在你的系统启动后,你使用ifconfig看到的网卡名为eth1。
解决:
如何恢复到eth0?
在fedora中,udev记录网络规则的脚本为:/etc/udev/rules.d/70-persistent-net.rules
[user@localhost ~]$ vi /etc/udev/rules.d/70-persistent-net.rules
打开该文件,这时你会发现,里面有eth0,eth1,eht2三个网卡的信息,但实际上你ifconfig时只能发现eth2一个网卡的信息,这时因为eth0根本就不存在。
方法一:将其中eth0的信息删掉,并将eth1信息中的设备名改为eth0,重启系统,你看到的网卡就是eth0了。
方法二:由于系统默认的启动网卡是eth0,把eth2更改为eth0。调换下顺序。然后重启网络服务 :service network restart
方法三:或者删掉其中所有的信息重启系统udev会帮你发现新的设备的。(我用此方法)
修改完之后,启动eth0网卡:ifconfig eth0 up
然后重启网络服务:service network restart
二、
写一半发现各种方法并没有解决问题,靠,整了半天了~