Windows10上安装VMware Workstation 16 Pro之后,使用NAT模式上网时的网络架构。

在本地服务器上安装Ansible或者Zabbix服务器等进行测试,相对比在AWS上启动1台EC2个人感觉更方便。主要是网络延迟小,有效压载Windows PC的性能(物尽其用:VMware也好Docker也好,有更好的压载服务器性能的一面)。

在Windows PC安装VMware Workstation后设定为NAT模式的话,即可上网。而作为系统工程师,需要理解一定的原理,当发生故障或者问题时方可进行排查。接下来确认一下,创建Guest OS后Host OS,Guest OS发生什么样的变化。

环境

使用了如下软件,并且网络架构如下图。

  • Host OS : Windows10(CPU:1Socket 4core,Memmory:32GB)
  • Hyper Visor : VMware Workstaion 16 Pro
  • Guest OS : Rocky Linux8

部署环境步骤

部署以上环境的步骤如下。

  1. 在Windows10上安装VMware Workstation 16 Pro
  2. 下载Rocky Linux8的镜像
  3. 使用Rocky Linux8镜像,创建虚拟机

可参照 VMware Workstation上安装RedHat8

VMware Workstaion有以下4种网络模式,接下来确认NAT模式下,Host OS(Windows10),Guest OS(Rocky Linux8)及VMware Workstation 16 Pro网络。

  1. Bridge模式
  2. NAT模式 (VMware Network Adapter VMnet8)
  3. HostOnly模式
  4. Custom(自定义)模式

Host OS网络

Host OS上的网络接口

安装VMware Workstation 16 Pro之后,可以在Windows10上网络设定查看到VMware Network Adapter VMnet8是默认用于NAT的模式的网络接口。VMware Network Adapter VMnet8是NAT模式的默认网络接口。

确认Host OS的IP地址

使用ipconfig命令确认Host OS的IP地址,这里使用的Wi-fi连接。

Host OS路由表

route PRINT 命令确认Host OS的路由表。

从上面的结果,可确认到192.168.79.0/24网段(Guest OS网段)的数据包将被发送到。192.168.79.1的IP地址。接下来使用ipconfig命令确认IP地址192.168.79.1被绑定网络接口。

Guest OS网络

Guest OS的IP地址

启动Guest OS(在这里是Rocky Linux8)后SSH进行登录。首先使用 ip命令确认当前Guest OS的网络设定情况。执行 ip a 命令后,ens160的IP地址为192.168.79.158。

在这里网络接口名称为ens160而非eth0,是因为网络接口名称的规则变化。
CentOS7开始(使用v197 systemd/udev)自动分配稳定的网络接口名称。不仅为局域网分配,也为WLAN和WWAN分配。传统的(“eth0″、”eth1″、”wlan0″,…)已不再使用。

新的命名惯例有以下几个方面的内容。

  • OS重启后,网络接口名称不会改变
  • 当硬件被添加或删除时,网络接口名称不会改变
  • 内核或驱动程序被更新时,网络接口名称不会改变
  • 网卡损坏或被替换时,网络接口名称不会改变
  • 网络接口名称将被自动分配,并运行
  • 网络接口名称按照命名规则被分配,可预测(Predictable Network Interface Names)
  • 等等

以下的内容 来自 systemd/systemd

 * Two character prefixes based on the type of interface:
 *   en -- ethernet
 *   sl -- serial line IP (slip)
 *   wl -- wlan
 *   ww -- wwan
 *
 * Type of names:
 *   b<number>                             -- BCMA bus core number
 *   ccw<name>                             -- CCW bus group name
 *   o<index>[d<dev_port>]                 -- on-board device index number
 *   s<slot>[f<function>][d<dev_port>]     -- hotplug slot index number
 *   x<MAC>                                -- MAC address
 *   [P<domain>]p<bus>s<slot>[f<function>][d<dev_port>]
 *                                         -- PCI geographical location
 *   [P<domain>]p<bus>s<slot>[f<function>][u<port>][..][c<config>][i<interface>]
 *                                         -- USB port number chain

Guest OS的路由表

接下来使用 route -n命令(或者ip route list table local命令)确认路由表的信息。

通过显示的路由表信息,在NAT模式下的默认网关(既NAT Gateway)的IP地址是192.168.79.2。

Guest OS的DNS服务器

登录Guest OS之后使用nslookup命令确认默认访问的DNS服务器。

在nslookup命令里解析baidu.com域名可确认,Guest OS目前在使用的DNS服务器的IP地址是192.168.79.2。

VMware Workstation 16 Pro的网络相关设定

vmnetnat.conf文件

被设定为NAT Gateway,DNS服务器,DHCP服务器的IP地址192.16879.2是在哪里设定的呢?

C:\ProgramData\VMware\vmnetnat.conf

下面是vmnetnat.conf文件里设定NAT Gateway address的部分。

[host]

# NAT gateway address
ip = 192.168.79.2/24
hostMAC = 00:50:56:C0:00:08
~ 省略 ~

vmnetdhcp.conf文件

分配给Gues OS的IP地址既DHCP可分配的IP地址范围在vmnetdhcp.conf指定。

C:\ProgramData\VMware\vmnetdhcp.conf

~ 省略 ~
# Virtual ethernet segment 8
# Added at 06/25/21 00:08:13
subnet 192.168.79.0 netmask 255.255.255.0 {
range 192.168.79.128 192.168.79.254;            # default allows up to 125 VM's
option broadcast-address 192.168.79.255;
option domain-name-servers 192.168.79.2;
option domain-name "localdomain";
option netbios-name-servers 192.168.79.2;
option routers 192.168.79.2;
default-lease-time 1800;
max-lease-time 7200;
}
host VMnet8 {
    hardware ethernet 00:50:56:C0:00:08;
    fixed-address 192.168.79.1;
    option domain-name-servers 0.0.0.0;
    option domain-name "";
    option routers 0.0.0.0;
}
~ 省略 ~

而给某台设备分配固定IP地址时,可参照 host VMnet8的部分。

Guest OS上的上网测试

在Guest OS上输入,ping baidu.com命令确认能访问外网。