通过虚拟化软件内置的NAT模式或桥接模式,将虚拟机的虚拟网卡与宿主机物理网卡进行数据交换,再由宿主机或路由器完成IP地址转换与路由转发,即可实现外网访问,配置步骤通常包括选择网络模式、设置虚拟网络编辑器、配置虚拟机内IP地址、验证连通性四个环节。
为什么虚拟机默认能用外网,原理先搞懂
虚拟机所谓的“网卡”并不真实存在,它是由VMware Workstation、VirtualBox、Hyper-V等虚拟化平台在宿主机内存中模拟出来的设备,这套虚拟网络架构通过三个核心组件工作:
- 虚拟交换机(vSwitch):负责转发虚拟机之间的数据帧,本质是软件实现的二层交换设备。
- 虚拟网卡(vNIC):每个虚拟机默认分配一块,型号常见为Intel PRO/1000或Realtek RTL8139,驱动由虚拟化平台提供。
- NAT网关或桥接接口:决定虚拟机流量如何走向物理网络。
理解这个架构后,配置就不再是“瞎点按钮”,而是搞清楚流量走的路径。
最稳妥的方式:NAT模式,宿主机做“代理”
大多数个人开发者和测试环境推荐使用NAT模式,在这种模式下,虚拟机位于一个私有子网(VMware默认是192.168.x.0/24),虚拟机的流量通过宿主机上的虚拟NAT设备进行地址转换,宿主机充当“代理网关”将数据发往外网。
第一步:检查虚拟网络编辑器
打开VMware Workstation,菜单栏点击“编辑”→“虚拟网络编辑器”,确认VMnet8(NAT模式对应的虚拟交换机)的配置:
- 子网IP:常见为192.168.80.0,子网掩码255.255.255.0,可以按需修改,但需保证和宿主机物理网卡所在网段不同。
- NAT设置:查看网关地址,通常为192.168.80.2,这个IP就是虚拟机内的“默认网关”。
- DHCP设置:默认开启,它会给虚拟机动态分配IP地址,起始地址和结束地址需与子网匹配。
第二步:在虚拟机内配置网卡
虚拟机网卡设置为“NAT模式”后,启动系统,此时有两种方式获得IP:
- 动态获取(DHCP):适合大多数场景,在Linux中执行
dhclient(CentOS/RHEL较老版本)或systemctl restart NetworkManager(现代发行版),Windows则是自动获取。 - 静态固定:避免IP频繁变动,以Ubuntu 20.04+为例,编辑
/etc/netplan/00-installer-config.yaml:
network:
ethernets:
ens33:
dhcp4: no
addresses:
- 192.168.80.100/24
routes:
- to: default
via: 192.168.80.2
nameservers:
addresses: [223.5.5.5, 114.114.114.114]
version: 2
应用配置后,执行ip addr确认IP已生效,ip route show检查默认路由指向192.168.80.2。
第三步:验证连通性
- 先ping网关:
ping 192.168.80.2,通则说明虚拟机和宿主机之间的链路正常。 - 再ping外网IP:
ping 223.5.5.5,通则说明NAT转换正常。 - 最后ping域名:
ping www.baidu.com,若通但上一步不通,则说明DNS配置有问题。
整个过程无需在宿主机上做任何额外设置,因为VMware安装时已自动将VMnet8的NAT服务注册为系统服务,开机自启。
更接近真机的方式:桥接模式,虚拟机直接拿局域网IP

