在 VirtualBox 中,你提到的“共享网络”通常指的是 NAT(Network Address Translation,网络地址转换) 模式,这是 VirtualBox 默认的网络模式,也是最容易配置的。

什么是 NAT 模式?
你可以把 NAT 模式想象成一个带路由功能的路由器。
- 你的电脑(主机, Host):就像这个路由器连接的局域网。
- 你的虚拟机(客户机, Guest):就像连接在这个路由器上的一个设备(比如你的手机或电脑)。
- VirtualBox 的 NAT 引擎:就是路由器本身。
工作流程如下:
- 虚拟机想要访问外部网络(比如互联网)时,它会发送一个数据包。
- 这个数据包到达 VirtualBox 的 NAT 引擎。
- NAT 引擎会将这个数据包的源 IP 地址(虚拟机的内网 IP)替换成你主机的 IP 地址。
- 这个数据包就以你主机的身份发送到了互联网上。
- 当互联网上的服务器返回数据时,数据包先发到你主机。
- 你主机的 NAT 引擎根据记录的“会话”,将数据包的目标地址再改回虚拟机的内网 IP,最后转发给虚拟机。
核心特点:
- 简单易用:无需任何额外配置,虚拟机就能“上网”。
- 单向访问:虚拟机可以访问外部网络(主机可以上网),但外部网络(包括你自己的主机)无法直接访问虚拟机,虚拟机在互联网上是一个“透明”的存在,你不知道它的真实 IP。
如何配置 NAT 模式(默认设置)
通常情况下,VirtualBox 在创建虚拟机时就已经默认为你配置好了 NAT 模式,你几乎不需要做任何操作。

