【问题】为啥WMWare Workstation里面虚拟机的网关默认是NAT网关
今天做KickStart自动化安装实验,无意中发现一个奇怪现象。
先描述下我的实验环境:笔记本Win10,安装了WMWare Workstation,在WMWare Workstation上面安装了CentOS7,CentOS7被规划在VMNet 8网段,使用NAT方式连接网络。
最小化安装完毕CentOS7虚拟机后,查看DNS配置,意外发现DNS的IP竟然是:
[root@localhost ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.80.2
我印象中的DNS应该是8.8.8.8 或者 114.114.114.114这种众所周知的DNS。虽然从未想过虚拟机的DNS该填什么,但是192.168.80.2这个IP也着实让我有了不小的震撼。后来发现一篇文章,茅塞顿开。记录下来做个纪念。
https://www.vmware.com/support/ws3/doc/ws32_network21.html
CentOS7能够上外网完全是VMware NAT Service的功劳,VMware NAT Service给我们虚拟出了一个NAT device设备,这个设备的IP就是192.168.80.2。NAT原本就是网络地址转换,用于私有网络与共有网络、非以太网与以太网之间的转换。正常来说NAT功能也就这样了,但实际上VMware NAT Service所做的工作并不仅仅是网络地址转换这么简单,还有DNS、DHCP等功能。想想我们自己的PC机,那上边配置的IPv4 DNS是啥?替换掉虚拟机CentOS7的DNS会有什么反应?
下面停用VMware NAT Service


此时ping百度,VMware NAT Service禁用前可以ping通,禁用后不可以。
[root@localhost ~]# ping www.baidu.com
PING www.a.shifen.com (61.135.169.121) () bytes of data.
bytes from 61.135.169.121: icmp_seq= ttl= time=71.7 ms
bytes from 61.135.169.121: icmp_seq= ttl= time=55.7 ms
^C
--- www.a.shifen.com ping statistics ---
packets transmitted, received, % packet loss, time 3618ms
rtt min/avg/max/mdev = 55.765/63.754/71.743/7.989 ms
[root@localhost ~]# ping www.baidu.com
ping: unknown host www.baidu.com
猜想:VMware NAT Service这个服务虚拟出的NAT device设备,这个设备的IP是192.168.80.2。禁用这个服务相当于把192.168.80.2这个设备短路了,所以ping 192.168.80.2当然不同。虚拟机使用NAT上网会在宿主机(此处位我的笔记本)上虚拟出VMware Network Adapter VMnet8网卡(使用host-only模式也有)。我禁用VMware NAT Service相当于关机192.168.80.2这个设备。但是对192.168.80.1应该没有影响啊。ping 192.168.80.1,发现并没有提示通不通,几十分钟都卡在ping的界面。这又是怎么回事呢?
[root@localhost ~]# ping 192.168.80.2
PING 192.168.80.2 (192.168.80.2) () bytes of data.
From 192.168.80.132 icmp_seq= Destination Host Unreachable
From 192.168.80.132 icmp_seq= Destination Host Unreachable
From 192.168.80.132 icmp_seq= Destination Host Unreachable
From 192.168.80.132 icmp_seq= Destination Host Unreachable
^C
--- 192.168.80.2 ping statistics ---
packets transmitted, received, + errors, % packet loss, time 3000ms
pipe
[root@localhost ~]# ping 192.168.80.1
PING 192.168.80.1 (192.168.80.1) () bytes of data.

关闭VMware NAT Service服务,192.168.80.2这个设备相当于短路,和一条电线没区别。连接192.168.80.1这条链路应该可以通,此时不通的原因最后解释。那我ping192.168.80.114这台机器呢?可以ping通,因为在一个网段,都连在交换机VMNet8上面,这个在预料之中。
再次猜想:192.168.80.132这台虚拟机上DNS默认是192.168.8.2。现在VMware NAT Service服务关闭了,我改成其他的DNS可以吗?
改成8.8.8.8,发现不通。会不会是因为是谷歌的,国内访问慢?? 我看卡笔记本上的DNS,发现是172.20.10.1,我改成这个DNS再试还是不行。哎呀,为了上外网我只想到了域名解析问题了,别忘了我这是虚拟机,使用的是192开头的私有网络,私有网络到公有网络,还要考虑到NAT转换,但是我刚刚把NAT干掉,当然用什么DNS都不行了。
下面启用VMware NAT Service服务,然后再ping 192.168.80.2和百度
[root@localhost ~]# ping 192.168.80.2
PING 192.168.80.2 (192.168.80.2) () bytes of data.
bytes from 192.168.80.2: icmp_seq= ttl= time=0.108 ms
^C
--- 192.168.80.2 ping statistics ---
packets transmitted, received, % packet loss, time 0ms
rtt min/avg/max/mdev = 0.108/0.108/0.108/0.000 ms
[root@localhost ~]# ping www.baidu.com
PING www.a.shifen.com (61.135.169.125) () bytes of data.
bytes from 61.135.169.125: icmp_seq= ttl= time=55.6 ms
^C
--- www.a.shifen.com ping statistics ---
packets transmitted, received, % packet loss, time 0ms
rtt min/avg/max/mdev = 55.606/55.606/55.606/0.000 ms
[root@localhost ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain
#nameserver 192.168.80.2
nameserver 172.20.10.1
发现可以ping通。我比较担心改过需要重启才能生效,所以我重启了计算机(感觉重启网络就行),发现还是通的。再次查看DNS配置文件,神奇的事发生了,他把我原来修改的DNS配置文件替换了
[root@localhost ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.80.2
为啥会这样,还是VMware NAT Service搞得鬼,他还内置个DHCP功能,这个功能可以给NAT网络下边所有虚拟机下发配置信息,告诉他们“嗨!哥们你们的DNS是192.168.80.2”,虽然192.168.80.2这个NAS device也是个傀儡,但还是打肿脸装胖子说自己是DNS server。实际上他是向主机(此处位我的笔记本)上的DNS服务器求助来解决域名解析工作。
最后一个问题。前面折腾那么久,无论是VMware NAT Service禁用前后,我在ping 192.68.80.1时,既没有报错也没有提示不通,就一直卡在ping界面,这是神马鬼???
原来是主机(也就是笔记本)防火墙的原因,关闭防火墙,可以ping通。

虚拟机里面的应用程序想要访问网络资源,借助NAT可以轻松实现。宿主机的网络到网络资源之间的链路、网络可以是任何类型。只要他们支持TCP/IP就行。对于如下情况,都应该考虑NAT:
1、IP 数量有限
2、虚拟机连接到非以太网适配器
NAT可以将虚拟机私有地址转换成宿主机的IP。虚拟机NAT服务使用宿主机的网络资源连接外部网络,代替虚拟机请求外部资源。因此,只要宿主机以外的网络支持TCP/IP,虚拟机就可以访问到他们。
为了使网络配置更简单,在你安装VMware Workstation的时候,DHCP server被自动安装了。DHCP server在NAT网络,以及host-only网络下都有工作。在NAT网络下,虚拟机发送DHCP request请求分配IP,DHCP server会把<net>.128 到 <net>.254的地址分配给虚拟机。而<net>.3 到 <net>.127往往设置成静态IP地址。IP address <net>.1 is reserved for the host adapter; <net>.2 is reserved for the NAT device。在NAT网络中,DHCP server除了告诉虚拟机IP地址,还会发送额外配置信息,包括网关,DNS server地址。DNS server告诉这些虚拟机,网关于DNS server都是NAT device的地址,即<net>.2。于是虚拟机所有对外网的通信都会找<net>.2。当然这里的DNS server是默认的配置,你也可以改成外网的某个DNS,最简单的做法就是看你宿主机的DNS,改成和他一样的。
【问题】为啥WMWare Workstation里面虚拟机的网关默认是NAT网关的更多相关文章
- NAT网关之SNAT进阶使用(一)SNAT POOL
摘要: NAT网关是云上VPC ECS访问Internet的出入口.SNAT可实现指定的VPC ECS使用指定的公网IP访问互联网.阿里云NAT网关控制台创建SNAT条目时,默认是为指定的交换机配置1 ...
- VMware Workstation虚拟机中的Linux通过NAT模式共享上网配置教程
VMware Workstation虚拟机中的Linux通过NAT模式共享上网配置教程 在VMware Workstation虚拟机下面,Linux虚机要上网,一般是桥接模式,但我自己的电脑上网的环境 ...
- Wmware桥接网络虚拟机无法上网的问题
之前装好的一个虚拟机,安装到本地的Wmware workstation的时候,发现无法上网. 虚拟机使用的是桥接模式:一开始怀疑IP被占用,修改后发现不起作用. 排查所有的网络配置,发现都没有问 ...
- 使用WMware新建linux虚拟机
使用WMware安装linux虚拟机的时候很多人搞不清楚使用什么适配器. 平时也看到很多误人子弟的观点,这里用事实说话. VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络 ...
- VMware workstation创建虚拟机console
1. 使用VMware workstation创建虚拟机硬件2. 安装操作系统3. 操作系统安装过程 1. 使用VMware workstation创建虚拟机硬件 使用VMware workstati ...
- windows10用WMware安装Linux虚拟机详细步骤
windows10用WMware安装Linux虚拟机详细步骤 一.安装环境 windows10操作系统物理机VMware Workstation 软件(可以在网上下载)CentOS6.9镜像文件( ...
- 向 wmware workstation pro 的 MS-DOS 操作系统中导入文件(masm debug edit)(详细图解)
一般MS-DOS中不包含masm.debug和edit这三个程序. 我们想要把这几个文件导入到wmware workstation pro中的DOS虚拟机中怎么做呢? [尝试] 1.我试过用共享文件夹 ...
- WMware Workstation——时间和时区问题
对于学习Linux的人来说,最常见的做法就是在WMware Workstation下安装Linux系统.在WMware Workstation可能会有几处导致时间.时区问题. UTC时间导致时间不一致 ...
- 【VMware Workstation】虚拟机静态IP NAT连接外部网络(局域网以及广域网)
使用虚拟机时,为了减少后期的网络维护工作,配置网络IP时使用了NAT连接.静态IP的方式.这里把我的配置步骤顺序罗列出来. 一.配置虚拟网络编辑器 1.在VMware 的编辑菜单选择虚拟网络编辑器 2 ...
随机推荐
- PostgreSQL学习笔记——摘要
因为PostgreSQL和MySQL.DB2等数据库均遵循SQL语法,所以这篇随笔仅记录一些PostgreSQL中和别的数据库有差别或之前学习中遗漏的地方,以及一些我觉得比较重点的地方. 通过psql ...
- 使用mysqldump备份表数据
使用mysqldump备份远程表数据到本地 下面的命令是使用mysqldump命令备份远程数据库的一张表的信息,并将信息保存到本地的一个文件的一个示例: mysqldump -h 192.168.1. ...
- 【Leetcode_easy】747. Largest Number At Least Twice of Others
problem 747. Largest Number At Least Twice of Others 题意: solution1: class Solution { public: int dom ...
- linux centos7 开启 mysql 3306 端口 外网访问 的实践
第〇步:思路 3306 端口能否被外网访问,主要要考虑: (1)mysql的3306 端口是否开启?是否没有更改端口号? (2)mysql 是否允许3306 被外网访问? (3)linux 是否已经开 ...
- git学习链接---收藏----
Github 创建新分支:https://blog.csdn.net/top_code/article/details/51931916Git易百教程:https://www.yiibai.com/g ...
- 【leetcode算法-简单】27. 移除元素
[题目描述] 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空 ...
- 《ucore lab1 exercise1》实验报告
资源 ucore在线实验指导书 我的ucore实验代码 题目:理解通过make生成执行文件的过程 列出本实验各练习中对应的OS原理的知识点,并说明本实验中的实现部分如何对应和体现了原理中的基本概念和关 ...
- ORA-12514错误分析
ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法 ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 有同事遇到这个问题,现总结一下,原因如下: ...
- Mongo Document 校验
Mongo Datamodel Validation mongo insert,update document时候的校验规则 指定validation rules new collection db. ...
- JAVA支持字符编码读取文件
文件操作,在java中很常用,对于存在特定编码的文件,则需要根据字符编码进行读取,要不容易出现乱码 /** * 读取文件 * @param filePath 文件路径 */ public static ...