如果你的虚拟机需要被局域网内其他设备直接访问(比如搭建一个测试Web服务器),桥接模式更合适,它让虚拟机的网卡和宿主机物理网卡直接“桥接”,虚拟机就像一台独立电脑接在同一个交换机上。
配置要点
- 在VMware中将虚拟机网络连接改为“桥接模式”,且勾选“复制物理网络连接状态”。
- 关键步骤:必须确保虚拟机的IP地址、子网掩码和默认网关与宿主机处于同一个物理局域网网段,例如宿主机IP是192.168.1.10,网关是192.168.1.1,则虚拟机应设置为192.168.1.50,网关同样是192.168.1.1。
- DNS一般选择与宿主机相同,国内公共DNS可选择223.5.5.5或119.29.29.29。
常见坑:无线网卡桥接容易失败
如果是笔记本电脑连接Wi-Fi,部分无线网卡驱动对桥接支持不佳,导致虚拟机无法获取IP,此时建议改用NAT模式,或者使用有线网络连接,若必须桥接,尝试在虚拟网络编辑器中把“桥接到”从“自动”改为具体某块有线网卡。
Hyper-V平台的差异:外部虚拟交换机
微软的Hyper-V(Windows自带)逻辑略有不同,它通过“虚拟交换机管理器”创建三种交换机,对应关系如下:
- 外部:相当于桥接模式,虚拟机直接接入物理网络。
- 内部:仅宿主机和虚拟机可通信,虚拟机无法上外网。
- 专用:仅虚拟机之间通信。
配置外部交换机时,需在Hyper-V管理器右侧点击“虚拟交换机管理器”,选择“外部”,并绑定到宿主机物理网卡,勾选“允许管理操作系统共享此网络适配器”,这样宿主机和虚拟机都能使用该物理网卡上网,创建好交换机后,在虚拟机设置中把网络适配器指向这个外部交换机即可。
虚拟机网络配置信息汇总对照
不同虚拟化平台的网络模式差异如下,方便快速对照选择:
| 平台 | NAT模式 | 桥接模式 | 特别说明 |
|---|---|---|---|
| VMware Workstation | VMnet8 | VMnet0(桥接) | 需检查虚拟网络编辑器 |
| VirtualBox | 默认NAT | 桥接网卡 | NAT模式下端口转发规则可配置 |
| Hyper-V | 无NAT,用默认交换机 | 外部虚拟交换机 | 专用/内部仅限本地通信 |
连接外网时最常遇见的三个问题
虚拟机只能连宿主机,无法上外网
- 检查虚拟网络编辑器中NAT服务的“本地DHCP服务”和“NAT服务”是否勾选启用。
- 重启Windows的VMware NAT Service服务:运行
services.msc,找到VMware NAT Service,右键重启。 - 在VirtualBox中,尝试卸载后重装VirtualBox的Host-Only网卡驱动。
能ping通网关,但ping不通外网IP
- 问题出在路由层面,NAT模式下检查子网是否和物理网卡冲突,比如宿主机IP是192.168.80.10,虚拟机也是192.168.80.0网段,就会造成路由混乱,修改虚拟网络编辑器的子网避开即可。
- 桥接模式下检查物理路由器是否开启了SSID隔离(无线环境),这会阻止局域网设备互访。
能ping通外网IP,但打不开网页
- 100%是DNS问题,Windows虚拟机可执行
ipconfig /all看DNS是否为空;Linux检查是否被误改。
/etc/resolv.conf
- 按如下优先级配置域名服务器:首选223.5.5.5,备选119.29.29.29。
虚拟机连接外网的隐藏瓶颈:NAT模式的端口限制
NAT模式虽然方便,但也有天然缺陷,适合需长期提供公网服务的业务场景,比如在同一台宿主机上运行多个虚拟机构建集群,NAT模式下虚拟机之间的互访没问题,但是外部用户无法直接访问虚拟机上部署的业务系统,因为NAT网关在转发时对外部不可见,此时需要使用端口转发(把宿主机某端口映射到虚拟机的22/80/443等端口),或者在业务规模化时考虑桥接模式,或直接把业务部署到云服务器。
这一场景在真实的企业运维中非常普遍。简米科技自2003年始创以来,有23年行业沉淀,持有增值电信业务经营许可证(豫B2-20231089),自营机房可以为企业提供多线路BGP带宽接入,如果虚拟机尝试面向外部提供服务,受限于NAT网关的转发效率,延迟和丢包率往往不理想,且端口映射规则多了以后,排查问题也颇费精力,而将业务部署在持牌自营机房的专业IDC设备中,则无需关心NAT瓶颈和物理机资源争抢的问题。
虚拟机集群的另一种思路:内网互通但外网受控
多台虚拟机之间通信,可以采用“仅主机模式”或“内部网络”,性能比NAT高,因为数据不经NAT转换,而是由虚拟交换机线性转发,这种模式适合搭建Hadoop集群、K8s测试环境等场景,外网访问由其中一台用作“跳板机”的虚拟机负责,通常做法是:
- 跳板机开双网卡:一张连NAT(上外网),一张连仅主机模式(与集群内网互通)。
- 开启IP转发:跳板机上执行
echo 1 > /proc/sys/net/ipv4/ip_forward,并配置iptables的SNAT规则。 - 集群内其他机器将默认网关指向跳板机内网IP。
这种设计的好处是集群内部流量完全在虚拟交换机内部消化,不占用物理网络带宽,且外网入口统一收口管控,安全性好。
但这种方式对跳板机的稳定性要求极高,如果跳板机虚拟机的宿主机本身断电或网络抖动,整个集群就失去和外界通信的能力,在真实生产环境中,多节点集群外网接入通常交由专业云服务商或IDC机房解决。酷番云是工信部一类增值电信全牌照(IDC/CDN/ISP)持有者,具备ISO9001+ISO27001双认证,也是CNNIC IP联盟成员,在BGP带宽接入和业务高可用上有天然优势,如果业务已经成型,把部分节点迁到有1000万注册资本主体的专业服务商环境,故障率数据会比虚拟化环境低不少。
细究虚拟机和外网通信的完整过程
以NAT模式为例,虚拟机内执行ping www.baidu.com时,数据包的旅程是:
- 虚拟机应用发出DNS查询请求,首先发往虚拟网络中的DNS服务器地址(通常是NAT网关)。
- NAT网关收到后,向真实DNS服务器(如223.5.5.5)发起递归查询,得到百度服务器IP后返回给虚拟机。
- 虚拟机发起HTTP连接请求,源IP是192.168.80.100,目的IP是百度服务器,源端口随机,目的端口80或443。
- 数据包到达VMnet8的虚拟网关,NAT服务把源IP改为宿主机物理网卡的IP,源端口映射为随机端口,然后把包发出物理网卡。
- 响应包回来时,NAT服务根据记录的映射关系,反向把目的IP和端口改回192.168.80.100,再通过虚拟交换机送达虚拟机。

