用VM Player 4.0装了Ubuntu 12 server,然后复制了几个组成局域网来使用,发现了一些问题,网上基本上找不到完整的解决方法,这里记录下来。

1
在后来的实际应用中,了解了更多的方法,这种方法并不是一个比较好的方法,但仍不失为一个简单有效的方法。

Mac 地址

复制的虚机Mac 地址都是相同的,组网会有问题,所以需要改过来。

首先是修改VM Setting,可以生成一个新的Mac地址,把它记录下来,假设是
00:AA:BB:CC:DD:EE
网上的方法主要是

sudo ifconfig eth0 down  #停掉网卡
sudo ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE #改mac
sudo ifconfig eth0 up #起网卡
sudo /etc/init.d/networking restart #重启网络

但是,这样是不成的(至少在这次),重启以后会失效,又变回原来的。网上给出的方案是在 /etc/network/if-pre-up.d/ 中添加
ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE,但我试过了是不行的。
另外有一种方法就是修改 /etc/rc.local 每次启动修改,但这种方法不太爽。
所以,最终的方案是:在 VM Setting 中删除掉 Network Adpater,然后再重启重新添加一个。
就这么简单,思路别被局限了。

机器名

复制以后的机器,名字都是一样,打算取名为vm-ubuntu1, vm-ubuntu2, vm-ubuntu3… 所以得逐个修改。

首先 hostname vm-ubuntu2 是不能保存的,重启后又还原,所以得修改/etc/hostname,内容就一行,vm-ubuntu2

其次,光改了名字,从其他的机器是ping不到的,所以我们需要修改 /etc/hosts 来把所有的机器都列出来。

127.0.0.1   localhost
192.168.48.142 vm-ubuntu1
192.168.48.156 vm-ubuntu2
192.168.48.148 vm-ubuntu3

将 hosts 文件复制到所有的虚拟机(你也可以使用rsync同步),这样就可以通过名字互通了。

静态IP

上面这样做了之后,会有一个问题,就是DHCP重启之后IP会变,名字就失效了,所以需要改成静态IP。
很简单,先 ifconfig 查看一下 当前的 网关和掩码,

Link encap:Ethernet  HWaddr 00:0c:29:1f:2a:fc
inet addr:192.168.48.142 Bcast:192.168.48.255 Mask:255.255.255.0

网关是 192.168.48.255, 掩码是 255.255.255.0,同时可以看到Mac已经变了(HWaddr就是)

然后修改 /etc/network/interfaces 就可以了,

auto eth0
iface eth0 inet dhcp

改为

auto eth0
iface eth0 inet static
address 192.168.48.100
netmask 255.255.255.0
gateway 192.168.48.255

这儿有个陷阱,就是 VM 的 网关实际上并不是 192.168.xx.255,而是window下看到的 VMware Network Adapter VMnet8 的 IP,一般是 192.168.xx.2,可以尝试 192.168.xx.1 或者 192.168.xx.2,所以真实的应该是

auto eth0
iface eth0 inet static
address 192.168.48.101
netmask 255.255.255.0
gateway 192.168.48.2

注意:我们不要使用192.168.xx.1 或者 2 来作为虚机的IP,这些都保留了,安全起见,用100之后的。
最后 sudo reboot,重启之后就可以联网了。

DNS 域名解析

上面设好了后,内网基本没问题,但是连外网可能会碰到问题,域名解析不了(我碰到了),所以需要设置DNS。
网上的方法,有一种是修改 /etc/network/interfaces 加上 nameserver

auto eth0
iface eth0 inet static
address 192.168.48.101
netmask 255.255.255.0
gateway 192.168.48.2
nameserver 8.8.8.8

这个貌似没有用,最后有用的方法是,修改 /etc/resolveconf/resolve.conf.d/base,加上 nameserver 就可以了

nameserver 192.168.48.2
nameserver 8.8.8.8
nameserver 8.8.4.4

  • END