今天跟大家聊聊如何正确配置NAT模式下虚拟机的网关。
如标题所言,我一开始在设置网关的时候一直存在着误区,而这个误区也导致标题中的问题:虚拟机能ping通宿主机,但是telnet不通,这就很奇葩了。
如下网络拓扑图。
虚拟机ping 192.168.137.1是可以ping通的,但是telnet 192.168.137.1 3306却不通(宿主机安装了MySQL)。
这里的宿主机充当网关的角色,在/etc/sysconfig/network-scripts/ifcfg-ens33文件中也会写死网关IP,如下所示。
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="0fdc7a3f-980e-4662-a20b-6fa76f472550"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.137.134
NETMASK=255.255.255.0
GATEWAY=192.168.137.1
DNS1=8.8.8.8
在宿主机上执行ipconfig/all,查看VMnet8网卡,IP地址也确实是192.168.137.1,这没问题啊。
经过查询各种资料,最终发现,上面我对虚拟机和宿主机之间的网络拓扑的理解是有问题的。上面的网络拓扑图,是将网关和宿主机的IP地址设置成了同一个,但真实情况下,网关就是网关,宿主机只是连接在网关上的一个节点,和虚拟机地位相等,即网关的IP和宿主机的IP要不一样(虽然网关和宿主机是同一个机器),改造后的网络拓扑图如下所示。
那如何配置呢?有三步。
- 第一步:
配置/etc/sysconfig/network-scripts/ifcfg-ens33。
这个上面已经说过了,网关IP还是192.168.137.1。
- 第二步:
VMware虚拟机中,打开虚拟网络编辑器,设置NAT模式的网关IP为192.168.137.1。
- (重点)第三步:
打开宿主机网络适配器,设置VMnet8网卡的IP地址为192.168.137.2,网关IP为192.168.137.1。
以上都设置好后,重启虚拟机,再telnet就没问题了