Ubuntu 17.04虚拟机上的netplan配置

Ubuntu 17.04虚拟机上的netplan配置

我运行的 VirtualBox 有 2 个网络适配器:标准 NAT (enp0s3) 和主机专用适配器 (enp0s8)。我使用 NAT 访问互联网,使用主机专用适配器从本地计算机通过 SSH 访问。

该盒子启动时两个适配器都启用了,都有 IP 地址,一切看起来都很好。

ifconfig-输出

我可以通过主机专用适配器通过 SSH 进入此盒子,没有任何问题。但我无法用它上网。但是,如果我禁用主机专用适配器,那么我就可以访问互联网(但显然我无法再通过本地隧道通过 SSH 进入它)。

控制台输出

最后,这是我的 netplan yaml 配置:

# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
ethernets:
  enp0s3:
    dhcp4: yes
    dhcp6: yes
  enp0s8:
      dhcp4: no
    dhcp6: no
    addresses: [192.168.52.101/24]
    gateway4: 192.168.52.101

有什么想法吗?似乎我的所有出站流量都以某种方式通过主机专用适配器路由。

编辑:附上输出ip route list以防有帮助。

default via 192.168.52.101 dev enp0s8 proto static
default via 10.0.2.2 dev enp0s3 proto dhcp src 10.0.2.15 metric 100
10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15
10.0.2.2 dev enp0s3 proto dhcp scope link src 10.0.2.15 metric 100
192.168.52.0/24 dev enp0s8 proto kernel scope link src 192.168.52.101

答案1

对我来说,从配置中删除gateway4就可以了。配置完成后,我还是无法 ping 通互联网。

这是我的 netPlan 配置,希望能对其他人有所帮助。

笔记:enp0s3 用于通过端口转发进行 ssh,enp0s8 用于静态 ip

network:
    ethernets:
        enp0s3:
            addresses: []
            dhcp4: true
            optional: true
        enp0s8:
            addresses: [192.168.10.20/24]
            dhcp4: no
            dhcp6: no
            nameservers:
              addresses: [8.8.8.8, 8.8.4.4]
    version: 2

答案2

今天下午我发现了这个问题,它做了完全相同的事情。不知怎么设法解决了这个问题,netplan 最终只通过我的 VM 的 NAT 接口创建了 1 个默认路由。在我的例子中,两个 IP 都是 192.168.56.101(仅主机)和 10.0.3.x/24(NAT dhcp4)。我正在使用这个 netplan 文件:

    network:
      version: 2
      renderer: networkd
      ethernets:
        enp0s8:
          dhcp4: yes
          dhcp6: yes
          routes:
          - to: 0.0.0.0/0
            via: 10.0.3.2
            metric: 0
        enp0s3:
          dhcp4: no
          dhcp6: no
          addresses: [192.168.56.101/24]
          routes:
          - to: 192.168.56.1/24
            via: 192.168.56.1
            metric: 100

这样我就只有一条默认路由,它使用 NAT,所以它可以通过我的主机访问互联网。

输出ip r

default via 10.0.3.2 dev enp0s8 proto dhcp src 10.0.3.15 metric 100
10.0.3.0/24 dev enp0s8 proto kernel scope link src 10.0.3.15
10.0.3.2 dev enp0s8 proto dhcp scope link src 10.0.3.15 metric 100
192.168.56.0/24 dev enp0s3 proto kernel scope link src 192.168.56.10

答案3

需要注意的是,当我在为此和 VMware Fusion 而苦苦挣扎时……如果您指定了任何“gateway4”值,它将假定该值是接口的默认值,并且它似乎不尊重“metric”选项或有多个带有编号序列的 .yaml 文件(01-netplan.yaml、02-netplan.yaml 等...)在我的情况下,02 最终成为“第一个默认值”,但这是我的内部网络,因此公共互联网无法访问。

答案4

只是想帮助大家。我能够在一台 vmware 机器上配置 Ubuntu Server 18.04,该机器配有一个 NAT 适配器,用于访问互联网,并配有一个仅主机适配器,以便我的其他 vm(Kali、Metasploitable)也可以看到它。我使用了 netplan 配置文件。对我有用的 yaml 代码是这样的:

network:
    renderer: networkd
    ethernets:
        ens38:
            dhcp4: yes
            dhcp6: yes
        ens33:
            dhcp4: no
            addresses:
            - 10.10.10.4/8
            nameservers:
                addresses:
                - 8.8.8.8
                search:
                - 10.0.0.1
    version: 2

我发布这篇文章的原因是为了表明你不需要路由。我首先添加了 ens33 的配置,这是我的主机专用适配器,然后像 OP 一样,我在尝试 ping 互联网时遇到了问题。所以我当时所做的就是在以太网下添加 NAT 适配器,然后我添加了 dhcpX yes 值,然后我就可以 ping 互联网和我的其他虚拟机了!

相关内容