睿诚科技协会

VirtualBox网络模式怎么选?NAT和桥接有啥区别?

理解四种网络模式

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

VirtualBox网络模式怎么选?NAT和桥接有啥区别?-图1
(图片来源网络,侵删)

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 网络,这使得多台虚拟机可以拥有独立的、隔离的虚拟网络环境。
  • 如何设置
    1. 在 VirtualBox 主界面,点击 文件 -> 管理 -> NAT 网络
    2. 点击 添加 NAT 网络,创建一个新的网络(命名为 mynet)。
    3. 编辑该网络,设置网关(如 10.0.1)和 DHCP 服务器范围(如 10.0.10010.0.200)。
    4. 在虚拟机的网络设置中,选择 NAT 网络,并从下拉菜单中选择你刚刚创建的 mynet

端口转发 (Port Forwarding) - 让外部访问 NAT 模式下的虚拟机

这是 NAT 模式下实现“从外部访问虚拟机”功能的关键,它就像在主机的路由器上设置了一个端口映射规则。

VirtualBox网络模式怎么选?NAT和桥接有啥区别?-图2
(图片来源网络,侵删)
  • 工作原理:将主机上的某个端口的请求,转发到虚拟机的某个端口上。
  • 经典例子:通过 SSH 访问 NAT 模式的虚拟机
    1. 确保虚拟机:已安装并启动了 SSH 服务(如 OpenSSH Server),并且监听在 22 端口。
    2. 在 VirtualBox 中设置
      • 选中你的虚拟机,进入 设置 -> 网络
      • 选中 NAT 模式的网卡,点击右侧的 端口转发... 按钮。
      • 点击 添加 按钮,填写规则:
        • 名称:起一个有意义的名字,如 SSH-Access
        • 协议TCP
        • 主机 IP:留空(表示监听主机的所有 IP)。
        • 主机端口:设置一个主机上未被占用的端口,2222
        • 子系统 IP:通常留空,表示虚拟机的 NAT 内部 IP (0.2.15)。
        • 子系统端口22 (虚拟机 SSH 服务监听的端口)。
      • 点击 OK 保存。
    3. 连接测试
      • 从你的主机上,你可以通过 ssh -p 2222 user@127.0.0.1 来连接虚拟机。
      • 局域网内另一台电脑上,如果你的主机 IP 是 168.1.100,你可以通过 ssh -p 2222 user@192.168.1.100 来连接虚拟机。

网络模式选择流程图

如果你还是不确定该用哪种模式,可以参考下面的决策流程:

开始
  |
  V
[虚拟机需要访问互联网吗?]
  |-- 是 --> [虚拟机需要被局域网内其他设备访问吗?]
  |         |-- 是 --> [选择 Bridged Adapter (桥接模式)]
  |         |-- 否 --> [选择 NAT (网络地址转换) 模式]
  |
  |-- 否 --> [虚拟机需要被主机访问吗?]
            |-- 是 --> [选择 Host-only Adapter (仅主机模式) 或 NAT + 端口转发]
            |-- 否 --> [选择 Internal Network (内部网络) 模式]

常见问题与解决方案

  1. 问题:虚拟机无法上网(NAT 模式下)。

    • 解决
      1. 确认虚拟机里的网络设置是自动获取 IP (DHCP)。
      2. 在虚拟机命令行运行 dhclient eth0 (或 dhclient,根据网卡名) 来尝试重新获取 IP。
      3. 检查 VirtualBox 的 增强功能 是否已安装,这有时能解决网络驱动问题。
      4. 重启 VirtualBox 的 NAT 服务:在 VirtualBox 主菜单 文件 -> 工具 -> NAT 服务,重启服务。
  2. 问题:桥接模式下,虚拟机获取不到 IP 地址。

    • 解决
      1. 确认你的主机物理网卡是连接到网络的(有线或 Wi-Fi)。
      2. 检查你的物理网卡是否支持“桥接”,无线网卡桥接可能会有问题,建议使用有线网卡。
      3. 重启路由器,确保 DHCP 服务正常。
      4. 尝试在虚拟机中手动设置一个与主机同网段的静态 IP。
  3. 问题:主机无法 ping 通虚拟机(Host-only 模式下)。

    VirtualBox网络模式怎么选?NAT和桥接有啥区别?-图3
    (图片来源网络,侵删)
    • 解决
      1. 确认虚拟机的 IP 地址是否在 Host-only 网段内(通常是 168.56.x)。
      2. 检查 Windows/Linux 主机的防火墙,是否阻止了 ICMP 请求(ping 使用的是 ICMP)。
      3. 在虚拟机中关闭防火墙再测试。

希望这份详细的指南能帮助你完全掌握 VirtualBox 的网络设置!如果你有更具体的问题,可以随时提出。

分享:
扫描分享到社交APP
上一篇
下一篇