在 Ubuntu 18.04 上启用 NAT 和 Host Only

在 Ubuntu 18.04 上启用 NAT 和 Host Only

我在用Ubuntu 18 最小映像使用 VirtualBox 创建 Ubuntu 服务器。我创建了一个仅主机网络,并将适配器与 NAT 适配器(已配置)一起添加到 vm。

netplan原来的配置如下:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: yes

我将此配置更改为以下内容以启用仅主机适配器(enp0s8):

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: ye
    enp0s8:
      dhcp4: no
      addresses: [192.168.56.101/24]
      gateway4: 192.168.56.1

现在我可以通过网络成功从主机访问虚拟机。VM 内的互联网停止工作 :(。我尝试了很多不同的解决方案,但要么通过禁用仅主机适配器来使互联网工作(由 NAT 适配器提供),要么通过启用仅主机适配器从主机访问虚拟机。

我怀疑虚拟机正在尝试通过主机专用适配器连接到互联网。我该如何改变这种情况?

答案1

我也遇到了同样的问题。我可以通过删除此行来使其正常工作:

      gateway4: 192.168.56.1

还讨论了其他替代方案Ubuntu 17.04虚拟机上的netplan配置但是我需要的只是建立一个实验室环境进行测试,所以我没有尝试这些。

答案2

我的情况几乎非常相似,但并不完全相同。我想在这里分享我的设置的问题和解决方案,因为使其工作的最后一步是上面@victor6510 给出的答案。

我在 LinuxMint 主机内运行 Ubuntu Server (18.0.4) 客户机。我最初按如下方式设置服务器:

  • 网络:桥接适配器(我家路由器网络上的固定 IP)

我在 LinuxMint 主机上有一个 VPN 客户端。我的目标是允许 Ubuntu 客户端通过 VPN 连接访问服务器。这并不容易,但经过一番阅读后,我决定 NAT 适配器选项是最有可能的解决方案。因此我做了以下事情:

  1. 在 VirtualBox 设置中为我的 Ubuntu 客户机 (NAT) 添加新的网络适配器
  2. 重启 Ubuntu 客户机
  3. 配置netplanUbuntu 客户机的设置
  4. netplan generatenetplan apply

这是我在 Ubuntu 客户机中的 netplan 配置:

network:
  ethernets:
    enp0s3:
        dhcp4: no
        addresses: [192.168.1.200/24]
        #gateway4: 192.168.1.254
        nameservers:
                addresses: [8.8.8.8,8.8.4.4]
    enp0s8:
        dhcp4: yes
  version: 2

enp0s3是桥接适配器

enp0s8是 NAT 适配器

在我注释掉该行之前gateway4: 192.168.1.254,互联网和 ping 都停止工作。注释掉该行之后,我就可以上网,并能够连接到 VPN 另一端的服务器。希望这能帮助任何面临类似情况的人。

注意:我不知道我连接到的 VPN 服务器的详细设置。

答案3

简而言之,当我们为 VM 同时拥有 NAT 和仅主机适配器时,请确保仅主机适配器没有定义网关 4。

例如在 yaml 文件中

network:
 ethernets:
   enps08:
     addresses: [192.168.56.100/24]
     dhcp: no
     #gateway4: 192.168.56.1
version 2 

上述配置有效。

相关内容