【问题】为啥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 ...
随机推荐
- Java如何获取ResultSet结果中的每一列的数据类型
示例代码片段: ResultSet resultSet = statement.executeQuery(sql); ResultSetMetaData metaData = resultSet.ge ...
- 【linux基础】如何开机自启动某个程序-linux工具-ubuntu
前言 实际使用中应用程序或者服务需要开机自启动,而不是人为手动开启运行,那么,该如何做呢,本文对此进行介绍. 操作过程 1. 确定系统的桌面环境: 具体可参考here; 2. 如何自启动: 博主ubu ...
- Python3多重继承排序原理(C3算法)
参考:https://www.jianshu.com/p/c9a0b055947b https://xubiubiu.com/2019/06/10/python-%E6%96%B9%E6%B3%95% ...
- DOS与cmd(windows)
dos是计算机的最初期的操作系统,对电脑操作必须输入各种dos命令窗口,可以理解成运行计算机机器内部语言,知道编程吗?其实早期dos命令操作系统就是运行计算机内部的编程命令,因此操作人员都必须具有一定 ...
- python多进程——fork()
简介 程序每次执行时,操作系统都会创建一个新进程来运行程序指令.进程中可调用os.fork,要求操作系统新建一个子进程.[Windowsc系统中,os模块没有os.fork函数]. 每个进程都有 ...
- 35个高级Python知识点总结
原文地址:https://blog.51cto.com/xvjunjie/2156525 No.1 一切皆对象 众所周知,Java中强调“一切皆对象”,但是Python中的面向对象比Java更加彻底, ...
- 《C语言程序设计》学习笔记(二)
第八章 函数 函数的基本概念 定义:函数由函数名.参数和函数体组成. 函数定义的一般形式: 类型说明符 函数名(形式参数声明) { [说明与定义部分] 语句: } 说明: 1.类型说明符用来说明函数的 ...
- (CVE-2017-8464)LNK文件远程代码执行
漏洞详细 北京时间2017年6月13日凌晨,微软官方发布6月安全补丁程序,“震网三代” LNK文件远程代码执行漏洞(CVE-2017-8464)和Windows搜索远程命令执行漏洞(CVE-2017- ...
- SQL 创建表
SQL 创建表是通过SQL CREATE TABLE 语句来实现,该语句是DDL SQL语句.CREATE TABLE语句用于创建用于存储数据的表.在创建表时,可以为列定义主键.惟一键和外键等完整性约 ...
- 【VS开发】【miscellaneous】 Windows下配置Git
[转自]http://blog.csdn.net/exlsunshine/article/details/18939329 1.从git官网下载windows版本的git:http://git-scm ...