温馨提示×

VirtualBox在Ubuntu中如何设置共享网络

小樊
60
2026-01-12 08:58:06
栏目: 智能运维

在 Ubuntu 宿主机上配置 VirtualBox 的共享网络

一、方案总览与选择

  • NAT:最简单,虚拟机通过宿主机上网,外部不可直接访问虚拟机;适合“能上网就行”的场景。
  • 桥接 Bridged:虚拟机获得与宿主机同网段的 IP,像一台真实主机;适合需要与局域网设备互通、端口映射等。
  • Host-Only + 共享/转发:主机与虚拟机互通,再通过宿主机把流量转发到外网;适合需要固定内网网段、同时又能上网与互访的场景。
    以上模式的功能与适用场景见下表与说明。
模式 虚拟机上网 主机↔虚拟机 局域网其他设备↔虚拟机 典型用途
NAT 是(端口转发) 快速上网
桥接 与同网段设备互通
Host-Only + 共享/转发 是(经宿主机转发) 固定内网、可控互通

二、方案一 NAT 快速上网(最省事)

  • VirtualBox 中选中虚拟机 → 设置 → 网络 → 适配器1 → 连接方式选 NAT → 确定并启动虚拟机。
  • 在 Ubuntu 内确认联网:
    • 查看地址:ip addr
    • 测试外网:ping -c 4 8.8.8.8 与 ping -c 4 google.com
  • 如需从外部访问虚拟机服务(如 SSH 22),在 NAT 的“高级 → 端口转发”添加规则(例如:主机端口 2222 → 虚拟机 22)。
    说明:NAT 默认即可上网,适合大多数使用场景。

三、方案二 桥接模式(与局域网同网段)

  • VirtualBox 中选中虚拟机 → 设置 → 网络 → 适配器1 → 连接方式选 桥接 → 在“桥接到”选择宿主机的 以太网或 Wi‑Fi 适配器 → 确定并启动。
  • 在 Ubuntu 内:
    • 若未自动获取地址:sudo dhclient <接口名>
    • 测试:ping 网关IP、ping 8.8.8.8、ping 域名
  • 适用:需要虚拟机在局域网中可见、与路由器下其他设备互通、方便做端口映射与局域网服务发现。

四、方案三 Host-Only + 共享/转发(主机与虚拟机互通且能上网) 此方案让虚拟机处于可控的内网网段(如 192.168.56.0/24),同时通过宿主机把流量转发到外网,兼顾“互访 + 上网”。

  • 步骤 1 创建 Host-Only 网络
    • VirtualBox 菜单:文件 → 主机网络管理器 → 新建(如 vboxnet0),常见默认网段为 192.168.56.1/24。可按需禁用该适配器的 DHCP(便于固定 IP)。
  • 步骤 2 配置虚拟机网卡
    • 虚拟机设置 → 网络 → 适配器1 → 连接方式选 仅主机网络 → 选择 vboxnet0
  • 步骤 3 在 Ubuntu 客户机设置静态 IP(示例)
    • 查看接口名:ip addr(通常为 enp0s8ens33
    • 编辑 Netplan 配置(文件名可能不同,如 /etc/netplan/00-installer-config.yaml01-netcfg.yaml):
      • 示例(使用 Netplan 的“老语法” gateway4,适配 Ubuntu 18.04/20.04 常见写法):
        • network:
          • version: 2
          • renderer: networkd
          • ethernets:
            • enp0s8:
              • addresses: [192.168.56.101/24]
              • gateway4: 192.168.56.1
              • nameservers:
                • addresses: [8.8.8.8, 1.1.1.1]
      • 应用:sudo netplan apply
    • 说明:Host-Only 提供主机↔虚拟机互通;网关指向 vboxnet0 的 192.168.56.1,DNS 使用公共 DNS。
  • 步骤 4 在 Ubuntu 宿主机开启转发并共享上网
    • 开启 IP 转发:
      • sudo sysctl -w net.ipv4.ip_forward=1
      • 持久化:echo “net.ipv4.ip_forward=1” | sudo tee -a /etc/sysctl.conf
    • 启用 NAT(假设宿主机上网接口为 wlan0,请按实际替换为 eth0/enpXs0):
      • sudo iptables -t nat -A POSTROUTING -s 192.168.56.0/24 -o wlan0 -j MASQUERADE
      • 持久化(Ubuntu 18.04+/netfilter-persistent):
        • sudo apt-get install -y iptables-persistent
        • 在保存提示时选择“是”,或手动保存:
          • sudo netfilter-persistent save
  • 步骤 5 验证
    • 在虚拟机:ping 192.168.56.1(宿主机)、ping 8.8.8.8、ping google.com
    • 在宿主机:ping 192.168.56.101(虚拟机)
      说明:该流程基于 Host-Only 网络,通过宿主机启用转发与 NAT 实现虚拟机共享上网,同时保留主机与虚拟机的固定内网互通。

五、常见问题与排错

  • 无法上网
    • 检查默认路由:ip route(应看到 default via 192.168.56.1 或你的网关)
    • 检查 DNS:nslookup google.com;必要时在 Netplan 中配置 nameservers。
  • 主机与虚拟机互 ping 不通
    • 确认虚拟机网卡连接到 vboxnet0,且客户机 IP 在 192.168.56.0/24 并与网关 192.168.56.1 同网段。
  • 端口访问不到
    • NAT 方式请使用“端口转发”;桥接方式可直接用虚拟机 IP 访问。
  • 防火墙/安全组
    • Ubuntu 主机:sudo ufw status;必要时放行(如 sudo ufw allow 22/tcp)。
  • 配置未生效
    • Netplan:修改后执行 sudo netplan apply;如使用 ifupdown,执行 sudo systemctl restart networking。
      以上排错命令与思路适用于 NAT、桥接与 Host-Only 场景。

0