简说VMware网络连接模式原理与实践

VMware DHCP Service与VMware NAT Sevice 

        安装vmware后,默认会宿主机上会安装这两个网络服务。DHCP用于IP分配,NAT服务用于地址转换,只有NAT模式下才需要。

宿主机上Adapter VMnet8与Adapter VMnet1
        宿主机的两块虚拟网卡,主要是方便与虚拟机通信。禁用它们不影响虚拟机与外网的访问。

Vmware中VMnet0、VMnet8与VMnet1
        VMnet8在NAT连接模式下,充当虚拟路由器的作用,虚拟机的ensxx网卡、宿主机的Adapter  VMnet8、NAT设备、DHCP服务器默认都连接在该路由器上。 
        VMnet1用在仅主机模式下,与NAT模式的区别在于, 这种模式不会转发虚拟机请求至外网。           

Bridged模式
        桥接模式下,系统会在主机上虚拟出一个交换机,虚拟机和主机都连接该交换机,虚拟机和主机处于同等地位,在同一个网络内。相当于当虚拟机直接连接到外部网络上。这种情况下,虚拟机IP可以手动配置成静态IP,或者如果宿主机所在网络会经常变动,也可以设置成DHCP动态获取。但不管是动态还是静态,配置时都要求虚拟机与主机所在网段、子网掩码一致。

具有虚拟网络适配器的虚拟机通过虚拟网桥连接到物理网络适配器。

实践(Bridged模式搭建)
       如下面是宿主机无线网卡的相关信息

 

无线局域网适配器 WLAN:

   连接特定的 DNS 后缀 . . . . . . . :
   描述. . . . . . . . . . . . . . . : Intel(R) Dual Band Wireless-AC 3165
   物理地址. . . . . . . . . . . . . : DC-53-60-C8-30-66
   DHCP 已启用 . . . . . . . . . . . : 是
   自动配置已启用. . . . . . . . . . : 是
   本地链接 IPv6 地址. . . . . . . . : fe80::a121:42ee:8d07:2703%2(首选)
   IPv4 地址 . . . . . . . . . . . . : 192.168.96.86(首选)
   子网掩码  . . . . . . . . . . . . : 255.255.254.0
   获得租约的时间  . . . . . . . . . : 1885年6月29日 9:11:03
   租约过期的时间  . . . . . . . . . : 2019年8月5日 16:47:21
   默认网关. . . . . . . . . . . . . : 192.168.96.1
   DHCP 服务器 . . . . . . . . . . . : 192.168.96.1
   DHCPv6 IAID . . . . . . . . . . . : 232543072
   DHCPv6 客户端 DUID  . . . . . . . : 00-01-00-01-1D-D3-7B-ED-20-47-47-72-C9-99
   DNS 服务器  . . . . . . . . . . . : 180.168.255.118
                                       116.228.111.18
   TCPIP 上的 NetBIOS  . . . . . . . : 已启用

那么在虚拟机(以centos7为例)中的相关配置如下

[root@localhost network-scripts]# cat ifcfg-ens33 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static  #static表示设置静态IP,dhcp表示通过dhcp协议从dhcp服务器获取动态IP。
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
DEVICE=ens33
ONBOOT=yes            
GATEWAY=192.168.96.1   #默认网关(需与宿主机一致)
NETMASK=255.255.254.0  #子网掩码(需与宿主机一致)
DNS1=180.168.255.118
DNS2=116.228.111.18
IPADDR=192.168.96.222    #静态IP地址

NAT模式 (图一为官方图片)

虚拟机与主机之间通过 NAT 设备实现的网络连接。



NAT模式的几个特点,从图上也可以看出来:

  • 虚拟机网卡、宿主机的Adapter  VMnet8(默认情况下)、NAT设备、DHCP服务器默认都连接在VMnet8虚拟交换机上。
  • NAT网络中的虚拟机,可以从DHCP动态获取IP,也可以手动配置静态IP。
  • NAT模式下,虚拟机发出去的包,都会经过NAT设备进行地址转换。
  • 宿主机通过Adapater VMnet 8虚拟网卡与虚拟机进行通信(在一个NAT网络中)。
  • 对Adapater VMnet 8网卡的禁用不会影响虚拟机与外部的通信。 

简而言之,NAT模式下,虚拟机可以访问外网,可以访问主机。主机可以通过虚拟网卡访问虚拟机。虚拟机发出的数据包会经过NAT Service服务修改源IP<改为主机的IP>和源Port<通常是随机映射一个端口>后,再经过物理网卡发送到物理局域网中,依此往外发送。<如果是访问宿主机,会被物理网卡接收>。
       当响应包到来时, 再通过IP和Port就找到对应内网中的虚拟机,再将数据包转到虚拟机。
       NAT模式的优点是网络隔离,缺点就是内网用户共享带宽(从家用路由器角度)、每次请求/响应包都需要经过宿主机的转换。 家用路由器通常就都是NAT模式。

