VMware的出现解决了我们搭建测试环境的门槛---使用VMware搭建出来的虚拟机可以很好的解决我们的一系列痛点:可移植,可快速回滚,易于搭建,安装方便,环境相对物理机是轻量化的。实在是脚本测试,生产环境测试的一大利器。
那么,我们安装一个虚拟机当然不仅仅是需要它能跑程序就可以了,还需要它能有网络的扩展,如果有多个虚拟机,还希望能方便的管理这些机器,并且多个虚拟机组成一个合理的平台,例如,某些集群的部署测试就不是一个虚拟机能够完成的了。因此,我们需要根据自己的实际使用情况来设置VMware的网络。
一,
VMware安装的时候都安装了些什么?
这里需要先说明,VMware服务通常都是安装在windows宿主机内的,下面这个图是我这个宿主机的网络设备:
根据主机的配置不同,有的不会带有蓝牙芯片,这里就不讨论了,上面图表示我用的是wifi,wifi是一个单独的网卡,另一个物理网卡没有插网线也没有配置,剩下的vmnet1,vmnet8,Hyper-V Virtual Ethernet Adapter这三个就是VMware安装的时候vm虚拟出来的三个网卡。
二,
bridge
VMware打开虚拟机设置,勾选bridge即可启用网桥模式,如下图:
那么,这个时候到底是用的哪个网卡呢?是用的虚拟网卡吗?bridge有什么特点?什么时候需要使用网桥模式呢?下面将一一解答这些问题
(1)使用的是宿主机现在在使用的网卡,如果你的宿主机连接的是wifi,那么就会使用WiFi那张网卡,如果是网线,那么,将会使用以太网这个网卡,那么,有证据吗?当然是有的,证据如下:
(2)像我现在在使用的是WiFi的网卡,那么,如果勾选网络桥接,将会自动使用WiFi网卡,如果WiFi关闭,使用网线,将会使用以太网那张网卡。而如果我有安装一个linux虚拟机,那么,这个虚拟机将会通过WiFi网卡与外界互联。
当然了,如果不使用DHCP而使用静态IP,需要更改Linux虚拟机的网络配置,将WiFi内没有使用过的一个IP绑定到虚拟机的网卡上,然后重新启动网络,假设宿主机的网段是192.168.202,那么,虚拟机也必须使用这个网段,网关也必须指向宿主机在使用的网关.
这就造成了一个问题,虚拟机一般是需要固定IP的,bridge模式下,将会固定在和宿主机一个网段的IP,如果宿主机切换网络了,那么,虚拟机网卡设置也需要更改了,这就给虚拟机的使用造成了比较大的困扰。
贴一张桥接模式下,虚拟机的网卡配置文件,桥接一般是需要设置静态IP的哦
我的宿主机所在网段是192.168.0,网关是192.168.0.1,这些都必须定义在虚拟机网卡文件内:
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="fae00e07-f23d-4920-9a23-065f425083df"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.0.11
GATEWAY=192.168.0.1
NETMASK=255.255.255.0
DNS1=61.128.114.166
bridge,顾名思义是起到一个桥梁的作用,也可以认为是一个代理功能,这个模式是硬件层面居多的。
(3)特点如下:
宿主机和虚拟机可互通,宿主机可连互联网,宿主机和虚拟机必须是在一个网段下,假设宿主机所在网段是192.168.0,那么,虚拟机的网络设置也必须是192.168.0,否则两者不能联通。换句话说,宿主机和虚拟机必须是同一个网段,地位是相同的,虚拟机等于宿主机的网络的现实衍生。因此,bridge模式下的虚拟机可以通过局域网内其他的服务器管理,视同真的物理机。
举个例子,我在笔记本A搭建了一个Linux虚拟机,然后有同一个局域网的笔记本B,这个B可以通过ssh直接登录到Linux虚拟机上。那么,对于虚拟机来说,我们可以更快的将这个虚拟机与其它人分享了。
三,
nat模式
这个模式和bridge是完全不同的,它可以说是一个完全的私网。首先,我们看看如何启用nat模式。
启用nat模式后,假设刚才这个Linux虚拟机,需要相应的设置,才可以正常的使用宿主机的网络。
[root@kvm opt]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
BRIDGE='br0'
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
NAME="ens33"
UUID="2c230a84-5a54-4d7c-8f21-ea413a238b91"
DEVICE="ens33"
ONBOOT="yes"
[root@kvm opt]# cat /etc/sysconfig/network-scripts/ifcfg-br0
TYPE='Bridge'
NAME=br0
BOOTPROTO=static
DEFROUTE=yes
UUID=4b914579-b311-4cf3-a990-53fbf418a8a1
DEVICE=br0
PREFIX=24
IPADDR=192.168.118.128
GATEWAY=192.168.118.2
NETMASK=255.255.255.0
DNS1=61.128.114.166
DNS2=8.8.8.8
我这里是使用了虚拟网卡br0,当然,去除这个br0也是一样的,需要设置192.168.118网段,这个网段是什么鬼呢?宿主机的网络如下:
这两个八竿子打不着啊,别慌,还是打开VMware的虚拟网络配置,看看VMware是怎么说的吧!!!
因此,虚拟机内的br0网卡有如下设置:
IPADDR=192.168.118.128
GATEWAY=192.168.118.2
192.168.118.128是我自己随便定义的,只要是192.168.118网段内的非网关IP就可以啦。gateway一定要写192.168.118.2哦。
上图也显示了,我使用的是VMware8这个虚拟网卡。网络链路就成了一个闭环,宿主机---宿主机的虚拟网卡---虚拟机的虚拟网卡。
而在nat模式下,宿主机如果可以连互联网,那么,虚拟机也就可以连互联网,宿主机如果不能连互联网,虚拟机也不能连互联网,但,宿主机和虚拟机,虚拟机和宿主机是可以永久连接的,这也就是为什么说nat是一个相对独立的私网的原因了。这里需要注意,虚拟机仅仅只能在宿主机内管理使用,局域网内的其它机器是无法连到虚拟机的。
因此,虚拟机的nat模式适用范围在共享方面是要比bridge窄的。如果是使用N个虚拟机搭建一个集群,在宿主机上管理这个集群,当然是使用nat模式了,宿主机的网络和虚拟机网络是互通的,但不会影响虚拟机的网络。只是不能共享给其它的机器了而已。
三,hosts仅主机模式
这个模式就比较简单了,算是对新人比较友好的一种模式,简单,不需要配置,虚拟机安装好后,虚拟机网卡开启DHCP即可,会自动给虚拟机分配一个DHCP的IP,如果有N个虚拟机,这些虚拟机都使用主机模式,那么,这些虚拟机将组成一个单独的,隔离的小局域网,此时,虚拟机将会使用VMware1这个虚拟网卡。
但,弊端很多,第一,因为是DHCP分配的IP(这个DHCP是VMware软件管理的),因此,DHCP租约到期后IP会改变,改变后需要重新查IP,然后在xshell重新设置。第二,虚拟机是没有办法连接互联网的,只有局域网。第三,虚拟机不能共享给其它的机器(这里的共享是比如,宿主机是A,在另一个服务器B上是没有办法连接虚拟机的,只能在宿主机上连接虚拟机)。
贴一张主机模式下的虚拟机网络配置文件:
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="fae00e07-f23d-4920-9a23-065f425083df"
DEVICE="ens33"
ONBOOT="yes"
[root@centos1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:0c:29:94:2d:6d brd ff:ff:ff:ff:ff:ff
inet 192.168.91.128/24 brd 192.168.91.255 scope global dynamic ens33
valid_lft 1394sec preferred_lft 1394sec
inet6 fe80::b18d:c8cb:8f85:604a/64 scope link
valid_lft forever preferred_lft forever
为什么IP会分配成192.168.91.128呢?因为下图: