虚拟机三种网络模式:NAT、桥接、仅主机
引言
搭建虚拟化环境,第一步就要搞定虚拟机的网络配置。我刚接触的时候有几个疑问:桥接、NAT、仅主机这几种模式到底有啥区别?分别适合什么场景?
弄懂之后发现,核心差异很简单,就是虚拟化软件处理网络流量、转发数据包的方式不一样。
这篇文章以 VMware 为例,说一下这三种常用网络模式的底层原理,再结合实操,展示它们各自的网络特点。
一、 网络模式
1.1 NAT 模式
NAT(Network Address Translation)模式下,虚拟机处于一个独立的私有网络中。宿主机同时扮演虚拟路由器和 DHCP 服务器的角色:虚拟机获得的 IP 地址由宿主机分配,访问外网时数据包的源地址被替换为宿主机的 IP 地址。
- 对内而言:所有连接到同一个 NAT 网络的虚拟机都位于同一个私有网段(如
192.168.xxx.xxx),它们之间可以直接通信,无需经过 NAT 转换即可互相 ping 通。 - 对外而言:宿主机所在物理局域网的其他设备只能看到宿主机的 IP 地址,无法直接感知虚拟机的存在。
- 宿主机访问:宿主机与虚拟机之间的连通性,取决于虚拟化软件是否在宿主机操作系统中创建了对应的主机虚拟适配器(Host Virtual Adapter)。VMware 通过 VMnet8 虚拟网卡默认打通了这条通道,使宿主机能直接访问虚拟机。
打个比方说,NAT 模式相当于一栋公寓,住户(虚拟机)可以互相串门,寄往外面的信都通过前台(宿主机)转发,公寓外的人无法直接找到特定房间的住户。
1.2 桥接模式
桥接模式将虚拟机的网卡直接连接到宿主机的物理网络接口上。虚拟机通过宿主机的物理网卡向所在局域网发送 DHCP 请求,获得一个与宿主机同网段的独立 IP 地址。
此时,从网络角度看,虚拟机与宿主机是地位平等的两台独立设备,虚拟机可以无障碍地与宿主机、局域网其他设备以及外网进行双向通信。打个比方说,桥接模式就相当于在房东的院子里单独盖了一间房,拥有独立的门牌号,快递可以直接送到门口。
1.3 仅主机模式
仅主机模式下,虚拟化软件创建一个与物理网络完全隔离的私有网络。虚拟机之间及虚拟机与宿主机之间可以通过虚拟网卡(VMnet1)相互通信,但无法访问外网或物理局域网中的其他设备。
打个比方说,仅主机模式相当于一个封闭的度假村,只有村民(虚拟机)和村长(宿主机)之间可以来往,与外界完全隔离。
二、 实验验证
实验一:NAT 模式的“单向透明”与“内部自治”验证
实验目的:展示 NAT 模式对外的隔离性与对内的自治性。
1.环境:在 VMware 中将虚拟机的网络适配器设置为 NAT 模式。

打开 VMware 虚拟网络编辑器,可以看到 VMnet8 的子网地址是192.168.92.0,这个子网并不是绝对的,而是随机分配的。

2.出向连通性:在虚拟机执行 ping www.baidu.com。

由图可知,ping通了,证明 NAT 转发引擎工作正常,内网可访问外网。
3.入向隔离性:记录虚拟机 IP,尝试用同一局域网的另一台手机或电脑 Ping 该地址。

这里由于我的笔记本电脑是连接的手机热点,所以在手机上ping。

由图可知,失败了。证明 NAT 隐藏了内部节点,实现了单向隔离。
4.内部通信:再启动一台 NAT 模式下的虚拟机

192.168.92.128 ping 192.168.92.129

192.168.92.129 ping 192.168.92.128

结论:NAT 网络内部是一个完整的自治局域网。
实验二:VMnet8 虚拟网卡的“管理桥梁”角色
实验目的:验证 VMware 中宿主机能访问虚拟机并非 NAT 本身特性,而是靠 VMnet8 网卡实现的“管理通道”。
1.初始状态:在宿主机执行 ping 192.168.92.128,结果成功。

2.切断桥梁:进入宿主机网络面板(在宿主机命令提示符中输入 ncpa.cpl可以快速打开),禁用 VMware Network Adapter VMnet8。

3.验证影响:
- 宿主机 Ping 虚拟机:失败。

- 虚拟机访问外网:依然成功。

结论:NAT 模式的本质是隔离(例如隔离了宿主机外部的访问)。但是 VMware 为了方便用户管理,额外修了一条“内部走廊”(VMnet8),但这并不属于标准 NAT 转发路径的一部分。
实验三:桥接模式的局域网透明性测试
实验目的:验证虚拟机在二层网络中的独立性。
1.修改配置:将虚拟机改为桥接模式,重新获取 IP。
需要在VMware里面的虚拟网络编辑器里面看一下桥接模式选择的网卡,这里我由于是连接的手机热点,所以选择对应的网卡。


2.验证:
在宿主机的终端输入ipconfig,找到对应的网卡,然后在虚拟机中再次查看地址。


可以看到,虚拟机已经变为与宿主机一致的网段下了。
3.外部访问:
使用局域网内其他设备 Ping 该虚拟机,这里依旧用我的手机来 Ping

可以看到成功 Ping 通了。
结论:桥接模式消除了 NAT 的地址转换层,使虚拟机变成了局域网中的真实节点。
实验四:仅主机模式的彻底封闭性
实验目的:验证移除 NAT 引擎后的纯净内网环境。
1.环境:
将虚拟机切换至仅主机模式,注意:如果不手动指定自定义 VMnet 的话,会自动绑定到 VMware 默认的仅主机网卡 VMnet1。


切换后,查看虚拟机的IP,会发现,已经变为了VMnet1对应子网的地址了。

2.外网测试:执行 ping www.baidu.com。

可以看到,Ping 失败了。
3.内部测试:
宿主机 Ping 虚拟机

可以看到,宿主机通过 VMnet1 网卡依然可以 Ping 通虚拟机。
结论:仅主机模式移除了公网出口,仅保留了宿主机与虚拟机的管理通道,适用于高度安全的隔离实验。
三、 特性对比
| 特性 | 桥接模式 | NAT 模式 | 仅主机模式 |
|---|---|---|---|
| 网络层级 | 与宿主机同级 | 宿主机下属私有子网 | 完全隔离的私有子网 |
| 对外可见性 | 局域网完全可见 | 外部不可见(被隐藏) | 完全不可见 |
| 出向访问 | 直接访问外网 | 通过 NAT 转发访问外网 | 无法访问外网 |
| 宿主机管理 | 通过物理网络访问 | 通过 VMnet8 虚拟网卡访问 | 通过 VMnet1 虚拟网卡访问 |
| 核心逻辑 | 透明转发 | 隔离与转换 | 封闭连接 |
四、 如何选择合适的模式
通过实验展示出来的特性,可以看出各个模式适合的场景:
- NAT 模式。既能保证虚拟机随时更新补丁和依赖,又不会占用局域网 IP 资源,且宿主机管理方便。
- 桥接模式。当需要把虚拟机里的服务提供给局域网内的设备访问时,桥接是最简单的方案。
- 仅主机模式。当需要运行可能包含风险的代码,或者模拟一个没有外网干扰的内网环境时。