我在 ubuntu server 18.04 中遇到了网络配置问题。我的主机未应用来自 dhcp 服务器的默认网关路由。
我的 netplan 配置是:
network:
version: 2
ethernets:
enp0s8:
addresses: []
dhcp4: true
optional: true
IP路由:
172.16.0.0/22 via 192.168.26.1 dev enp0s8 proto dhcp metric 100
172.20.0.0/24 via 192.168.26.1 dev enp0s8 proto dhcp metric 100
192.168.0.0/16 via 192.168.26.1 dev enp0s8 proto dhcp metric 100
192.168.26.0/24 dev enp0s8 proto kernel scope link src 192.168.26.227
netplan ip 租约 enp0s8:
ADDRESS=192.168.26.227
NETMASK=255.255.255.0
ROUTER=192.168.26.1
SERVER_ADDRESS=172.16.0.100
NEXT_SERVER=172.16.0.100
T1=1000000
T2=1750000
LIFETIME=2000000
DNS=172.16.0.250 172.16.0.100
NTP=172.16.0.1
DOMAINNAME=domain.name
ROUTES=172.20.0.0/24,192.168.26.1 172.16.0.0/22,192.168.26.1 192.168.0.0/16,192.168.26.1
CLIENTID=ffaf818f7d00020000ab11546f22c88c98f9a0
我还尝试将 gateway4 选项添加到 netplan 配置中 - 但没有效果。
但如果我手动将路由添加到默认 gw - 一切都会开始正常工作。
答案1
问题是,DHCP 正在设置静态路由规则(dhcp 选项 121),在这种情况下,路由器网关将被忽略,正如所解释的那样这里
您可以从倒数第二行 netplan ip leases 返回的内容中看到,DHCP 规则正在设置静态路由。
一个选项似乎在 Ubuntu 16 中有效,通过添加另一个 0.0.0.0 的路由规则,如 @greecemonkey 在答案中解释的那样(虽然我还没有尝试过并且无法确认它是否会在 Ubuntu 18 上的 netplan 中工作)
给出的另一个答案涉及忽略 DHCP 服务器提供的静态路由,如 @Flash5k 给出的答案中所述。不幸的是,这在 Ubuntu 18.04 上的 netplan 中不起作用。编辑 /etc/dhcpcd.conf 文件没有影响,因为 netplan 不使用此文件(它使用内部 dhcp 客户端)。
在较新版本的 netplan 中,它们为 dhcp-overrides 提供了一个新选项,允许人们忽略 DHCP 服务器提供的路由(以及 DHCP 提供的其他设置)。不幸的是,到目前为止,这还没有移植到 Ubuntu 18.04。