linux复制,网络报错
2015-09-28 10:45
302 查看
我拷贝了过来的Linux虚拟机无法上网,我用ifconfig命令查询了一下发现只有eth1和lo设备,没有eth0。于是我在Google上搜索了一下, 《VMWare克隆或复制Linux虚拟机后eth0找不到的解决方案》 现象描述: 最近装了虚拟机系统是 Centos,为了以后使用方便对虚拟机进行克隆或复制。当使用克隆后的虚拟机时发现原来在基本系统中的网卡eth0到了新系统却没有了,使用ifconfig -a会发现只有eth1。因为基本系统的网络相关配置都是基于eth0的,eth1没有网络相关的配置,此时要正常该虚拟机中的网络,只有添加eth1的网络配置,这样每次都要修改网卡配置在做多Linux系统测试的时候很不方便。更进一步,如果基于此克隆虚拟机继续克隆或复制新的虚拟机,网卡的标识每一次都会自动加1(第二次克隆会变成eth2),dmesg却显示内核只识别到网卡eth0。 原因分析: 很多Linux distribution使用udev动态管理设备文件,并根据设备的信息对其进行持久化命名。例如在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"即可。 另外一种方法是:把里面的内容都删除,然后重新启动,系统也会重新发现网卡硬件,重新产生该文件。 这里补充一点: 用下面命令来实现上述第二种方法也是一样的: cd /etc/udev/rules.d
sudo rm *-net.rules //删除
sudo reboot 本人在用上述方法操作之后,再用ifconfig查看,确实找到了eth0设备,但没有ip地址。 接下来用ifconfig命令设置ip地址,一些相关命令如下: ifconfig eth0 192.168.0.10 将采用默认子网掩码
ifconfig eth0 192.168.0.10 netmask 255.255.255.252 (手动定义子网掩码)(重启后无效) ifconfig eth0 down(停用网卡)
ifconfig eth0 up(激活网卡) service network restart(重启网络服务)
/etc/rc.d/init.d/network restart(同上) 我用ifconfig eth0 192.168.0.10 netmask 255.255.255.252 设置完ip,然后执行service network restart。 系统提示:eth0已有的MAC地址和系统要设置的不符,设置MAC地址失败。 因为网卡配置信息保存在/etc/sysconfig/network-scripts/ifcfg-eth0配置文件中,所以就去看看它吧。 文件的基本内容如下: DEVICE=eth0(哪张网卡) ONBOOT=yes
BOOTPROTO=static(静态ip状态设置) BOOTPROTO=dhcp(dhcp获取) IPADDR=192.168.1.8(静态ip地址)
NETMASK=255.255.255.0
GATEWAY=192.168.1.1(网关) HWADDR=00:0C:29:96:38:F8(修改mac地址)(永久有效) 我把文件的内容进行了删减,只留下 DEVICE=eth0 BOOTPROTO=dhcp HWADDR=00:0C:29:96:38:F8(修改为提示信息中指出的系统期望赋给eth0的MAC) ONBOOT=yes
重启Linux后可以正常上网了。
# 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"即可。 另外一种方法是:把里面的内容都删除,然后重新启动,系统也会重新发现网卡硬件,重新产生该文件。 这里补充一点: 用下面命令来实现上述第二种方法也是一样的: cd /etc/udev/rules.d
sudo rm *-net.rules //删除
sudo reboot 本人在用上述方法操作之后,再用ifconfig查看,确实找到了eth0设备,但没有ip地址。 接下来用ifconfig命令设置ip地址,一些相关命令如下: ifconfig eth0 192.168.0.10 将采用默认子网掩码
ifconfig eth0 192.168.0.10 netmask 255.255.255.252 (手动定义子网掩码)(重启后无效) ifconfig eth0 down(停用网卡)
ifconfig eth0 up(激活网卡) service network restart(重启网络服务)
/etc/rc.d/init.d/network restart(同上) 我用ifconfig eth0 192.168.0.10 netmask 255.255.255.252 设置完ip,然后执行service network restart。 系统提示:eth0已有的MAC地址和系统要设置的不符,设置MAC地址失败。 因为网卡配置信息保存在/etc/sysconfig/network-scripts/ifcfg-eth0配置文件中,所以就去看看它吧。 文件的基本内容如下: DEVICE=eth0(哪张网卡) ONBOOT=yes
BOOTPROTO=static(静态ip状态设置) BOOTPROTO=dhcp(dhcp获取) IPADDR=192.168.1.8(静态ip地址)
NETMASK=255.255.255.0
GATEWAY=192.168.1.1(网关) HWADDR=00:0C:29:96:38:F8(修改mac地址)(永久有效) 我把文件的内容进行了删减,只留下 DEVICE=eth0 BOOTPROTO=dhcp HWADDR=00:0C:29:96:38:F8(修改为提示信息中指出的系统期望赋给eth0的MAC) ONBOOT=yes
重启Linux后可以正常上网了。
相关文章推荐
- 网络爬虫
- HDU 5491 The Next (2015年合肥赛区网络赛H题)
- Swift - 判端网络连接状态,连接类型(3G还是Wifi)
- erlang HTTP 客户端 使用实例
- 9月第3周网络安全报告:被篡改的.COM网站占75.8%
- VMware虚拟机上网络连接(network type)的三种模式--bridged、host-only、NAT
- KJHttp框架使用讲解
- ubuntu 使用ifupdown 进行高级网络设置
- 新手对Bash环境变量解析漏洞的理解 http://www.linuxidc.com/Linux/2014-10/107984.htm
- Qemu Network Device全虚拟:前端网络流的建立(基于QEMU2.0.0)
- KJBitmap与KJHttp的深度用法
- Swift - 做一个简单的无线U盘(手机端Http服务器搭建)
- 接口测试 - httpClient
- SDWebImage 第三方框架的使用——网络图片的处理操作
- WMware虚拟机中无法连接到网络可能的原因
- 禁用网络适配器时出现“此时无法停用,这个链接可能在用一个或多个不支持即插即用的协议”
- Android实战简易教程<三十八>(模仿腾讯QQ的网络状态提示和设置功能实现)
- TCP CWnd protocol
- bzoj 1491: [NOI2007]社交网络
- web:2、httpd的特性和配置详解