关于CentOS7.0虚拟机ping不通物理机解决方案

昨日遇到了一个很奇怪的问题,虚拟机突然ping不通物理机!

为什么说很奇怪?

因为上午的时候虚拟机还一切正常,虚拟机和物理机是互通的,但是下午睡醒后突然虚拟机就ping不通物理机,物理机是可以ping通虚拟机,期间我也没有去更改设置和配置文件,没有过其他的操作调整,但是就发生了这么个事情,和同事以及朋友都问过,大家都觉得奇怪,也没有找到其中的原因,然后下午就花了很长时间去解决这个问题,好在功夫不负有心人,最终解决了,下面我就描述下这个过程。

目录

一、问题描述

二、解决方案

2.1防火墙

2.2网络配置

1)设置 虚拟机为NAT模式

2)设置  VMware 虚拟机网络

3)设置物理机的网卡

4)设置虚拟机网卡

2.3物理机VMnet8网卡 

2.4虚拟机服务

2.5物理机防火墙入站规则设置


 

一、问题描述

主机能ping通虚拟机ip,但虚拟机ping不通主机ip,也ping不通百度等网站。

二、解决方案

2.1防火墙

其实遇到这种情况,首先可以去查看下防火墙是否关闭。

虽然虚拟机要能够成功ping通物理机并不一定需要关闭防火墙。

不过关闭防火墙是解决网络通信问题的一种方法,但也并非唯一的解决方案。

毕竟如果虚拟机无法ping通物理机,可能有其他原因导致,例如网络配置问题、路由设置或访问控制列表等。

方法如下: 

查看虚拟机的防火墙状态,使用以下命令来检查防火墙服务是否正在运行:

sudo systemctl status firewalld

 如果输出中显示 "active (running)" 或 "active (exited)",则说明防火墙服务正在运行。

如果防火墙是开启运行状态,那么可以使用以下命令来停止防火墙服务:

sudo systemctl stop firewalld

为了确认防火墙服务已经停止,可以再次使用 sudo systemctl status firewalld
 命令检查其状态。如果输出中显示 "inactive (dead)",则说明防火墙服务已经停止。

如果希望在每次启动虚拟机时都禁用防火墙服务,可以使用以下命令:

sudo systemctl disable firewalld

提示:

在大多数情况下,关闭防火墙不需要重启虚拟机。当你停止或禁用防火墙服务后,更改将立即生效,并且防火墙将停止运行。

但是,在某些特殊情况下,可能需要重启虚拟机才能完全生效。例如,如果有其他进程或服务依赖于防火墙服务,并且需要重启以使其重新连接到防火墙,则可能需要重启虚拟机。

补充防火墙相关的命令: 

如果防火墙服务未运行,我们可以使用以下命令启动它:

sudo systemctl start firewalld

如果要检查防火墙规则和配置,可以使用以下命令:

sudo firewall-cmd --list-all

这将显示当前防火墙的状态、已配置的规则和其他相关信息。前提是防火墙是开启状态,否则无法查看到详细信息。

注意:

执行这些操作需要以 root 或具有 sudo 权限的用户身份运行命令。

2.2网络配置

以我的虚拟机为例:

虚拟机:CentOS7.0

IP:192.168.204.130

1)设置 虚拟机为NAT模式

在VMware界面左侧列表选择虚拟机:
→ 右键设置 --打开虚拟机设置
→ 网络适配器  --找到网络连接
→ 选择NAT模式  --【确定】退出

关于CentOS7.0虚拟机ping不通物理机解决方案_第1张图片

2)设置  VMware 虚拟机网络

①VMware 主页上方菜单
→ 编辑
→ 虚拟网络编辑器
→ 选择VMnet8
→点击更改设置,获取管理员权限

关于CentOS7.0虚拟机ping不通物理机解决方案_第2张图片

②配置 子网IP

首先勾选【将主机虚拟适配器连接到此网络(v)】,这个一定要勾选,避免出现物理机网络属性配置中找不到VMnet8网络。
然后配置左下方子网IP为虚拟机IP对应的子网
如ip地址192.168.204.130 ,配置子网:192.168.204.0 

关于CentOS7.0虚拟机ping不通物理机解决方案_第3张图片

③然后 点击 NAT设置
→ 网关IP填写虚拟机IP地址对应的网关,最后一个数字可以为任意值,这里我填2
如ip地址192.168.204.130 ,配置子网:192.168.204.2

