日期:2014-05-16  浏览次数:20711 次

当Linux找不到eth0时
新装了VirtualBox和Ubuntu 9.10 Server, 安装起来还是很顺利的。VirtualBox才70MB左右,比VMWare的500MB要小很多。装上后也不用重启,甚好。

安装成功后,需要对Ubuntu Server进行一下网络配置。我要达到的要求是:

能够直联外网,可以用apt-get下载我想要的东西。
能够通过IP被访问到,因为我要用它作LAMP Server。
要求很简单,但实现起来发现还真不简单。VirtualBox的Network设置中,有几种连接方式:

NAT
Bridged
Internal
Host-only
其实我对这几种方式都没有很清晰的了解。

问题一:要么连外网,要么可被访问,无法两者兼顾。
用NAT的方式,可以直接与外网相联,分配的IP是10.x.x.x。但无法通过IP访问,作为Server。用其它方式,都可以分配到192段的IP,可以当Server,但无法与外网相联。

问题二:我改了一下mac地址,结果找不到eth0了。
这个问题最终解决了,参考的是网上的一篇帖子——《VMWare克隆后Ubuntu的"No such device eth0"错误》(http://www.ubuntuchina.com/viewthread.php?tid=6178)。这篇帖子里面提到了VMWare虚拟机被Clone后,找不到网卡的状况。

经查明,Linux是用/etc/network/interfaces这个配置文件来载入网卡的。默认配置中,它指示Linux会自动寻找eth0网卡,并自动分配IP。但是,当虚拟网卡的MAC地址更改后,网卡在Linux中不是eth0了,而是eth1或其它值。因此才会找不到。而现有系统中,有哪些网卡是可用的,可以通过下面的命令查看:
ifconfig -a

使用这个命令后确实,发现每刷新一次mac地址,就生成一个新的eth。
在Linux中,还有一个配置文件:/etc/udev/rules.d/70-persistent-net.rules,打开这个配置文件后,会发现里面列出了所有Linux找到的网卡,包括历史的。因此,解决无法加载网卡的问题就有两个解决办法:
修改interfaces配置文件,使其使用最新的eth网卡
删除.rules文件,让linux重新将网卡认为是eth0

我采用了第二种方法,顺利的重新找回网卡。