前几天,一个做运维的朋友在群里发来一句话:我在 VMware 里装了台 CentOS 7 虚拟机,怎么调都只能访问内网,一上外网就断;把网关改回来,内网又访问不了。这问题看着基础,实际踩进去全是细节。日常工作中,很多人的 CentOS 7 虚拟机装在 VMware Workstation 里,既想让它连办公内网,访问 NAS、共享打印机、内网数据库和接口;又希望它保留公网访问能力,能正常执行 yum install、拉取镜像、调用外部 API。说白了就是一台虚拟机要同时踩内网和公网两条网络。这篇我围绕双网卡方案,把 VMware 下的内网、公网完整配置流程,以及背后最容易翻车的路由逻辑一次讲清楚。
1. 一台虚拟机为什么要同时连内网和公网:先从实际场景说起
1.1 最常见的三类场景,你多半也碰到过
这类需求不是某一类人群专属,我接触下来最多的是这三类。
第一类是运维或开发在办公网里干活。虚拟机要连公司的办公内部网络,访问内部 Git、数据库、测试环境 API,同时又要到公网下载软件包、更新依赖。如果只开 NAT,虚拟机确实能上网,但内网服务一个都访问不了;如果切成桥接,外网时好时坏,内网访问倒是通了,可虚拟机多了个局域网 IP,容易被同事的电脑扫描出来,也不安全。
第二类是学习实验环境。比如我要模拟一套双线接入架构:一边接物理家庭内网,访问路由器后台、NAS、智能设备;一边走 VMware NAT 出公网做更新、测试。通过这个环境,可以练习路由、双网卡、策略路由这些真实网络里经常用的东西,而且不会把生产环境搞坏。
第三类是软件部署与联调。我在实际工作里搭过一套数据库测试环境,虚拟机里跑 MySQL 和业务后端,需要连办公内网的认证服务拿 token,同时又要到外网下载 MySQL 的 RPM 包。当时我只用单网卡 NAT,内网认证接口怎么也连不上;切成桥接,外网又时断时续,最后才发现问题不是出在应用层,而是出在虚拟机的路由设计上。
1.2 单网卡为什么搞不定?
一句话:Linux 路由表里的默认路由(0.0.0.0/0)只能有一条。
一张网卡只有一个 IP、一个网关,系统把访问未知网段的流量全部交给默认网关处理。你如果让网关指向内网,外网流量自然出不去;指向公网,内网流量又被默认网关截走。就算你在同一块网卡上配置多个 IP 地址,默认路由依然只能有一条,依然做不到"内网走内网网关、公网走公网出口"这种分流。所以想真正"同时"访问两个网络,最朴素也最稳的做法就是加一块网卡。
1.3 整体配置思路:一张网卡管公网,一张网卡管内网
在动手敲配置之前,先把拓扑和思路定下来,后面才不会越改越乱。我给虚拟机添加第二块虚拟网卡后,基本思路是这样的:第一块网卡接 VMware 的 VMnet8(NAT 模式),负责访问公网,默认网关指向 VMware 虚拟网关;第二块网卡接 VMnet1(仅主机模式)或者桥接到物理网卡,负责访问内网,只填 IP 地址和掩码,不填默认网关;随后在系统里添加一条指向内网网段的路由。这样公网流量走默认路由,内网流量走刚加的静态路由,两个方向互不干扰。整篇文章的核心,就是把这个思路落到命令和配置文件上。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 动手前先摸清 VMware 虚拟网络的底细:VMnet1、VMnet8、桥接的选型逻辑
2.1 三种虚拟网络模式的区别
很多同学配置失败,不是命令敲错,而是没搞懂 VMware 的三种网络模式本质区别。这里我直接列一张对照表,后面所有配置都围绕这张表展开。
| 模式 | 对应虚拟网卡 | 能否访问公网 | 能否访问物理内网 | 适合场景 |
|---|---|---|---|---|
| NAT | VMnet8 | 能,通过宿主机共享 IP 出去 | 默认不能直接访问物理内网,除非额外加路由或端口映射 | 虚拟机只需要联网、不需要被内网设备访问 |
| 桥接 | VMnet0 | 能 | 能,虚拟机相当于物理局域网里的一台独立主机 | 虚拟机需要作为内网成员访问或提供服务 |
| 仅主机 | VMnet1 | 不能 | 只能和宿主机互相通信 | 内网调试、宿主机与虚拟机互访、不希望对外暴露 |
这里面最容易混淆的是 NAT 和仅主机。NAT 模式虚拟机可以主动访问外网,但外网设备访问不到虚拟机;仅主机模式虚拟机连外网都访问不了
