今天做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网关的更多相关文章

  1. NAT网关之SNAT进阶使用(一)SNAT POOL

    摘要: NAT网关是云上VPC ECS访问Internet的出入口.SNAT可实现指定的VPC ECS使用指定的公网IP访问互联网.阿里云NAT网关控制台创建SNAT条目时,默认是为指定的交换机配置1 ...

  2. VMware Workstation虚拟机中的Linux通过NAT模式共享上网配置教程

    VMware Workstation虚拟机中的Linux通过NAT模式共享上网配置教程 在VMware Workstation虚拟机下面,Linux虚机要上网,一般是桥接模式,但我自己的电脑上网的环境 ...

  3. Wmware桥接网络虚拟机无法上网的问题

    之前装好的一个虚拟机,安装到本地的Wmware workstation的时候,发现无法上网. 虚拟机使用的是桥接模式:一开始怀疑IP被占用,修改后发现不起作用.    排查所有的网络配置,发现都没有问 ...

  4. 使用WMware新建linux虚拟机

    使用WMware安装linux虚拟机的时候很多人搞不清楚使用什么适配器. 平时也看到很多误人子弟的观点,这里用事实说话. VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络 ...

  5. VMware workstation创建虚拟机console

    1. 使用VMware workstation创建虚拟机硬件2. 安装操作系统3. 操作系统安装过程 1. 使用VMware workstation创建虚拟机硬件 使用VMware workstati ...

  6. windows10用WMware安装Linux虚拟机详细步骤

    windows10用WMware安装Linux虚拟机详细步骤   一.安装环境 windows10操作系统物理机VMware Workstation 软件(可以在网上下载)CentOS6.9镜像文件( ...

  7. 向 wmware workstation pro 的 MS-DOS 操作系统中导入文件(masm debug edit)(详细图解)

    一般MS-DOS中不包含masm.debug和edit这三个程序. 我们想要把这几个文件导入到wmware workstation pro中的DOS虚拟机中怎么做呢? [尝试] 1.我试过用共享文件夹 ...

  8. WMware Workstation——时间和时区问题

    对于学习Linux的人来说,最常见的做法就是在WMware Workstation下安装Linux系统.在WMware Workstation可能会有几处导致时间.时区问题. UTC时间导致时间不一致 ...

  9. 【VMware Workstation】虚拟机静态IP NAT连接外部网络(局域网以及广域网)

    使用虚拟机时,为了减少后期的网络维护工作,配置网络IP时使用了NAT连接.静态IP的方式.这里把我的配置步骤顺序罗列出来. 一.配置虚拟网络编辑器 1.在VMware 的编辑菜单选择虚拟网络编辑器 2 ...

随机推荐

  1. PHP爬虫最全总结2-phpQuery,PHPcrawer,snoopy框架中文介绍

    第一篇文章介绍了使用原生的PHP和PHP的扩展库实现了爬虫技术.本文尝试使用PHP爬虫框架来写,首先对三种爬虫技术phpQuery,PHPcrawer, snoopy进行对比,然后分析模拟浏览器行为的 ...

  2. 在Electron运行的子页面无法访问window.opener解决方案

    我们的首页有一个window.open打开子页面后反向刷新父页面的功能,但是主页面如果开启了nodeIntegration=true,这个时候再设置nativeWindowOpen是不启作用的.再被w ...

  3. 这一次,真正掌握composer

      思维导图 composer是现代PHP的基石 现代高级编程语言,依赖管理工具是必不可少的.Java有Maven,Python有pip,Nodejs有npm, 而在composer出现之前,PHP只 ...

  4. tp5博客项目实战2

    改虚拟主机 (用www.tp5.com直接访问替代localhost/blog/tp5/public) 1.host修改 位置C:\Windows\System32\drivers\etc 127.0 ...

  5. 移动架构-UML

    UML(Unified Modeling Language),UML规范用来描述建模的概念有,类(对象的).对象.关联.职责.行为.接口.用例.包.顺序.协作,以及状态.这里对UML做一个简单介绍 前 ...

  6. 乐字节Java循环:循环控制和嵌套循环

    乐字节小乐上次讲完了Java反射,接下来小乐给大家讲述Java循环. 循环有以下四部分: 一.循环控制 1. do..while 直到型 ( 先执行后判断) ,结构为: 先执行循环体,后判断布尔表达式 ...

  7. [转帖]Nginx为什么高效?一文搞明白Nginx核心原理

    Nginx为什么高效?一文搞明白Nginx核心原理 咔咔侃技术 2019-09-06 15:37:00 https://www.toutiao.com/a6733057587622707724/ Ng ...

  8. Java 代码读取properties文件

    jdk1.6 package read;import java.io.File;import java.io.FileInputStream;import java.io.IOException;im ...

  9. vm启动时通过U盘安装的方法

    vm启动时通过U盘安装的方法         增加一个以U盘为硬盘的方法,通过boot中设置该硬盘启动后重新ghost或者安装win10X64位. 在虚拟机中增加一个硬盘,第二部设置为物理硬盘,选在对 ...

  10. 利用Python进行数据分析_Numpy_基础_3

    通用函数:快速的元素级数组函数 通用函数,是指对数组中的数据执行元素级运算的函数:接受一个或多个标量值,并产生一个或多个标量值. sqrt 求平方根 np.sqrt(arr) exp 计算各元素指数 ...