在 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(通常为 enp0s8 或 ens33)
- 编辑 Netplan 配置(文件名可能不同,如 /etc/netplan/00-installer-config.yaml 或 01-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 场景。