本文详解VirtualBox在Ubuntu中配置共享网络的三种核心方案:NAT(快速上网)、桥接(局域网互通)及Host-Only(固定内网)。涵盖从基础设置到Netplan静态IP、iptables端口转发的高级配置,并附带路由检查、防火墙放行等常见排错步骤,帮助开发者实现虚拟机与宿主机的稳定互联。
VirtualBox网络模式对比与选择
在Ubuntu宿主机上运行VirtualBox虚拟机时,选择合适的网络模式是确保网络互通的关键。VirtualBox主要提供三种网络适配器连接方式,各自适用于不同的业务场景:
- NAT(网络地址转换):配置最简单。虚拟机通过宿主机访问外网,但外部设备无法直接访问虚拟机。适合仅需虚拟机上网的场景。
- 桥接模式(Bridged):虚拟机获得与宿主机同网段的独立IP,如同局域网中的一台真实物理机。适合需要与局域网其他设备互通、部署局域网服务或进行端口映射的场景。
- Host-Only + 共享/转发:虚拟机处于受控的内网网段(如
192.168.56.0/24),通过宿主机开启IP转发和NAT实现上网。适合需要固定内网IP、主机与虚拟机高频互访且需隔离外网直接访问的场景。
| 模式 | 虚拟机上网 | 主机虚拟机 | 局域网其他设备虚拟机 | 典型用途 |
|---|---|---|---|---|
| NAT | 是 | 是(需端口转发) | 否 | 快速上网、开发测试 |
| 桥接 | 是 | 是 | 是 | 局域网服务、设备互通 |
| Host-Only | 是(需配置转发) | 是 | 否 | 固定内网、安全隔离 |
方案一:NAT模式快速上网配置
NAT模式是VirtualBox的默认网络模式,无需额外配置即可实现虚拟机访问互联网。若需从宿主机或局域网其他设备访问虚拟机内的服务(如SSH、Web服务),需配置端口转发。
第1步:配置虚拟机网络适配器
- 在VirtualBox管理器中选中目标虚拟机,点击“设置”。
- 进入“网络”选项卡,确保已启用“适配器1”。
- 将“连接方式”选择为
NAT。 - 点击“确定”保存设置并启动虚拟机。
第2步:验证虚拟机网络连通性
启动Ubuntu虚拟机后,打开终端执行以下命令验证网络状态:
- 查看IP地址:
ip addr - 测试外网连通性:
ping -c 4 8.8.8.8或ping -c 4 google.com
若上述命令返回正常响应,说明虚拟机已成功联网。
第3步:配置端口转发(可选)
若需从外部访问虚拟机服务(例如将宿主机的 2222 端口映射到虚拟机的 22 端口):
- 在虚拟机网络设置中,展开“高级”选项。
- 点击“端口转发”按钮,添加新规则。
- 设置规则:
- 名称:SSH
- 协议:TCP
- 主机IP:127.0.0.1
- 主机端口:2222
- 客户机IP:留空(或填写虚拟机IP)
- 客户机端口:22 - 保存后,可通过
ssh -p 2222 user@localhost从宿主机访问虚拟机。
方案二:桥接模式实现局域网互通
桥接模式允许虚拟机直接连接到物理网络,获取与宿主机同网段的IP地址。适用于需要虚拟机在局域网中独立存在、被其他设备直接访问的场景。
第1步:配置桥接网络
- 在VirtualBox中选中虚拟机,进入“设置” → “网络”。
- 将“连接方式”选择为
桥接网卡。 - 在“名称”下拉菜单中,选择宿主机的物理网络接口(如
eth0、wlan0或 Wi-Fi 适配器)。 - 点击“确定”并启动虚拟机。
第2步:获取IP并验证连通性
启动虚拟机后,系统通常会自动通过DHCP获取IP。若未自动获取,可手动执行:
sudo dhclient <接口名>
验证网络:
- ping 网关IP(如
ping -c 4 192.168.1.1) - ping 外网地址(如
ping -c 4 8.8.8.8) - ping 域名(如
ping -c 4 baidu.com)
此时,虚拟机应能与局域网内其他设备互相访问。
方案三:Host-Only模式实现可控内网互通
Host-Only模式创建一个仅宿主机与虚拟机可见的私有网络。通过配置宿主机IP转发和NAT,可实现虚拟机既拥有固定内网IP,又能访问外网。
第1步:创建Host-Only网络
- 在VirtualBox主界面,点击
文件→主机网络管理器。 - 点击
创建按钮,生成一个新的Host-Only网络(默认通常为vboxnet0)。 - 记录该网络的网段(默认为
192.168.56.1/24)。 - (可选)若需固定IP,可禁用该网络的DHCP服务。
第2步:配置虚拟机网卡
- 选中虚拟机,进入
设置→网络。 - 将
连接方式选择为仅主机网络。 - 在
名称下拉框中选择刚才创建的vboxnet0。 - 保存并启动虚拟机。
第3步:配置虚拟机静态IP(Netplan)
在Ubuntu虚拟机中,使用Netplan配置静态IP以确保网络稳定。不同Ubuntu版本配置文件名可能不同(如 00-installer-config.yaml 或 01-netcfg.yaml)。
编辑配置文件:
sudo nano /etc/netplan/00-installer-config.yaml
写入以下配置(以接口 enp0s8 为例):
network:
version: 2
renderer: networkd
ethernets:
enp0s8:
addresses:
- 192.168.56.101/24
routes:
- to: default
via: 192.168.56.1
nameservers:
addresses:
- 8.8.8.8
- 1.1.1.1
注意:Ubuntu 22.04+ 推荐使用 routes 替代已废弃的 gateway4。请根据实际接口名调整配置。
应用配置:
sudo netplan apply
第4步:在宿主机开启IP转发与NAT
在Ubuntu宿主机上,需开启内核IP转发并配置iptables规则,将虚拟机网段流量转发至外网接口(如 wlan0)。
- 开启IP转发:
sudo sysctl -w net.ipv4.ip_forward=1持久化配置:
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf - 配置NAT规则(假设外网接口为
wlan0,请替换为实际接口名):
sudo iptables -t nat -A POSTROUTING -s 192.168.56.0/24 -o wlan0 -j MASQUERADE - 持久化iptables规则:
安装iptables-persistent并保存当前规则:
sudo apt-get install -y iptables-persistent sudo netfilter-persistent save
第5步:验证Host-Only网络
- 在虚拟机中:
ping 192.168.56.1(宿主机)及ping 8.8.8.8(外网)。 - 在宿主机中:
ping 192.168.56.101(虚拟机)。
若双向ping通且虚拟机可访问外网,则配置成功。
常见问题与排错指南
问题1:虚拟机无法访问外网
- 检查路由:在虚拟机执行
ip route,确认存在默认路由(如default via 192.168.56.1)。 - 检查DNS:执行
nslookup google.com。若解析失败,检查Netplan配置中nameservers是否正确。 - Host-Only特有:确认宿主机已开启IP转发且iptables规则已正确添加。
问题2:宿主机与虚拟机互ping不通
- 确认虚拟机网卡已正确连接到
vboxnet0。 - 检查虚拟机IP是否在与网关同网段(如
192.168.56.x)。 - 检查宿主机防火墙是否阻止了ICMP包(可临时执行
sudo ufw disable测试)。
问题3:端口访问被拒绝
- NAT模式:必须配置端口转发规则,且宿主机防火墙需放行对应主机端口(如
sudo ufw allow 2222/tcp)。 - 桥接模式:直接使用虚拟机IP访问,确保虚拟机内服务监听的是
0.0.0.0而非仅127.0.0.1。 - 防火墙:检查宿主机和虚拟机的
ufw或firewalld状态,确保相关端口已放行。
问题4:网络配置未生效
- Netplan:修改配置文件后,务必执行
sudo netplan apply。 - NetworkManager:若使用传统ifupdown,执行
sudo systemctl restart networking。 - VirtualBox:网络设置修改后,需重启虚拟机或禁用/启用网络适配器。
总结
VirtualBox在Ubuntu中的网络配置可根据需求灵活选择:NAT适合快速上网,桥接适合局域网互通,Host-Only适合安全隔离与固定IP管理。掌握Netplan静态IP配置、iptables端口转发及防火墙规则,是解决复杂网络问题的关键。建议根据实际安全需求和访问场景选择最合适的模式,并在修改配置后通过ping和nslookup命令进行充分验证。
以上就是VirtualBox在Ubuntu中配置共享网络的详细内容,更多关于VirtualBox网络设置、Ubuntu虚拟机排错的技术资料请关注本站其它相关文章!











