理解四种网络模式
VirtualBox 提供了四种主要的网络连接模式,每种模式都决定了虚拟机如何与主机、外部网络以及其他虚拟机进行通信。

NAT (网络地址转换) - 默认模式
这是最简单、最常用的模式,特别适合新手。
- 工作原理:就像你的家庭路由器一样,虚拟机在 VirtualBox 内部创建一个独立的私有网络(通常是
0.2.x),虚拟机发出的所有网络请求,都会通过 VirtualBox 的一个“虚拟网卡”进行地址转换,然后通过你主机的真实网卡访问外部网络,从外部网络看,所有请求都来自你的主机 IP,虚拟机本身是“隐藏”的。 - 优点:
- 配置简单:无需任何额外设置,开箱即用。
- 安全:虚拟机无法被外部网络直接访问,只能主动发起连接。
- 缺点:
- 无法从外部访问虚拟机:你不能从局域网中的另一台电脑直接访问虚拟机提供的服务(如 Web 服务器、SSH 等)。
- 主机无法直接访问虚拟机:默认情况下,你的主机也无法直接访问虚拟机的服务。
- 适用场景:
- 日常上网、浏览网页、编程练习。
- 任何只需要虚拟机能访问互联网,而不需要被外部访问的场景。
Bridged Adapter (桥接模式) - 最像独立电脑
- 工作原理:VirtualBox 会将虚拟机的虚拟网卡直接“桥接”到你主机的物理网卡上,这使得虚拟机在局域网中表现得就像一台独立的物理计算机,拥有自己的 IP 地址(可以是你路由器 DHCP 分配的,也可以是手动设置的静态 IP)。
- 优点:
- 完全独立:虚拟机就像局域网中的另一台电脑,可以被任何设备访问。
- 灵活性高:可以设置静态 IP,方便服务部署。
- 缺点:
- 占用一个 IP 地址:每台桥接的虚拟机都会消耗你路由器 DHCP 池中的一个 IP 地址。
- 配置稍复杂:需要确保网络环境支持。
- 适用场景:
- 搭建需要被局域网内其他设备访问的服务器(如文件服务器、Web 服务器、Git 服务器)。
- 模拟一个真实的网络环境进行测试。
Internal Network (内部网络) - 虚拟机之间互访
- 工作原理:创建一个完全隔离的、虚拟机专用的内部网络,所有设置为该模式的虚拟机都可以在这个网络中互相通信,但它们与主机和外部网络完全隔离。
- 优点:
- 高度安全隔离:数据完全限制在虚拟机之间,不会泄露到外部。
- 自定义网络:可以创建多个独立的内部网络,实现不同虚拟机组的隔离。
- 缺点:
- 无法访问外部:虚拟机无法上网。
- 适用场景:
- 模拟一个安全的、与世隔绝的测试环境(如测试客户端-服务器架构,但服务器不能暴露在公网)。
- 多个虚拟机需要互相通信,但又不希望它们影响外部网络。
Host-only Adapter (仅主机模式) - 主机与虚拟机互访
- 工作原理:介于 NAT 和 Internal Network 之间,它会创建一个 VirtualBox 专用的私有网络(通常是
168.56.x),虚拟机可以与主机通信,并且同一主机下的其他 Host-only 模式的虚拟机也可以互相通信,但它们与外部网络(互联网)是隔离的。 - 优点:
- 主机与虚拟机互访:方便主机调试虚拟机中的服务。
- 相对隔离:比桥接模式更安全,不会暴露在局域网中。
- 缺点:
- 无法访问外部网络:默认情况下,虚拟机不能上网。
- 适用场景:
- 在主机上开发和调试虚拟机中的应用程序。
- 创建一个安全的、仅供主机和虚拟机使用的沙箱环境。
高级网络:NAT 网络与端口转发
NAT 模式的默认设置不够用,这时就需要用到更高级的功能。
NAT 网络
这是对传统 NAT 模式的一个改进,提供了更灵活的网络配置。
- 与传统 NAT 的区别:
- 传统 NAT:所有虚拟机共享一个
0.2.x网段,配置是固定的。 - NAT 网络:你可以创建多个自定义的 NAT 网络,每个网络可以有独立的网段(如
10.0.0/24),并为每个虚拟机指定不同的 NAT 网络,这使得多台虚拟机可以拥有独立的、隔离的虚拟网络环境。
- 传统 NAT:所有虚拟机共享一个
- 如何设置:
- 在 VirtualBox 主界面,点击
文件->管理->NAT 网络。 - 点击
添加 NAT 网络,创建一个新的网络(命名为mynet)。 - 编辑该网络,设置网关(如
10.0.1)和 DHCP 服务器范围(如10.0.100到10.0.200)。 - 在虚拟机的网络设置中,选择
NAT 网络,并从下拉菜单中选择你刚刚创建的mynet。
- 在 VirtualBox 主界面,点击
端口转发 (Port Forwarding) - 让外部访问 NAT 模式下的虚拟机
这是 NAT 模式下实现“从外部访问虚拟机”功能的关键,它就像在主机的路由器上设置了一个端口映射规则。