NAT 模式下的默认IP地址用途(官方文档:NAT模式和主机模式下网络IP的约定

范围地址用途示例
网络.1主机192.168.0.1
网络.2NAT 设备192.168.0.2
网络.3–网络.127静态地址192.168.0.3–192.168.0.127
网络.128–网络.253由 DHCP 分配192.168.0.128–192.168.0.253
网络.254DHCP 服务器192.168.0.254
网络.255广播192.168.0.255

如下,可以看出确实如官方所说,主机上的Adapter VMnet8默认为net.1地址,DHCP服务器默认为net.254地址,NAT设备默认为net.2(默认也是网关地址,和DNS服务器地址),而动态分配给虚拟机的地址128也在范围128~253之间。



实践 (NAT模式搭建)
        Nat的搭建很简单,只要将网格模式切成NAT就行,但注意几点

        1.注意防火墙状态,可能导致与主机不能互ping。
        2.如果在桥接模式和Nat模式之间有过切换,建议还原网络,或者修改ifcfg-ens33文件,然后重启网络,避免相互影响。
        2.建议修改/etc/sysconfig/network-scripts/ifcfg-ens33文件,最好手动配置上GATEWAY,经测试不配置的话,某些情况下无法访问外网。 

[root@localhost network-scripts]# cat ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp        #改成dhcp表示从通过dhcp协议,从dhcp服务器动态获取IP地址
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
DEVICE=ens33
ONBOOT=yes            #改成yes,引导时自动获取IP。
GATEWAY=192.168.200.2 #经测试, 有些情况下不配置,可能会影响虚拟机访问外网,但不会影响与主机的互相访问。

Host-Only模式 (官方图片)   

虚拟机与主机之间通过网络适配器实现的网络连接。

        从上面可以看出,与NAT模式最主要的区别在于没有NAT转发了,虚拟机主机的VMnet8连接到在专用网络VMnet1中,虚拟机只与主机上的Adapter VMnet1虚拟网卡通信,网络完全包含在主机系统内。所以默认情况下,虚拟机无法访问外网。但可以通过网络共享功能来实现让虚拟机连接外网。

        默认IP地址的用途如下

范围地址用途示例
net.1主机192.168.0.1
net.2–net.127静态地址192.168.0.2–192.168.0.127
网络.128–网络.253由 DHCP 分配192.168.0.128–192.168.0.253
网络.254DHCP 服务器192.168.0.254
网络.255广播192.168.0.255

Host-Only模式下让虚拟机可以访问外网
       
原理很简单,前在说过,虚拟机只与主机上的Adapter VMnet1虚拟网卡通信,所以我们只要将Adapter Vmnet1挂到其它可以访问外网的网卡上,然后再将虚拟机网卡(比如ens33)的网关指向Adapter VMnet1就ok了。(数据流转过程:ens33-->Apdapter Vmnet1 --> 外网网卡 --> 外网)

操作步聚如下:
1. 设成Host-Only模式
2. 共享网络

3. 手动设置宿主机上Adapter VMnet1的地址。 

  • 因为需要Adapter VMnet1充当网关作用,所以不能设置自动获取
  • IP地址需要与Vmnet1处于同一网络,且最好遵守上表格中的规定,即配置成net.1

4. 设置虚拟机ens33网卡网关,指向Adapter VMnet1的IP。

[root@localhost network-scripts]# cat ifcfg-ens33 
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
...
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
GATEWAY=192.168.113.1    #指向Adapter VMnet1
[root@localhost network-scripts]# 

5.执行dhclient ens33。
(疑点:每次systemctl restart network之后,本地都需要再执行dhclient ens33才可访问外网)

[root@localhost network-scripts]# ps -ef | grep dhclient
root       3520      1  0 02:09 ?        00:00:00 dhclient ens33
root       4231    771  0 02:28 ?        00:00:00 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-ens33.pid -lf /var/lib/NetworkManager/dhclient-c96bc909-188e-ec64-3a96-6a90982b08ad-ens33.lease -cf /var/lib/NetworkManager/dhclient-ens33.conf ens33
root       4307   2907  0 02:29 pts/0    00:00:00 grep --color=auto dhclient
[root@localhost network-scripts]# kill -9 3520
[root@localhost network-scripts]# dhclient ens33
[root@localhost network-scripts]# ping www.baidu.com
PING www.a.shifen.com (180.101.49.12) 56(84) bytes of data.
64 bytes from 180.101.49.12 (180.101.49.12): icmp_seq=1 ttl=52 time=13.1 ms
^C
--- www.a.shifen.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 13.185/13.185/13.185/0.000 ms
[root@localhost network-scripts]# 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值