前一段时间因为技术预研的需要,需要再本机上搭四台以上的虚拟主机,这个网络问题讲起来不难,但是对于菜鸟来说还是够烦的,有兴趣的看下
先说一下vm的网络模式,vm虚拟机有三种网络模式玩过的都知道:
1.bridged(桥接模式)
在这种模式下,虚拟机其实就相当于局域网里面的机器了,我们需要为他手动配置ip,网关等信息,它可以通过局域网内的网关上网。
2.host-only(主机模式)
在host-only模式下,虚拟系统和宿主机器系统是可以相互通信的,相当于这两台机器通过双绞线互连。虚拟系统的TCP/IP配置信息(如IP地址、网关地址、DNS服务器等),都是由VMnet1(host-only)虚拟网络的DHCP服务器来动态分配的,不需要动手去配。
3.NAT(网络地址转换模式)
使用NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。采用NAT模式最大的优势是虚拟系统接入互联网非常简单,你不需要进行任何其他的配置,只需要宿主机 器能访问互联网即可。
这三种模式很多人都知道,但是我的情况是,公司局域网内ip都被占用了,我无法为虚拟机分配一个可以用的ip,无法使用桥接模式;用主机模式可以方便主宿机通信,但是上网又成难题;nat模式下容易上网但是主机却访问不了虚拟机的应用,需要做端口映射,但是有经验的同学知道,一旦虚拟机和应用多了,你会逐渐发现这种方法太蠢了,而且dhcp分配的ip如果发生了变化引起的配置修改工作量也不小。
抓耳挠腮的时候咨询了公司的老司机,终于解决了困境:
1.给每一台虚拟机增加一个网卡,一个host模式,一个nat模式,我给四台虚拟机都装上了两张网卡,具体操作是"设置-添加-网络适配器"
2.安装了网卡之后设置一下虚拟机网络,"编辑-虚拟机网络编辑",在这里设置host模式勾选"将主机适配器连接到虚拟网络",取消"使用本地DHCP服务";nat模式将两个选项都勾选上
3.配置完了就需要给ip设置一个静态ip了,我用的ubuntu系统
"vi /etc/network/interface"
看到如下内容
auto eth0
iface eth0 inet dhcp
添加网卡,在下面添加内容
auto eth1
iface eth1 inet static
address 192.168.161.2
netmask 255.255.255.0
这里的ip设定是根据虚拟网卡VMnet1的ip设的,保持在同一个网段即可(我的虚拟网卡是192.168.161.1,所以这边设置虚拟机为192.168.161.2)。
检查虚拟机是否多了一个eth1的网卡,如果没有就重启一下,重启网络,不行就重启机器。
4.如果出现了两个网卡,那么就恭喜你成功了。
注意:两个网卡一个用来上网一个用来主宿通信,很多新手没有成功都是因为ip设置错误导致的,如果不成功要细致地看一下同一个类型的网卡,他们的ip是否在同一个网段。