距离2025年12月9日,我发布解决Network Unreachable的帖子 再看Linux系统下“connect:network is unreachable”的问题 才刚刚一天不到,我竟然又双叒叕遇到了 CentOS 7 的网络配置问题,还不是同样的问题...我真的服了。
目录
一、问题描述
ping 8.8.8.8 不通,说明外网连不上。显示Destination Host Unreachable(目标主机不可达),我第一反应是我的设备无法找到通往目标 IP 地址的路由。

二、故障定位
排除了 防火墙/安全组阻止了 ICMP 请求(通常表现为 Request Timeout 而非 Unreachable)以及物理或虚拟网络连接问题(通常是网线未插、虚拟交换机的设置问题,这里ip addr显示正常)的问题后,基本只可能出在以下两个方面:
- 网络接口未正确配置(如 IP 地址、子网掩码、网关错误)。
- 目标 IP 不在当前网络子网内,且没有配置正确的路由。
一开始我还奇怪,我的虚拟机工作在NAT模式下,但是和宿主机不在一个子网下。查了资料才知道:在 NAT模式 下,虚拟机与宿主机不需要处于同一子网,这是正常的。NAT模式下,虚拟机会通过宿主机的IP共享上网,通常由虚拟化软件(如VMware)自动管理虚拟网络(如 192.168.x.x(宿主机的子网) 或 172.16.x.x (上图中虚拟机的子网) )。
那么此时真相就只有一个 —— 也就是 虚拟网络配置、网关或DNS的问题。
三、问题解决
1. 检查虚拟机网卡是否启用DHCP
cat /etc/sysconfig/network-scripts/ifcfg-ens33
确保包含:
BOOTPROTO=dhcp
ONBOOT=yes
2. 重新获取IP
使用DHCP获取动态IP:
# 释放旧IP
dhclient -r ens33
# 获取新IP
dhclient ens33
如果DHCP不可用,可以手动配置:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改为:
BOOTPROTO=static
IPADDR=192.168.117.128
NETMASK=255.255.252.0
GATEWAY=192.168.117.2 # 需与虚拟网络编辑器中的网关一致
DNS1=8.8.8.8
DNS2=114.114.114.114
ONBOOT=yes
然后重启网络:
systemctl restart network
3. 检查网关和DNS
查询网关:
ip route show # 或 ip route list

default via 192.168.117.2 表示默认网关是 192.168.117.2 (即所有非本地网络的流量都会经过它,也即 NAT 模式下的虚拟网关)
如果你的输出没有 default via ... 行,说明网关未正确配置。
192.168.117.0/24 表示 本地局域网子网,src 后面跟的是虚拟机 IP,也即192.168.117.128。
192.168.122.0/24 是 virbr0(虚拟网桥)的网络,与 NAT 无关,这里不用管。
确认网关可达:
ping 192.168.117.2 # 替换为你的实际网关
- 如果 ping 通,说明网关配置正确,若此时仍无法上网,则建议检查 DNS:
# 确保有 nameserver(如 8.8.8.8) cat /etc/resolv.conf # 测试 DNS 解析 ping www.baidu.com - 若外网无法解析,则需要手动设置DNS:
echo "nameserver 8.8.8.8" > /etc/resolv.conf - 如果 ping 不通,则需要检查NAT模式的子网和网关设置,并确保NAT服务运行
- 检查 宿主机虚拟网络设置(如 VMware 的 NAT 网关)。
- 在Windows宿主机上,检查 VMwaere NAT Service 是否启动(按 Win + R 输入service.msc,找到并启动该服务)。

以上~ 大功告成!
320

被折叠的 条评论
为什么被折叠?