- 工作原理:将主机上的某个端口的请求,转发到虚拟机的某个端口上。
- 经典例子:通过 SSH 访问 NAT 模式的虚拟机
- 确保虚拟机:已安装并启动了 SSH 服务(如 OpenSSH Server),并且监听在
22端口。 - 在 VirtualBox 中设置:
- 选中你的虚拟机,进入
设置->网络。 - 选中
NAT模式的网卡,点击右侧的端口转发...按钮。 - 点击
添加按钮,填写规则:- 名称:起一个有意义的名字,如
SSH-Access。 - 协议:
TCP。 - 主机 IP:留空(表示监听主机的所有 IP)。
- 主机端口:设置一个主机上未被占用的端口,
2222。 - 子系统 IP:通常留空,表示虚拟机的 NAT 内部 IP (
0.2.15)。 - 子系统端口:
22(虚拟机 SSH 服务监听的端口)。
- 名称:起一个有意义的名字,如
- 点击
OK保存。
- 选中你的虚拟机,进入
- 连接测试:
- 从你的主机上,你可以通过
ssh -p 2222 user@127.0.0.1来连接虚拟机。 - 从局域网内另一台电脑上,如果你的主机 IP 是
168.1.100,你可以通过ssh -p 2222 user@192.168.1.100来连接虚拟机。
- 从你的主机上,你可以通过
- 确保虚拟机:已安装并启动了 SSH 服务(如 OpenSSH Server),并且监听在
网络模式选择流程图
如果你还是不确定该用哪种模式,可以参考下面的决策流程:
开始
|
V
[虚拟机需要访问互联网吗?]
|-- 是 --> [虚拟机需要被局域网内其他设备访问吗?]
| |-- 是 --> [选择 Bridged Adapter (桥接模式)]
| |-- 否 --> [选择 NAT (网络地址转换) 模式]
|
|-- 否 --> [虚拟机需要被主机访问吗?]
|-- 是 --> [选择 Host-only Adapter (仅主机模式) 或 NAT + 端口转发]
|-- 否 --> [选择 Internal Network (内部网络) 模式]
常见问题与解决方案
-
问题:虚拟机无法上网(NAT 模式下)。
- 解决:
- 确认虚拟机里的网络设置是自动获取 IP (DHCP)。
- 在虚拟机命令行运行
dhclient eth0(或dhclient,根据网卡名) 来尝试重新获取 IP。 - 检查 VirtualBox 的
增强功能是否已安装,这有时能解决网络驱动问题。 - 重启 VirtualBox 的 NAT 服务:在 VirtualBox 主菜单
文件->工具->NAT 服务,重启服务。
- 解决:
-
问题:桥接模式下,虚拟机获取不到 IP 地址。
- 解决:
- 确认你的主机物理网卡是连接到网络的(有线或 Wi-Fi)。
- 检查你的物理网卡是否支持“桥接”,无线网卡桥接可能会有问题,建议使用有线网卡。
- 重启路由器,确保 DHCP 服务正常。
- 尝试在虚拟机中手动设置一个与主机同网段的静态 IP。
- 解决:
-
问题:主机无法 ping 通虚拟机(Host-only 模式下)。
(图片来源网络,侵删)- 解决:
- 确认虚拟机的 IP 地址是否在 Host-only 网段内(通常是
168.56.x)。 - 检查 Windows/Linux 主机的防火墙,是否阻止了 ICMP 请求(ping 使用的是 ICMP)。
- 在虚拟机中关闭防火墙再测试。
- 确认虚拟机的 IP 地址是否在 Host-only 网段内(通常是
- 解决:
希望这份详细的指南能帮助你完全掌握 VirtualBox 的网络设置!如果你有更具体的问题,可以随时提出。
