在之前文章里,完成了 VMware 的安装,了解了 Linux 和 Windows 的核心差异、文件系统结构,也把最常用的几个基础命令梳理了一遍。
下面梳理下最常见的几个问题:
“装完 CentOS 系统,虚拟机死活连不上网,该怎么办?” “虚拟机可以打开百度,但就是 ping 不通宿主机,问题出在哪?” “NAT、桥接、仅主机模式,到底该选哪个?选完之后要怎么配?”
刚接触 Linux 的时候,搞不清上面这些问题 —— 照着教程装完系统,对着黑屏的终端,输什么命令都提示 “网络不可达”,一会儿改网卡配置,一会儿重启服务,网上的教程越看越乱,最后甚至重装了三遍系统,还是没解决问题。
后来才慢慢明白,装完虚拟机连不上网,90% 都不是系统装错了,而是没搞懂「虚拟机和宿主机到底是怎么通过网络对话的」。这篇文章,不讲晦涩的网络协议,只说能落地的实操,从三种网络模式的底层逻辑,到一步步配置实现上网 + 宿主机双向通信,再到高频故障排查,一次性解决这个装机路上最大的拦路虎。
先搞懂核心:虚拟机的网络,到底是怎么来的?
很多人装完虚拟机、装完linux系统会把虚拟机当成一台完全独立的电脑,觉得装完系统就该自动能上网,这其实是第一个认知误区。
虚拟机本质上是运行在宿主机( Windows 电脑)上的一个软件,它没有自己真正的物理网卡,所有的网络数据,都要通过宿主机的物理网卡来收发。VMware 给我们提供了三种网络模式,本质上就是三种不同的「借网方式」,对应着不同的使用场景。选不对模式,或者模式和配置不匹配,自然就会出现连不上网、通不了宿主机的问题。
之前有过经历,装系统的时候随便选了一个模式,后续听别人说另一个模式更好,就直接在虚拟机设置里切换,却不修改对应的配置,最后直接断网,慌得手足无措。在这里,我们不用急于把三种模式都玩明白,先搞懂最基础的逻辑,选对适合自己的模式,比瞎改配置有用得多。
三种网络模式一次讲透:新手再也不纠结怎么选
1. NAT 模式(网络地址转换):闭眼选的默认模式
如果用生活化的场景类比,NAT 模式就像是:你的宿主机是一个小区,虚拟机是小区里的住户,小区有一个统一的大门(宿主机的物理网卡)通向外面的互联网。住户想要上网,所有的网络请求都会通过小区大门统一转发,外面的互联网只能看到小区大门的地址,看不到里面住户的地址;小区里的住户可以自由和大门(宿主机)通信,也能通过大门访问外面的世界,但小区外的设备,默认没法直接找到里面的住户。
核心优势: •零额外配置门槛,只要你的宿主机能上网,虚拟机就能上网,不会因为你从家里换到公司、从 WiFi 换到有线网就断网; •不会占用你所在局域网的额外 IP 地址,不会出现 IP 冲突的问题,对新手极度友好; •天然能实现虚拟机和宿主机的双向通信,满足我们日常学习、敲命令、装软件的所有需求。 |
唯一的小局限:局域网里的其他电脑、手机等设备,默认没法直接访问你的虚拟机。
2. 桥接模式:适合需要局域网访问的进阶场景
同样用类比来说,桥接模式相当于你给虚拟机“独立开了一个门”——它不再是小区里依赖大门的住户,而是和你家(宿主机)一样,成为了小区里独立的“住户”。这个“小区”,就是你家或公司的WiFi或有线网络(路由器覆盖的局域网)。虚拟机和宿主机共用同一个路由器,路由器会给虚拟机分配一个和宿主机同网段的、独立的IP地址(相当于独立门牌号),比如宿主机IP是192.168.1.100,虚拟机可能就是192.168.1.101,两者完全平级,没有“谁依赖谁”的关系。举个最直观的例子:你手机连了家里的WiFi(和宿主机同个网络),在手机上打开浏览器,输入虚拟机的IP地址,就能直接访问虚拟机里搭建的网站;或者你同事的电脑和你在同一个办公室网络,他也能通过虚拟机IP,直接连接你的虚拟机,不用经过你的宿主机转发。简单说,桥接模式下的虚拟机,就是一台“伪装成真实电脑的虚拟机”,和你桌上的台式机、笔记本一样,在局域网里是独立存在的,所有局域网内的设备都能直接找到它、访问它。局域网里的所有设备,包括你的手机、同事的电脑,都能直接访问这台虚拟机,就像访问局域网里的另一台真实电脑一样。
适用场景: •你需要在虚拟机里搭建网站、服务,让同一个局域网里的其他人也能访问; •你要搭建多节点的服务器集群,需要每台虚拟机都有独立的局域网 IP; •要做一些和真实服务器环境一致的网络测试。 |
新手避坑提醒:桥接模式对网络环境的适配性很差,你换一个网络环境(比如从家里 WiFi 换到公司有线网),网段就变了,虚拟机的 IP 就会失效,需要重新配置;而且如果局域网的 DHCP 服务器有限制,还可能出现获取不到 IP 的问题。如果没有上述适用场景,暂时可配置为net模式即可。 |
3. 仅主机模式:完全隔离的测试专用模式
这个模式很好理解,就像是把虚拟机关在了宿主机的房间里,它只能和宿主机通信,完全没法通过大门访问互联网,和外部网络是完全隔离的。这个模式日常学习几乎用不到,只有在做一些安全测试、病毒分析,需要完全隔离的网络环境时,才会用到,只需要知道有这个模式存在就够了。
学 Linux 就像搭积木,先把 NAT 模式配好,让虚拟机能正常上网、能和宿主机通信,能顺利装软件、敲命令、跑脚本,把基础打牢,再去学进阶的模式,才是最高效的学习方式。
保姆级实战:NAT 模式配置,实现上网 + 宿主机双向通信
前置准备
1.先把你的虚拟机关机(不是挂起),修改网络配置,关机状态下操作更稳妥,避免出现配置不生效的问题;

