初学VMwareCentOS NAT不联网:排错记录
文章目录[toc]1 问题描述2 Linux 层排错2.1 网卡配置文件名不对2.2 重启网络服务报错2.3 关闭 NetworkManager2.4 查看具体报错原因3 VMware 虚拟层排错3.1 检查虚拟机网卡设置4 Windows 宿主机层排错4.1 检查 VMware 网络服务4.2 虚拟网络编辑器还原默认4.3 手动配置子网 IP5 回到 Linux 完成最后一步5.1 清理残留进程5.2 验证网络连通性6 问题总结1 问题描述VMware 中安装的 CentOS 7 虚拟机网络模式为 NAT无法访问外网。按照网上教程修改网卡配置文件后执行systemctl restart network始终报错。2 Linux 层排错2.1 网卡配置文件名不对网上教程给出的命令是vim/etc/sysconfig/network-scripts/ifcfg-ens32执行后 vim 打开了一个空白文件。这是因为vim 找不到该文件时会自动创建一个同名的新空文件而非报错。不同机器的网卡名称不同教程中的ens32只是示例。使用以下命令查看实际的网卡配置文件名cd/etc/sysconfig/network-scripts/lsifcfg-*本机实际网卡名为ens33用正确的文件名打开后可以看到完整配置vimifcfg-ens33确认ONBOOT已设置为yes开机自动激活网卡保存退出。2.2 重启网络服务报错执行重启命令后报错systemctl restart network报错信息为Job for network.service failed。2.3 关闭 NetworkManagerCentOS 7 中存在两个网络管理服务network传统服务和NetworkManager图形化服务两者同时运行时可能冲突。关闭 NetworkManagersystemctl stop NetworkManager systemctl disable NetworkManager systemctl restart network执行后network服务依然报错。2.4 查看具体报错原因systemctl status network.service-l关键报错信息RTNETLINK answers: File exists。尝试清理网卡状态后重启systemctl stop networkipaddr flush dev ens33 systemctl start network依然报错。此时转用ifup命令直接拉起网卡ifupens33输出失败不存在链接。检查电缆ip addr显示 ens33 状态为NO-CARRIER无载波信号相当于虚拟机的网线没有接通。问题已经不在 Linux 内部而是VMware 虚拟层或 Windows 宿主机层。3 VMware 虚拟层排错3.1 检查虚拟机网卡设置在 VMware 中检查虚拟机的网络适配器设置虚拟机 → 设置 → 网络适配器确认已连接和启动时连接两个复选框都已勾选网络模式确认为NAT 模式确认无误后回到 Linux 再试ifup ens33仍然提示 NO-CARRIER。问题进一步下沉到Windows 宿主机层。4 Windows 宿主机层排错4.1 检查 VMware 网络服务按Win R输入services.msc打开 Windows 服务管理器查找以下两个服务服务名作用排查结果VMware NAT Service提供 NAT 网络地址转换不存在服务列表中找不到VMware DHCP Service为虚拟机分配 IP 地址启动后立即停止服务缺失说明 VMware 的虚拟网卡组件在 Windows 中已损坏。4.2 虚拟网络编辑器还原默认尝试通过 VMware 的虚拟网络编辑器重置网络组件VMware 菜单栏 →编辑→虚拟网络编辑器点击右下角更改设置获取管理员权限点击左下角还原默认设置还原完成后VMware NAT Service重新出现在服务列表中但手动启动时报错错误 1067进程意外终止。4.3 手动配置子网 IP还原默认后虚拟网络编辑器中的子网 IP 显示为0.0.0.0说明 VMware 自动生成配置失败。需要手动填写。手动配置步骤在虚拟网络编辑器中选中VMnet8NAT 模式在主界面底部填写子网信息配置项填写值子网 IP192.168.80.0子网掩码255.255.255.0点击DHCP 设置填写 IP 分配范围配置项填写值起始 IP 地址192.168.80.128结束 IP 地址192.168.80.254点击NAT 设置确认网关地址配置项填写值网关 IP192.168.80.2点击应用→确定子网 IP 填写规则格式为192.168.X.0其中 X 可以是 0~254 之间的任意数字不能与物理主机所在网段相同例如主机 IP 为192.168.1.x则虚拟机子网不能填192.168.1.0NAT 模式下虚拟机处于独立的子网中通过 VMware 虚拟路由器进行地址转换后访问外网5 回到 Linux 完成最后一步5.1 清理残留进程手动配置子网后回到 Linux 执行ifup ens33NO-CARRIER 消失但提示dhclient(1113) is already running - exiting.之前多次尝试启动网络时旧的 DHCP 客户端进程残留在后台阻塞了新的 IP 获取。依次执行以下命令清理并重启网卡# 强行杀死卡死的旧 dhclient 进程pkill-9dhclient# 断开网卡ifdownens33# 重新拉起网卡ifupens33输出bound to 192.168.80.128成功获取 IP。5.2 验证网络连通性# 查看网卡 IPipaddr show ens33# 测试外网连通性ping-c4baidu.comip addr显示inet 192.168.80.128/24ping返回0% packet loss虚拟机已成功上网。打开 Firefox 浏览器访问百度页面正常加载。6 问题总结整个排错过程涉及三个层面按排查顺序汇总如下层面问题原因解决方式Linux 配置层vim 打开空白文件网卡名不是 ens32 而是 ens33ls ifcfg-*确认实际文件名Linux 配置层systemctl restart network报错NetworkManager 与 network 服务冲突关闭 NetworkManagerLinux 配置层RTNETLINK: File exists网卡状态缓存残留ip addr flush dev ens33VMware 虚拟层ifup ens33提示 NO-CARRIER虚拟网卡底层未连通排查 Windows 宿主机服务Windows 宿主机层VMware NAT Service 缺失/1067 错误虚拟网卡组件损坏虚拟网络编辑器还原默认Windows 宿主机层子网 IP 为 0.0.0.0自动生成配置失败手动填写192.168.80.0Linux 配置层dhclient already running旧 DHCP 进程残留pkill -9 dhclient后重新ifup遇到虚拟机网络问题时排查思路应从内到外Linux 配置 → VMware 虚拟层 → Windows 宿主机层。如果 Linux 层报 NO-CARRIER不要在 Linux 内部死磕问题一定在外层。