关于CentOS7.0虚拟机ping不通物理机解决方案_第4张图片

科普:

在VMnet8网络配置中,网关IP应该填写虚拟机IP地址对应的网关。

最后一个数字可以是任何值,通常取决于你所使用的子网掩码。

子网掩码用于确定IP地址的网络部分和主机部分。

在IPv4中,子网掩码由32位二进制表示,并通过一串四个十进制数(例如255.255.255.0)来表示。

假设你的虚拟机IP地址是192.168.1.100,如果使用标准的子网掩码255.255.255.0,那么网关的IP地址将与虚拟机IP地址的前三个数字相同,即192.168.1.x。而最后一个数字可以是从1到254之间的任意一个值。

因此,在这种情况下,可以选择192.168.1.1作为网关IP地址,也可以选择其他可用的IP地址作为网关。但是需要确保所选的网关IP地址未被其他设备使用,并且与网络中的其他设备的配置保持一致,以确保正确的网络通信。

3)设置物理机的网卡

电脑 win11:

法一:
搜索框查找 或win+R输入 control 打开--【控制面板】
→ 查看网络状态和任务
→ 更改适配器设置

法二:

右键桌面右下角网络--单击【网络和Internet设置】打开设置页面

关于CentOS7.0虚拟机ping不通物理机解决方案_第5张图片

找到【更多网络适配器选项】并打开

关于CentOS7.0虚拟机ping不通物理机解决方案_第6张图片

然后修改VMnet配置:

→ VMnet8:右键属性
①勾选第2项:VMware Bridge Protocol
②双击第4项:Internet协议版本 4(TCP/IPv4)

关于CentOS7.0虚拟机ping不通物理机解决方案_第7张图片

③选择:【使用下面的IP地址(s)】

注:这里我选择设定主机的IPV4地址固定,所以有如下的编辑,大家可以选择【自动获得IP地址(O)】

IP地址选择与虚拟机同一子网下的其他IP
如虚拟机ip地址192.168.204.130 ,此处可填写IP地址:192.168.204.1~254
默认网关与VMware设置中的默认网关一致 

关于CentOS7.0虚拟机ping不通物理机解决方案_第8张图片 

至于【首选DNS服务器(P)】,这里可以写也可以不写,这里可以做个知识补充:

在Internet协议版本4(TCP/IP)设置中,首选DNS服务器是用于解析域名的服务器。

DNS(Domain Name System)将域名转换为相应的IP地址,以便计算机能够通过域名访问特定的网站或服务。

可以填写以下类型的首选DNS服务器:

  1. 公共DNS服务器:这些是由第三方提供的公共域名解析服务,例如Google Public DNS(8.8.8.8、8.8.4.4)和Cloudflare DNS(1.1.1.1、1.0.0.1)。它们通常具有较快的响应时间和可靠性。

  2. 本地网络的DNS服务器:如果你的网络中有一个本地部署的DNS服务器,你可以使用它作为首选DNS服务器。这样做可以减少外部查询并提高域名解析的速度。

  3. ISP提供的DNS服务器:你的互联网服务提供商(ISP)通常会分配给你一个或多个DNS服务器的IP地址。你可以选择使用ISP提供的DNS服务器作为首选DNS服务器。

当然了,公共DNS服务器可以由相应的运营商提供,大家可以根据网络服务提供商的要求或自己的需求选择适合的DNS服务器,比如以下是中国电信、中国联通和中国移动提供的常用DNS服务器:

  1. 中国电信:

    • 首选DNS服务器:114.114.114.114
    • 备用DNS服务器:114.114.115.115
  2. 中国联通:

    • 首选DNS服务器:123.125.81.6
    • 备用DNS服务器:140.207.198.6
  3. 中国移动:

    • 首选DNS服务器:223.5.5.5
    • 备用DNS服务器:223.6.6.6

4)设置虚拟机网卡

①打开虚拟机并登录,输入命令:

ip addr

查看网卡名称,如图,我的虚拟机用的是ens32;关于CentOS7.0虚拟机ping不通物理机解决方案_第9张图片

提示:

redhat7或centos7以上的默认以太网网卡的命名方案是通过biosdevnamesystemd来实现的,使用了一种新的命名规则。默认的网卡命名方式是根据硬件的物理位置和接口类型进行命名,例如enpXsY,其中X代表与主板连接的总线编号,Y代表插槽号。例如ens32,ens33等