2.找到桌面上的 VMware 图标,右键选择「以管理员身份运行」。

这是第一个天坑!当初第一次配置的时候,对着虚拟网络编辑器里灰色的设置按钮研究了一下午,怎么都改不了参数,最后才发现,就差这一个 “以管理员身份运行” 的操作,新手 90% 的配置失败,都栽在这一步。 |
步骤 1:配置 VMware 虚拟网络编辑器
1.打开 VMware 后,点击顶部菜单栏的「编辑」→「虚拟网络编辑器」,打开配置窗口;

2.在窗口里找到「VMnet8」,这就是 NAT 模式对应的虚拟网卡,选中它;
3.先勾选下方的「将主机虚拟适配器连接到此网络」,再勾选「使用本地 DHCP 服务将 IP 地址分配给虚拟机」(先勾选,后续熟悉了再换静态 IP);

4.这里会看到「子网 IP」和「子网掩码」,比如默认的子网 IP 是192.168.20.0,子网掩码是255.255.255.0,不用乱改,把这个子网网段记下来,后面会反复用到;
5.点击右下角的「NAT 设置」,打开后会看到「网关 IP」,比如192.168.20.2,这个地址一定要抄下来,一个数字都不能错,它是虚拟机上网的关键,后面配置网卡必须填这个地址;
6.都记好之后,点击「确定」保存配置,不要直接点右上角的叉号,不然配置不会生效。
步骤 2:检查宿主机的虚拟网卡是否正常
很多人为了让电脑不卡,会把 VMware 的虚拟网卡禁用,这就直接导致虚拟机和宿主机没法通信,这里要确认一下:
1.打开 Windows 的「控制面板」→「网络和 Internet」→「网络连接」;
2.找到「VMware Network Adapter VMnet8」这个网卡,看它的状态是不是「已启用」;

3.如果是禁用状态,右键点击它,选择「启用」即可;
4.右键这个网卡,选择「属性」,双击「Internet 协议版本 4 (TCP/IPv4)」,选择「自动获得 IP 地址」和「自动获得 DNS 服务器地址」,点击确定保存。
这里也说一句,很多教程会让你手动给 VMnet8 网卡设置固定 IP,完全没必要,自动获取就足够了,手动设置反而容易出现网段不匹配的问题,导致通信失败。
步骤 3:给虚拟机设置网络适配器模式
1.回到 VMware 主界面,选中你安装好的 Linux 虚拟机,点击右侧的「编辑虚拟机设置」;
2.在弹出的窗口里,找到「网络适配器」,点击选中它;

