【问题】为啥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 ...
随机推荐
- 使用json_encode编码中文返回null的解决方案
在gbk的程序中,直接使用json_encode编码包含中文字符的数组,将会返回null. 解决方法: 1.把程序文件编码改为utf8 2.使用mb_convert_encoding把编码转换为utf ...
- PostgreSQL创建database默认编码为UTF-8
在psql中执行如下代码: create database logdb encoding='UTF8';
- render()中添加js函数
方案一: { title: '操作', key: 'operation', render: (_, record) => ( <div> <Link to={`/hostMai ...
- 《Django企业开发实战 高效Python Web框架指南》胡阳
链接:https://pan.baidu.com/s/1NmN_IT5RvevCMt9bZCW1-g提取码:2ki9
- dos下通过命令访问url网址
psexec.exe工具: https://blog.csdn.net/feier7501/article/details/8841756 https://www.cnblogs.com/boltki ...
- [Python[CV2]] -- 352: error -- 来自截取图片
今天想用CV2 截个ROI ( Region Of Interest ) 的时候, 是这样写的 结果, 发现是截取img 那句出了错 应该为: 先纵后横 这样就OK了 cv2.selectROI 用法 ...
- FineReport做成之后如何在Tomcat上运行
问题描述: 自己用FineReport做成的报表画面,要在Tomcat上运行启动 第一步:下载Tomcat 网址: http://tomcat.apache.org/download-80.cgi 下 ...
- POJ2449 【第k短路/A*】
题目链接:http://poj.org/problem?id=2449 题目大意: 给出n个点,m条有向边,最后一行给出起点到终点的第k短路.求长度. 题解思路: 这是我第一道第k短路题以及A*算法的 ...
- S3. Android 消息推送
[概要] 消息推送
- Redis(1.16)Redis监控为什么是单线程?为什么快?
[1]Redis的高并发和快速原因 1.redis是基于内存的,内存的读写速度非常快: 2.redis是单线程的,省去了很多上下文切换线程的时间: 3.redis使用多路复用技术,可以处理并发的连接. ...