我运行的 VirtualBox 有 2 个网络适配器:标准 NAT (enp0s3) 和主机专用适配器 (enp0s8)。我使用 NAT 访问互联网,使用主机专用适配器从本地计算机通过 SSH 访问。
该盒子启动时两个适配器都启用了,都有 IP 地址,一切看起来都很好。
我可以通过主机专用适配器通过 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 互联网和我的其他虚拟机了!