redhat6或centos6以下的默认以太网网卡的命名方案是使用传统的命名规则,基于接口的顺序分配名字,例如eth0eth1

总之要设置哪个网卡就改成哪个,不知道的可以输入 如下命令查看:

ls /etc/sysconfig/network-scripts

结果如图:

也可以使用命令:

ll /etc/sysconfig/network-scripts/ifcfg-*

结果如图:

②网卡配置(根据自己查询的网卡名更改)

使用如下命令:

 sudo vi etc/sysconfig/network-scripts/ifcfg-ens32

--如果使用上述命令打开没有数据可以去掉sudo试下

这里我就直接文件查看了,结果如下:

关于CentOS7.0虚拟机ping不通物理机解决方案_第10张图片

主要设置以下几个重要属性,其他属性可以默认,刚装好的虚拟机可能没有这几个(DNS1、IPADDR、PREFIX、GATEWAY)需要的添加上 

但要保证以下几项设置: 

  • ONBOOT为“yes”
  • GATEWAYDNS1和虚拟机网络设置、主机Vnet8网卡设置是一样的
  • IPADDR是虚拟机的IP地址,注意一定不能与主机Vnet8网卡设置的IP地址相同,不然会出现以下几种问题:

虚拟机的IP地址与主机Vnet8网卡设置的IP地址相同时出现的问题:

  1. IP冲突:当两个设备在同一网络上具有相同的IP地址时,会发生IP冲突。这将导致通信问题,因为网络上的路由器和交换机无法确定消息应该发送到哪个设备。

  2. 连接问题:如果虚拟机和主机具有相同的IP地址,它们将不再能够正常进行网络通信。因为网络流量将无法正确路由,可能导致连接失败或丢失数据。

  3. 网络干扰:相同IP地址的设备可能会导致网络干扰和冗余。网络设备可能会混淆两个设备,并尝试将数据发送到错误的目标。

  4. DHCP冲突:如果主机和虚拟机都使用动态主机配置协议(DHCP)来获取IP地址,那么它们之间的IP地址冲突可能会导致网络故障或IP地址分配失败。

然后我对这几个重要设置进行说明: 

BOOTPROTO=static
DEFROUTE=yes
ONBOOT=yes
DNS1=192.168.204.2
IPADDR=192.168.204.130
PREFIX=24
GATEWAY=192.168.204.2

参数解释

  • BOOTPROTO=static(静态ip,动态ip设置为dhcp)设置原因是为了防止每次开机ip都改变,我们需要固定ip。如果你的网络环境是使用了DHCP(Dynamic Host Configuration Protocol)来分配IP地址。那么当在下次虚拟机启动时,它可能会再次请求一个新的IP地址,而不是保留之前的IP地址。因为DHCP是一种动态IP地址分配协议,它允许网络设备自动获取并更新IP地址、子网掩码、网关和其他网络配置信息。在DHCP模式下,网络管理员可以配置DHCP服务器,以便在每次启动时或特定时间间隔内动态分配IP地址给连接到网络的设备。当虚拟机启动时,它会向DHCP服务器请求一个可用的IP地址。DHCP服务器会从预定义的IP地址池中选择一个地址,并将其分配给虚拟机。
  • DEFROUTE=yes(是否默认路由,也就是连外网默认用的这个网卡)
  • ONBOOT=yes(虚拟机启动时连接)
  • DNS1=192.168.204.2虚拟机需要连外网时,比如访问baidu,必须设置这个,一般设置为跟虚拟网络编辑器的网关一致
  • IPADDR=192.168.204.130(虚拟机ip,与虚拟网络编辑器的NAT要同网段)
  • PREFIX=24(跟ip有关,A类地址为8,B类地址为16,C类地址为24,具体什么是ABC类可自行百度)
  • GATEWAY=192.168.204.2(虚拟机网关,与虚拟网络编辑器的网关一致)

③网卡重启

使用如下命令:

sudo systemctl restart network

网络配置完成,其实这个时候大多数情况都是可以完成虚拟机和物理机直接的互通。测试结果如下:

①验证物理机没有问题:

关于CentOS7.0虚拟机ping不通物理机解决方案_第11张图片

②验证虚拟机没有问题:关于CentOS7.0虚拟机ping不通物理机解决方案_第12张图片

③ping百度肯定也没有问题:

关于CentOS7.0虚拟机ping不通物理机解决方案_第13张图片

2.3物理机VMnet8网卡 

