You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Ubuntu 22主机配置为私有子网中虚拟机访客的网关以提供互联网访问

如何将Ubuntu 22主机配置为私有子网中虚拟机访客的网关以提供互联网访问

我来帮你一步步搞定这个配置,你说得没错,确实需要把Ubuntu主机当成网关来用,让访客VM通过它访问互联网。下面是具体的操作步骤:

1. 启用Ubuntu主机的IP转发功能

首先得让主机具备转发数据包的能力,这是网关的核心功能:

  • 临时启用(重启后失效):
    sudo sysctl -w net.ipv4.ip_forward=1
    
  • 永久启用(重启后依然生效):
    编辑 /etc/sysctl.conf 文件,找到 net.ipv4.ip_forward=1 这一行,去掉前面的注释符号(#),然后执行命令让配置生效:
    sudo sysctl -p
    

2. 配置VirtualBox的虚拟网络

你需要给VM设置一个和主机物理网卡隔离的私有子网,推荐使用Host-Only Adapter模式:

  • 打开VirtualBox,进入「文件」→「工具」→「网络管理器」
  • 切换到「Host-Only Networks」标签,点击加号新建一个虚拟网卡(默认命名为 vboxnet0)
  • 配置这个虚拟网卡的IP地址,比如设置为 192.168.99.1/24(这个地址就是VM后续要使用的网关地址),注意不要和主机公网子网的IP段冲突
  • 可以关闭该网卡的DHCP服务器(如果打算手动给VM设置静态IP,或者自己在主机上搭建DHCP服务)

3. 配置虚拟机访客的网络

以Ubuntu系统的VM为例,给它设置静态IP:

  • 编辑VM的网络配置文件(路径一般为 /etc/netplan/00-installer-config.yaml,不同系统可能略有差异),内容如下:
    network:
      ethernets:
        enp0s3: # 替换成你的VM网卡名称,可通过`ip addr`命令查看
          addresses: [192.168.99.10/24]
          gateway4: 192.168.99.1
          nameservers:
            addresses: [8.8.8.8, 1.1.1.1]
      version: 2
    
  • 应用配置让设置生效:
    sudo netplan apply
    

如果想让VM自动获取IP,可以在主机上安装 isc-dhcp-server,配置它给vboxnet0所在的子网分配IP、网关和DNS,这样VM就能自动获取网络参数了。

4. 设置NAT规则让VM流量访问互联网

需要把VM私有子网的流量通过主机的公网接口转发出去,用iptables设置地址转换:

  • 先通过 ip addr 命令找到主机的公网接口名称(比如 ens3 或 eth0)
  • 添加NAT转换规则:
    sudo iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -o ens3 -j MASQUERADE
    
  • 保存iptables规则,确保主机重启后不失效:
    sudo apt install iptables-persistent
    sudo netfilter-persistent save
    

5. 配置防火墙允许转发流量

Ubuntu 22默认使用ufw防火墙,需要调整规则允许IP转发:

  • 编辑 /etc/ufw/sysctl.conf 文件,确保 net.ipv4.ip_forward=1 已启用
  • 修改ufw的默认转发策略:
    sudo ufw default allow forward
    
  • 重启ufw让配置生效:
    sudo ufw reload
    

完成以上步骤后,你可以在VM里执行 ping 8.8.8.8 测试互联网连通性,正常情况下应该能收到响应。

备注:内容来源于stack exchange,提问作者Marek Dusek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 10:29:32