3.右侧的网络连接模式,选择「NAT 模式」,点击确定保存;
4.到这里,VMware 层面的配置就全部完成了,接下来启动你的 Linux 虚拟机。
步骤 4:配置 Linux 虚拟机网卡文件(核心步骤)
这里会完全承接我们之前讲的 Linux 文件系统知识,CentOS Stream 10 已全面采用 NetworkManager 作为默认网络管理工具,废弃了传统的 network 服务与旧版配置目录,网卡配置文件统一存放在/etc/NetworkManager/system-connections/目录下。
1.登录虚拟机后打开终端,先切换到 root 用户,输入su - root,回车后输入 root 密码,因为修改系统配置文件必须要有管理员权限;

这块有几个知识点进行说明:
a.打开终端后,使用什么用户登录,最前面会显示用户名:如qw;
b.linux系统终端password后输入密码,不会显示任何字符,只会在输入错误回车后才有提醒;
c.普通用户登录显示$,root用户登录显示#。
2.先查看你的网卡配置文件名,输入命令:(注意:每个系统网卡配置文件名可能不同,且相同系统不同版本网卡文件名可能也存在差异)
查看网卡配置文件名:
|
执行后会输出DEVICE类似ens160的信息,不同的系统文件名不一样,,把这个记下来;
3.用 vim (vi跟vim命令后面再讲)编辑器打开这个配置文件,比如我的网卡名是ens160,就输入命令:
打开网卡配置文件vim /etc/NetworkManager/system-connections/ens160.nmconnection |

打开文件后,按i键进入编辑模式(左下角出现insert,就可以进行输入或修改内容):
针对提供如上图 ens160.nmconnection 网卡配置文件进行逐项解析说明:
a.基础连接配置段 [connection]
id=ens160
- 网卡连接的逻辑名称,通常与网卡设备名一致,用于 NetworkManager 管理标识。
type=ethernet
- 连接类型为有线以太网(Ethernet),区别于 wifi 、 bridge 等类型。
uuid=28b029f0-d551-3af9-bc8d-81f1360efe22
- 全局唯一标识符(UUID),由 NetworkManager 自动生成,用于唯一标识此连接配置,不可重复。
interface-name=ens160
- 绑定的物理网卡设备名称(需与 ifconfig 或 ip a 显示的设备名一致)。
autoconnect-priority=-999
- 自动连接优先级(默认 0 ),负数表示低优先级。 -999 通常用于避免自动激活此连接。
timestamp=1774739296
- 最后修改时间戳(Unix 时间戳),对应日期为 2026-03-29 12:08:16 UTC(需转换: date -d @1774739296 )。
b.协议层配置
[ethernet] 段
- 当前配置为空,表示使用默认以太网参数(如无特殊 MAC 地址绑定、双工模式等配置)。
[ipv4] 段
method=auto
- IPv4 地址分配方式为自动获取(DHCP)。若需静态 IP,需改为 method=manual 并指定 address1=IP/网关 (如 192.168.20.20/24,192.168.6.254 )。
[ipv6] 段
addr-gen-mode=eui64
- IPv6 地址生成模式为 EUI-64(基于 MAC 地址生成后缀),此为默认值。
method=auto
- IPv6 地址分配方式为自动获取(如 SLAAC 或 DHCPv6)。
[proxy] 段
- 当前配置为空,表示未配置网络代理(如 HTTP/SOCKS 代理)。
c.图中所示为系统自动获取ip及相应网络配置,现实中如果需要ssh登录或者重启虚拟机及电脑,此地址也会变化,所以需要手动设置静态ip地址,方便后续使用。
给大家一个完整的配置参考,照着改就行:
针对CentOS-Stream-10系统网卡配置文件完整参考:
|
改完之后,按Esc键退出编辑模式,输入:wq,回车保存并退出 vim 编辑器;
最后一步,重启网络服务,让配置生效,输入命令:
重载配置并重启网卡 nmcli connection reload nmcli connection up ens160 |
没有报错的话,就说明配置生效了。
步骤 5:验证连通性,确认配置成功
接下来我们一步步验证,从内到外,只要每一步都能 ping 通,就说明配置完全没问题了。
1.先验证网卡配置是否生效输入命令ip addr,回车后就能看到我们配置的 IP 地址192.168.20.100已经出现在网卡信息里了,说明配置文件生效了。