如果有如下情况的话建议重启物理机VMnet8网卡:

  1. 网络故障:如果出现与VMnet8网卡相关的网络连接问题,例如无法连接到虚拟机或无法访问网络资源,重启物理机上的VMnet8网卡可能有助于修复这些问题。这样可以重新初始化和刷新网卡配置,以确保正常的网络功能。

  2. IP地址冲突:如果物理机和虚拟机之间的IP地址冲突,可能导致网络通信问题。重启VMnet8网卡有时可以解决此类冲突,使网络连接恢复正常。

  3. 网络配置更改:当您对物理机上的网络设置进行更改时,例如更改IP地址、子网掩码或网关等,重启VMnet8网卡可以使更改生效并更新网卡的配置。

  4. 虚拟化软件更新:如果您安装了新的虚拟化软件或更新了已安装的虚拟化软件,重启物理机上的VMnet8网卡可能是必要的,以使新的软件配置和更新生效。

注意:

这种方式是可能性的解决方案,如果需要重启,尤其是在工作中,在执行此操作之前,请确保保存所有重要数据并提前通知相关用户或系统管理员。 因为重启物理机上的VMnet8网卡将导致与该网卡相关的网络连接中断,包括所有使用该网卡的虚拟机。

2.4虚拟机服务

为了确保虚拟机在使用VMnet8网络时能够正常进行网络连接和通信,则需要检查VMwareDHCPNAT服务是否正在运行,最好设置成自动和正在运行,以下是一些原因:

  1. IP地址分配:DHCP服务负责为虚拟机提供IP地址分配。如果DHCP服务未运行或未设置为自动启动,虚拟机可能无法获取到正确的IP地址,导致无法与其他设备进行网络通信。

  2. 网络连接共享:NAT服务允许虚拟机与外部网络进行通信,通过将虚拟机的网络流量转发到物理机的网络接口上。如果NAT服务未运行或未设置为自动启动,虚拟机将无法与外部网络建立连接或访问Internet。

  3. 方便的网络配置:通过启用自动启动和持续运行DHCP和NAT服务,您无需手动管理这些服务。当您启动虚拟机或重新启动主机时,DHCP和NAT服务将自动运行,确保无缝的网络连接。

检查方法:按键 【win+r】,输入services.msc找到以下两个服务:

关于CentOS7.0虚拟机ping不通物理机解决方案_第14张图片

2.5物理机防火墙入站规则设置

在Windows物理机防火墙高级设置里启用两个入站规则文件和打印机共享回显请求ICMPv4-ln,域和专用公用都启用),这里解释下原因:目的是确保文件和打印机共享以及网络连通性的正常运行

分析如下:

  1. 文件和打印机共享:通过启用文件和打印机共享规则,您可以允许其他计算机或设备通过网络访问和共享您物理机上的文件和打印机资源。这对于实现局域网内的文件共享和打印功能非常重要。

  2. 回显请求(ICMPv4-ln):回显请求是一种网络协议,用于检测主机或设备是否可达和响应。通过启用回显请求规则,您允许其他计算机发送ICMP回显请求到您的物理机,并接收回复。这对于网络故障排除和远程连接诊断非常有用。

  3. 域和专用公用:启用域和专用公用规则意味着您允许来自域网络和专用网络的传入连接。这样,其他位于同一个域或专用网络中的计算机或设备可以与您的物理机建立连接,并进行相应的网络通信

操作步骤:

我以联想电脑为例:

→桌面右键【显示设置】,找到【隐私和安全性】

关于CentOS7.0虚拟机ping不通物理机解决方案_第15张图片

→找到【Windows安全中心】并打开

关于CentOS7.0虚拟机ping不通物理机解决方案_第16张图片

→点击【打开Windows安全中心】 

关于CentOS7.0虚拟机ping不通物理机解决方案_第17张图片

→找到【防火墙和网络保护】 ,选择【高级设置】并打开

关于CentOS7.0虚拟机ping不通物理机解决方案_第18张图片

→选择【入站规则】 ,找到下图标记的两个规则,如果是关闭的就右键【启用规则】,或者选中该规则,在最右边栏目中点击绿图标【启用规则】开启

关于CentOS7.0虚拟机ping不通物理机解决方案_第19张图片

注意:

在启用这些规则时,确保网络环境安全,然后根据需要进行适当的配置和限制。