步骤 1:创建或编辑虚拟机网络设置
- 打开 VirtualBox,选中你的虚拟机。
- 点击“设置”(Settings)按钮。
- 在左侧菜单中,选择“网络”(Network)。
- 在“Attached to:”(连接方式)的下拉菜单中,你会看到默认就是 NAT。
- 确保右侧的“网卡 1”(Adapter 1)是勾选状态。
步骤 2:在虚拟机内部获取 IP
启动你的虚拟机(Windows, Linux),然后打开命令行或终端。
-
在 Windows 虚拟机中:
ipconfig
你会看到一个类似“以太网适配器 VirtualBox NDIS6 Miniport”的适配器,它通过 DHCP 自动获取了一个 IP 地址(通常是
x.x.x或168.x.x网段)。 -
在 Linux 虚拟机中:
ip a # 或者 ifconfig
你会看到一个类似
eth0或enp0s3的网卡,也通过 DHCP 获得了 IP 地址。
你的虚拟机已经可以通过 NAT 模式访问互联网了,你可以尝试 ping www.baidu.com 或 ping 8.8.8.8 来测试。
NAT 模式的高级配置:端口转发
NAT 模式的最大限制是无法从主机访问虚拟机,但 VirtualBox 提供了一个强大的功能来解决这个限制:端口转发。
端口转发允许你将主机上的某个端口(8080)的流量,转发到虚拟机的某个端口(80),这样,当你在主机的浏览器中访问 http://localhost:8080 时,请求就会被自动发送到虚拟机的 Web 服务器(监听在 80 端口)。
应用场景:
- 在虚拟机中运行一个网站,想用主机的浏览器访问它。
- 在虚拟机中运行一个 SSH 服务器,想用主机的 SSH 客户端连接它。
- 在虚拟机中运行一个数据库,想在主机上用管理工具连接它。
配置步骤:
我们以“从主机 SSH 连接到虚拟机”为例。
-
在虚拟机中启用 SSH 服务。
- 对于 Ubuntu/Debian:
sudo apt update && sudo apt install openssh-server - 对于 CentOS/RHEL:
sudo yum install openssh-server - 确保虚拟机的防火墙允许 SSH 连接(默认端口 22)。
- 对于 Ubuntu/Debian:
-
在 VirtualBox 中设置端口转发。
- 回到虚拟机的“设置” -> “网络”页面。
- 确保“连接方式”仍然是 NAT。
- 在右侧的“NAT 网络设置”区域,点击“端口转发...”(Port Forwarding...)按钮。
-
添加转发规则。
- 点击右上角的“+”号添加新规则。
- 名称:给规则起个有意义的名字,
SSH_to_Ubuntu。 - 协议:选择
TCP(SSH 默认使用 TCP)。 - 主机 IP:留空或填写
0.0.1(表示只允许本机访问,更安全)。 - 主机端口:填写一个你主机上未被占用的端口,
2222。 - 子系统 IP:留空,VirtualBox 会自动将流量转发给虚拟机的内网 IP。
- 子系统端口:填写虚拟机上服务监听的端口,这里是
22(SSH 默认端口)。 - 点击“OK”保存。
-
连接测试。
- 在你的主机上(不是虚拟机里),打开终端或命令提示符。
- 使用 SSH 命令连接,但端口要写成你设置的主机端口:
# 格式: ssh <虚拟机用户名>@<主机IP> -p <主机端口> ssh your_vm_user@localhost -p 2222 # 或者 ssh your_vm_user@127.0.0.1 -p 2222
- 输入虚拟机用户的密码,你就能成功连接到虚拟机了!
NAT 模式的优缺点总结
| 优点 | 缺点 |
|---|---|
| 配置简单:无需任何配置即可上网。 | 无法从外部访问:默认情况下,虚拟机是一个“黑盒”,无法被主机或其他电脑主动访问。 |
| 安全隔离:虚拟机与外部网络完全隔离,受主机防火墙保护。 | 部分应用受限:一些 P2P 应用、在线游戏或需要直接暴露的服务在 NAT 模式下可能无法正常工作。 |
| 节省 IP 地址:虚拟机使用私有 IP,不会消耗你局域网内的公网或私有 IP 资源。 | 主机无法直接访问虚拟机服务:必须通过端口转发才能实现,配置相对复杂。 |
其他网络模式简介(作为对比)
为了更好地理解 NAT,这里简单提一下 VirtualBox 的其他网络模式:
- 桥接模式:最像物理连接,虚拟机的网卡直接桥接到你主机的物理网卡上,相当于虚拟机和主机在同一个局域网里拥有平等的地位,虚拟机可以获取与你主机同网段的 IP 地址,局域网内的任何设备都可以直接访问它。
- 仅主机模式:创建一个完全独立的私有网络,只有主机和虚拟机可以互相访问,虚拟机无法访问外部互联网,非常适合在主机和虚拟机之间进行安全的文件共享或服务测试。
- 内部网络模式:创建一个完全隔离的网络,只有连接到这个“内部网络”的虚拟机之间可以互相通信,主机和其他虚拟机都无法访问。
常见问题排查
-
问题:虚拟机无法上网?
- 检查:确认虚拟机的“网络设置”是 NAT 模式。
- 解决:在虚拟机内释放并重新获取 IP 地址(Windows:
ipconfig /renew,Linux:sudo dhclient eth0),如果还不行,尝试在 VirtualBox 的“全局设定” -> “网络” -> “NAT 网络”中,点击“重置”按钮。
-
问题:端口转发后,主机还是无法访问虚拟机?
- 检查:
- 虚拟机内的服务(如 SSH、Web 服务器)是否已经启动?
- 虚拟机内的防火墙是否允许对应端口的流量?
- 端口转发规则中的“子系统端口”是否正确?
- 主机端口是否被其他程序占用?
- 解决:逐一排查以上几点,可以使用
telnet <主机IP> <主机端口>(在 Windows 上) 或nc -zv <主机IP> <主机端口>(在 Linux/macOS 上) 来测试端口是否可达。
- 检查:
希望这份详细的指南能帮助你完全理解并掌握 VirtualBox 的 NAT 共享网络功能!
