今晚在配置Linux (CentOS7完整版)的时候 明明已经配好了网络环境,重启虚拟机后,又出现了Ping不通 主机、Ping不通网关,外网的情况 (NAT)。
让我很费解的一个情况是,同一个VM下,我两台Centos,一个mini版本,ifcfg-ens33 文件配置内容与新配置的 CentOS7 DVD版本几乎相差无几,但是新配置的完整版,就是死活ping不通。
关闭了防火墙,修改了Windows入站出站规则,关闭了NetworkerManager ,没有任何作用。
我回忆了一下:
是否有一次强制退出(非正常退出虚拟机)的情况?
好像有。。。
检查虚拟机在windows下的各种服务有没有打开,嗯,都是打开,且正常的
比较值得关注的是Authorization Server、NAT、和VMware workstation Server 三个服务
都没问题。
改用桥接
ping的时候(主机、外网、网关) 依然是:出现Destination Host Unreachable
当我用另一台正常的CentOS 连接SecureCRT时,甚至发现连不上了???
我在在那台刚刚还正常的Centos上 ping 主机、外网、网关,都是正常的,这就说明,主机Ping不通虚拟机了。
我看了一下Windows网络适配器:
vmware network adapter VMnet8消失了 (下文介绍此虚拟网卡的作用)
解决办法:
1、重装VMware,懒得装,太麻烦
2、Vmware工具栏 【编辑】——>【虚拟机网络设置】——>【还原默认设置】
vmware network adapter VMnet8 再次出现,此时,我们更具这个虚拟适配器提供的属性,我们重新配置一下centos的网络
基本就解决问题了。
基本模型
桥接模式:宿主机充当一个网桥,虚拟机的网段要和宿主机保持一致。
这样宿主机形成的局域网可以访问到虚拟机,而虚拟机也可以访问到宿主机局域网,不安全。
虚拟机通过宿主机的路由进行外网连接。
桥接模式下,物理机和虚拟机是等效的,你可以把虚拟机理解成该网段内的普通主机。
桥接模式下如果ping不通,一般都是防火墙没关,或者IP地址冲突,网络配置文件没有配置正确,虚拟机网卡没有激活,桥接选择的主机网卡错误。在虚拟机网络设置里,它对应的是VMnet0
首先、我们要知道,什么是NAT:
NAT Net Address Translation 网络地址转换协议
NAT协议是将IP数据报头中的IP地址转换为另一个IP地址的过程,主要用于实现私有网络访问共有网络的功能。
这种通过使用少量IP地址代表较多IP地址的方式,有助于减少IP地址空间枯竭的现象。
NAT模式下,主机给我们虚拟了一个网络适配器 VMware Network Adapter for VMnet8
这个虚拟网卡,在宿主机也加入了VMnet8子网段的局域网,让NAT模式下,该宿主机内的虚拟机都在此局域网内。
这样的意义其实是为了解决 NAT模式下,主机的本质是充当一个路由,在NAT服务下,帮助虚拟机进行访问外网,但是这样会有一个问题,虚拟机无法访问到主机。
于是,宿主机(物理机)虚拟出来一个网卡,让自己和虚拟机都在这个网段内,这样大家就能互相访问了。
在我的虚拟机配置里
物理机真实IP是192.168.1.3,它相当于一个路由,同时也是提供NAT服务的作用。
Vmnet8虚拟子网是 192.168.190.0
虚拟机ip是192.168.190.127
虚拟子网段的网关是 192.168.190.2
宿主机在Vmnet8子网下的IP是 192.168.190.1
这里我再强调一下,Vmnet8是虚拟子网段的名称,而不是虚拟出的网卡,从设备管理器里我们能看到虚拟网卡的全名
其实简单的来说,仅主机模式就是 NAT模式,去掉主机的NAT服务,路由功能,仅仅虚拟出一个VMnet1子网,并虚拟出一个Vmnet1下的网卡,让主机和虚拟机构成一个专用局域网。仅限于内部访问,不可以连外网。
前面我们说Linux文件目录的时候说过,配置文件往往都在 /etc目录下
命令如下
vim /etc/sysconfig/network-scripts/ifcfg-ens33
添加IP,子网掩码,网关,DNS,将DHCP动态获取IP改为 static。ONBoot 改为yes
NETMASK =255.255.255.0 可以简写为prefix=24 (掩24位)
IP地址32位,平时我们写的点分十进制可以转换成二进制32位去理解
比如以C类地址为例:
C类地址前3个段是网络号,最后一个段是主机号,这就是说 转换为32位二进制表示,只有后8位,我们可以划分主机号(且要排除0和255 ),那么前24位就是网络号,且最高位必须是110(即192 二进制1100 0000)
除了点分十进制,我们还可以写成等效斜线记法:
IP地址/掩码位数(网络号长度)
我的虚拟机IP就可以写成
192.168.190.137/24
这里注意一个细节:
我们可以通过虚拟机dhcp设置,看看动态获取的IP的范围,防止我们自己固定IP的时候,越界
(1)物理机能 ping 通虚拟机,但是虚拟机 ping 不通物理机,一般都是因为物理机的 防火墙问题,把防火墙关闭就行
(2)虚拟机能 Ping 通物理机,但是虚拟机 Ping 不通外网,一般都是因为 DNS 的设置有 问题
(3)虚拟机 Ping www.baidu.com 显示域名未知等信息,一般查看 GATEWAY 和 DNS 设 置是否正确
(4)如果以上全部设置完还是不行,需要关闭 NetworkManager 服务
systemctl stop NetworkManager 关闭
systemctl disable NetworkManager 禁用
其实NetWorkManager是CentOS7新的网络服务,它的作用等同于centOS6的network.service
这两个服务保留一个就行了,如果都处于active(runing)状态,会产生冲突,导致网络异常
(5)如果检查发现 systemctl status network 有问题 需要检查 ifcfg-ens33