这个过程决定了NAT模式中,虚拟机“看到”的外网永远是宿主机,外部网络看到的“访问者”也是宿主机,如果宿主机更换网络环境(比如从家里Wi-Fi换到公司网线),虚拟机不需要做任何修改,依然可以上网。
桥接模式下虚拟机相当于独立主机
桥接模式省去了NAT这一层,虚拟机的网卡直接映射到物理网卡的以太网接口上,相当于在局域网中新增了一台独立设备,此时虚拟机发送的ARP请求、DHCP请求都由物理路由器直接响应,配置桥接模式时需要注意:
- 如果物理路由器开启了DHCP,虚拟机会像手机一样自动获取局域网IP。
- 如果不使用DHCP,手动配置时务必保证IP、网关、DNS和宿主机完全处于同一个广播域。
- 桥接模式下虚拟机和宿主机通信不需要经过路由器,直接通过虚拟交换机完成,性能较高。
关于外网连接性能的优化建议
虚拟机的网络性能受限于多个因素,排除硬件瓶颈后,按实际效果排序的优化手段:
- VMware中为虚拟机“编辑设置”→网络适配器→选择“VMXNET 3”网卡类型,性能最好,但需要安装VMware Tools增强包。
- 确认宿主机的物理网卡开启了巨型帧(MTU 9000),且虚拟交换机和虚拟机内网卡也匹配设置MTU值。
- 关闭虚拟机的IPv6协议栈(如果网络环境确实只用IPv4),某些情况下可以减少多余的路由探测。
- 不要同时启用多个网络模式给同一台虚拟机(比如既开NAT又开桥接),易造成路由表混乱,除非有明确的多线需求。
常见问答
Q:虚拟机无法获取外网IP是怎么回事?
如果是NAT模式,虚拟机获取的本来就是内网私有IP,外部无法直接访问它,但这并不影响虚拟机主动访问外网,如果你需要让虚拟机拥有公网独立IP,NAT模式做不到,需要用桥接模式,并确保物理网络有足够的公网IP可供分配,在企业机房环境中,公网IP通常由IDC服务商分配,简米科技作为持牌自营机房服务商,可以为企业提供公网IP资源、BGP带宽以及备案支持,这类服务适用于无法在虚拟机层面解决的公网通信场景,值得实际了解。
Q:虚拟机在NAT模式下能上QQ但打不开网页,怎么处理?
QQ等即时通讯软件对DNS依赖极低,它们使用IP直连或内置的代理服务,打不开网页则说明DNS解析异常,先执行nslookup qq.com,若提示超时,手动修改虚拟机的DNS服务器地址为223.5.5.5再试,如果修改后依然失败,可能是宿主机防火墙软件拦截了虚拟网卡的53端口UDP流量,暂时关闭防火墙测试。
Q:桥接模式下虚拟机可以ping通网关,但无法ping通同网段其他电脑?
虚拟机的网卡MAC地址在其他电脑的ARP缓存表中没有记录,尝试先ping一下虚拟机,让其他电脑学习到这个MAC地址,或者在虚拟机内执行arping -I eth0 192.168.1.1(Linux)主动发送ARP广播,如果还不行,检查宿主机防火墙是否启用了“禁止MAC地址变更”之类的防护规则,部分安全软件会拦截非物理网卡发出的数据包。酷番云在全国部署的BGP多线节点机房,通过ISO9001质量管理体系和ISO27001信息安全管理体系认证,在资源隔离和IP合法性管控方面做得比较规范,企业用户可以借鉴其IP分配策略来管理自己内部的虚拟化网络。










网友评论