睿诚科技协会

VirtualBox虚拟机网络如何配置与故障排查?

VirtualBox 网络模式详解

VirtualBox 主要有四种网络模式,通过虚拟机设置中的“网络” -> “网卡 1” (Adapter 1) 的“ Attached to ”下拉菜单进行选择。

virtualbox 虚拟机 网络
(图片来源网络,侵删)

NAT (网络地址转换) - 默认模式

这是 VirtualBox 最简单、最常用的网络模式,特别适合新手。

  • 工作原理:就像你的家庭路由器一样,虚拟机通过一个虚拟的 NAT 服务,共享宿主机的 IP 地址来访问外部网络,从外部网络(比如你的路由器)看来,所有的网络请求都来自于宿主机,虚拟机则是“隐藏”在宿主机后面的一个私有网络设备。
  • 优点
    • 配置简单:无需任何额外设置,虚拟机就能自动上网。
    • 安全性好:外部网络无法直接访问虚拟机,因为虚拟机在私有网络中。
  • 缺点
    • 无法从宿主机直接访问虚拟机:默认情况下,宿主机无法像访问一个局域网内的电脑一样访问虚拟机的服务(如 Web 服务器、SSH 等)。
    • 无法从局域网其他电脑访问虚拟机:同样,你局域网内的其他设备也无法直接访问这台虚拟机。
  • 适用场景
    • 临时上网,浏览网页、下载软件。
    • 运行一个不需要被外部访问的独立环境。
    • 快速搭建虚拟机,不想费心配置网络。

Bridged Adapter (桥接模式)

桥接模式将虚拟网卡直接连接到宿主机的物理网卡上,效果就像在局域网中添加了一台独立的物理计算机。

  • 工作原理:VirtualBox 会创建一个虚拟的交换机,并将你的物理网卡和虚拟机的网卡都“桥接”到这个交换机上,虚拟机将直接从你的路由器获取一个独立的 IP 地址,成为你局域网中的一员。
  • 优点
    • 虚拟机与宿主机地位平等:虚拟机就像一台独立的电脑,可以和宿主机以及局域网内的任何其他设备互相通信。
    • 可以从外部访问虚拟机:非常方便地搭建需要被外部访问的服务,如 Web 服务器、文件服务器、SSH 服务器等。
  • 缺点
    • 需要局域网内有一个可用的 IP 地址:如果你的路由器 DHCP 地址池已满,虚拟机可能无法获取 IP。
    • 可能暴露虚拟机:虚拟机直接暴露在局域网中,需要注意安全。
  • 适用场景
    • 搭建需要被局域网内其他电脑访问的服务器(如 Media Server, Git Server)。
    • 需要模拟一个真实的网络环境进行测试。
    • 使用网络工具(如 Wireshark)抓取局域网包时,让虚拟机也作为网络中的一员。

Host-only Adapter (仅主机模式)

这种模式创建了一个完全隔离的私有网络,只有宿主机和虚拟机可以在这个网络里互相通信。

  • 工作原理:VirtualBox 会创建一个名为 vboxnet 的虚拟网卡,宿主机和虚拟机都连接到这个虚拟网卡上,形成一个独立的局域网。
  • 优点
    • 安全性高:虚拟机完全隔离,无法访问外部网络,也无法被局域网内其他设备访问。
    • 宿主机与虚拟机互访:宿主机可以轻松访问虚拟机,非常适合开发调试。
  • 缺点
    • 虚拟机无法上网:默认情况下,虚拟机只能和宿主机通信。
  • 适用场景
    • 开发和测试:在虚拟机中运行一个后端服务,在宿主机上通过浏览器或客户端进行访问和调试。
    • 创建一个安全的、隔离的测试环境,不希望它与外界有任何联系。

Internal Network (内部网络)

这种模式和 Host-only 类似,也是一个完全隔离的网络,但隔离的范围更广。