这里给出一点方法建议,仅供参考:

  1. 文件和打印机共享:在启用文件和打印机共享规则时,确保只允许受信任的计算机或设备访问和共享您的资源。您可以通过在防火墙设置中指定特定的IP地址范围或子网,或者使用访问控制列表(ACL)来限制访问。

  2. 回显请求(ICMPv4-ln):ICMP回显请求有时可以被滥用为网络攻击工具。为了增强安全性,您可以限制仅允许特定的IP地址或子网发送回显请求,并且禁止来自其他来源的请求。这样可以减少潜在攻击者对您系统的扫描或探测。

  3. 域和专用公用:如果您的网络环境不需要与域网络或专用网络进行通信,可以禁用相应的规则。这将限制来自域或专用网络的传入连接,帮助减少潜在的攻击面。

  4. 定期审查和更新配置:定期审查和更新防火墙配置,以确保适应最新的网络需求和安全要求。同时,及时应用操作系统和防火墙软件的安全补丁和更新,以修复已知漏洞和强化安全性。

  5. 启用日志记录:启用防火墙和操作系统的日志记录功能,以便跟踪和监视网络流量、连接和事件。这将帮助您检测潜在的安全威胁,并提供信息供后续调查和故障排除。

其实到这一步,基本上很多问题都解决了,正常情况虚拟机和物理机是可以互相ping通的, 如果还存在虚拟机ping不通物理机的话,只能使用比较残忍又麻烦的手段解决,大家忍痛卸载虚拟机,然后重新安装配置尝试吧,而且这种方式也并不能保证完全有效,所以只能期待你们一切顺利!

对此我可以再给大家出一个绝招,要不要试试删除注册表?这个毕竟我没有试过,只是听别人给我的大胆建议,去下载一款安全软件,比如:ccleaner。​​​​​至于原因请看下面描述:

注册表可能阻止虚拟机连接物理机网络的原因通常是由于网络配置或安全设置引起的。以下是一些可能导致注册表阻止虚拟机连接物理机网络的情况:

  1. 防火墙设置:Windows操作系统的注册表中的防火墙设置可能会限制虚拟机与物理机之间的网络连接。这包括入站和出站规则,以及网络策略设置。如果防火墙设置不正确,可能会阻止虚拟机访问物理机网络。

  2. 网络适配器设置:注册表中的网络适配器设置可能会影响虚拟机的网络连接。例如,某些设置可能会限制虚拟机接收或发送网络流量。这可能包括禁用或限制虚拟网络适配器的功能。

  3. 安全策略:注册表中的安全策略设置可能会限制虚拟机连接到物理机网络。这些设置可能要求特定的网络授权或身份验证,或者限制虚拟机的网络访问权限。

  4. 虚拟化软件配置:虚拟化软件(如VMware、VirtualBox等)可以通过修改注册表来管理虚拟机和主机之间的网络连接。如果配置错误,这可能会导致虚拟机无法连接到物理机网络。

其实解决此问题的具体步骤还是得取决于具体的情况和操作系统。一般来说,大家可以检查并修改注册表中与网络连接相关的设置,确保防火墙规则允许虚拟机的网络流量通过,并验证安全策略中是否存在限制虚拟机网络连接的设置。如果使用虚拟化软件,确保其配置正确并与物理机网络适配器能够进行正确的映射。不过还是给大家提个醒:在修改注册表之前,务必备份重要的注册表项,并且谨慎操作。如果操作不当,后果很严重的,要么系统不稳定或无法启动,应用程序故障或无法运行,要么数据丢失或损坏,以及系统功能受限或失效,甚至遭到恶意软件攻击,所以说这个是很大胆的建议,哈哈!!!

总结:

其实本篇内容就是对网络配置连接的整理,要想保证物理机和虚拟机能够互通,起码得保证网络配置至少是没有问题,至于其他的问题可能很奇特,就比如我开头所讲的奇怪问题,其实就是 2.5物理机防火墙入站规则 的原因,下午1点多那会断网,然后我发现ping不通的时候,实在不知道原因,朋友说要不重启电脑试一下,我又把电脑重启了,但最终也不清楚为啥出现这个情况。最后请教了大学时候的导师,他给了建议我尝试了下就解决了。

既然遇到了这么个情况,我就花时间简单总结下,文章中也是罗列了几种方法,以及操作步骤,希望对各位有帮助!爱你们!!!

完事了,撒丫子走人,我又熬了半宿,真累呀!  111111

你可能感兴趣的:(Linux问题集,linux,运维,服务器)