2.验证虚拟机和网关的连通性输入命令ping 192.168.20.2(你的网关地址),能看到持续的返回信息,没有超时,说明虚拟机和虚拟网关的通信正常。按Ctrl+C可以停止 ping 命令。
3.验证虚拟机和宿主机的双向通信
○先看宿主机的 VMnet8 网卡 IP:在 Windows 里打开 cmd,输入ipconfig,找到 VMware Network Adapter VMnet8 的 IPv4 地址,比如192.168.20.1;
○在虚拟机里输入ping 192.168.20.1,能正常返回,说明虚拟机可以访问宿主机;
○在 Windows 的 cmd 里输入ping 192.168.20.100(你的虚拟机 IP),能正常返回,说明宿主机也能访问虚拟机,双向通信就通了。
4.验证虚拟机能否正常上网输入命令ping baidu.com,能正常返回信息,没有提示 “未知的名称或服务”,说明虚拟机可以正常访问外网,我们的配置就彻底成功了。
新手 90% 的网络问题,都能在这里找到解决方案
整理了一些故障,每一个都给了对应的解决方案,照着排查,基本都能解决问题。
问题 1:重启网络服务报错,提示 “Job for network.service failed”
90% 的原因是网卡配置文件写错了:
•检查有没有拼写错误,比如GATEWAY多写或漏写字母;
•检查 IP 地址、网关地址的网段是不是一致,比如子网是 192.168.20.0,结果 IP 填了 192.168.10.100;
•检查配置文件里有没有多余的空格,尤其是每行的结尾,不要有多余的空格。
问题 2:能 ping 通 IP 地址,但 ping 不通baidu.com
这是典型的 DNS 配置问题:
•先检查网卡配置文件里的 DNS1 有没有正确填写;
•再查看/etc/resolv.conf文件,输入命令cat /etc/resolv.conf,看里面有没有nameserver 8.8.8.8,如果没有,就手动加上;
•别用多个公共 DNS,就填 8.8.8.8 和 114.114.114.114 两个就够了,填太多反而会出现解析问题。
问题 3:能 ping 通网关,也能上网,但 ping 不通宿主机
99% 的原因是 Windows 防火墙拦截了:
•临时测试可以先关闭 Windows 的防火墙(控制面板→系统和安全→Windows Defender 防火墙→启用或关闭防火墙,把专用网络和公用网络的防火墙都关掉),再 ping 一次,能通就说明是防火墙的问题;
•不建议长期关闭防火墙,可以在防火墙里添加入站规则,允许 VMware 的虚拟网卡网段的所有通信,一劳永逸。
问题 4:虚拟网络编辑器里的设置全是灰色的,没法修改
没有以管理员身份运行 VMware,关掉 VMware,右键图标选择「以管理员身份运行」,再打开就正常了。
问题 5:配置都对,但就是上不了网,ONBOOT 也改成 yes 了
先输入命令ifconfig(没有的话用ip link),看网卡的状态,是不是有DOWN的标识,如果有,输入命令ifup ens160(你的网卡名),启动网卡即可。
写在最后
学 Linux 的过程,就是一个不断解决问题的过程。从基础命令一步步积累到高级命令、 Shell 脚本、服务部署,网络这个最基础的 “桥梁”—— 连不上网,就装不了软件,没法远程连接,后续的所有工作都没法展开。
Linux系统不用追求快,也不用怕出错。就像这个网络配置,可能会折腾了好几天,才把每个参数的意义、每个配置的逻辑搞明白,而这些经历,最后都变成了最扎实的基础。
现在已经把虚拟机的网络彻底打通了,接下来,我们就可以告别在 VMware 里敲命令的麻烦,用远程软件连接 Linux 虚拟机,实现和企业生产环境完全一致的操作体验。
❤️如果觉得这篇文章对你有用,别忘了点赞 + 关注;如果还有没解决的问题,也可以在留言区讨论沟通。
记得关注【极客代码库】,不错过每一篇干货!
往期文章:
虚拟化技术基础(VMware/VirtualBox/KVM)