virtualbox 虚拟机 网络
(图片来源网络,侵删)
  • 工作原理:它允许你创建一个或多个完全隔离的虚拟网络,你可以将多个虚拟机连接到同一个内部网络,让它们互相通信,但这个网络与宿主机和外部网络完全隔离。
  • 优点
    • 高度可控的隔离:可以创建多个独立的虚拟网络,每个网络中的虚拟机互相通信,但网络之间互不相通。
    • 安全性极高:实现了网络级别的完全隔离。
  • 缺点
    • 配置相对复杂:需要手动指定网络名称(Netname)。
    • 默认情况下宿主机无法访问:除非进行特殊配置。
  • 适用场景
    • 模拟一个复杂的网络拓扑,比如一个包含多台服务器的内部数据中心。
    • 测试多台服务器之间的通信,而不希望宿主机干扰。
    • 创建一个沙盒环境,进行安全研究。

高级网络配置

除了以上四种基本模式,VirtualBox 还支持更高级的配置,以满足复杂需求。

端口转发 (Port Forwarding) - 解决 NAT 模式的访问问题

这是 NAT 模式下最常用的高级功能,允许你将宿主机的某个端口请求转发到虚拟机的特定端口上。

  • 如何配置

    1. 在虚拟机设置中,选择 NAT 模式。
    2. 点击“高级”按钮,找到“端口转发”。
    3. 点击“添加”按钮,进行如下配置:
      • 名称:给这个规则起个名字,如 ssh-vm
      • 协议:通常为 TCP。
      • 主机 IP:留空表示 0.0.0,即监听宿主机所有 IP 地址。
      • 主机端口:宿主机上开放的端口,如 2222
      • 子系统 IP:虚拟机的内部 IP 地址0.2.15)。
      • 子系统端口:虚拟机上服务的端口,如 SSH 的 22 端口。
    4. 保存设置。
  • 效果:你可以从宿主机(甚至局域网内其他电脑,如果宿主机允许)通过 ssh -p 2222 user@<宿主机IP> 的方式访问虚拟机的 SSH 服务。

    virtualbox 虚拟机 网络
    (图片来源网络,侵删)

网络连接 (Cable Connected)

勾选此项,表示虚拟机的网卡是“已连接”状态,取消勾选则相当于物理拔掉了网线,常用于在虚拟机运行时临时断开网络。

MAC 地址

  • 生成:VirtualBox 可以自动为每个虚拟机的网卡生成一个唯一的 MAC 地址,确保它在网络中是唯一的。
  • 手动设置:你也可以手动指定一个 MAC 地址,这对于需要固定网络配置或某些软件授权的场景很有用。

常见问题与排查

虚拟机无法上网?

  • 检查模式:确认你选择的网络模式是否支持上网(NAT 和 Bridged 可以)。
  • 检查连接状态:在虚拟机设置中,确保“网络”选项卡下的“启用网络连接”是勾选的。
  • 重启网络服务:在虚拟机内部,重启网络服务,在 Linux 中使用 sudo systemctl restart networkingsudo dhclient <网卡名>;在 Windows 中,禁用再启用网卡。
  • 检查宿主机网络:确认宿主机的网络是正常的。
  • NAT 模式:尝试禁用再启用 NAT 服务(VirtualBox 全局设置 -> 网络 -> NAT 网络 -> 编辑 NAT 服务,然后重启)。

宿主机无法访问虚拟机(Bridged 模式下)?

  • 检查 IP 冲突:确保虚拟机获取的 IP 地址没有和局域网内其他设备冲突。
  • 防火墙最常见的原因! 检查宿主机和虚拟机的防火墙(Windows Defender Firewall, iptables 等)是否阻止了访问,尝试临时关闭防火墙进行测试。
  • 检查虚拟机服务状态:确保虚拟机中你想访问的服务(如 SSH, Apache)已经启动并监听在正确的 IP 地址和端口上(通常是 0.0.0,而不是 0.0.1)。

如何查看虚拟机的 IP 地址?

  • Linux/Unix/macOS:在终端输入 ip addrifconfig
  • Windows
    • 命令提示符:ipconfig
    • 图形界面:控制面板 -> 网络和 Internet -> 网络和共享中心 -> 更改适配器设置,右键点击你的网卡,选择“
分享:
扫描分享到社交APP