问题现象
当ubuntu
服务器配置两个网卡 ens33
和 ens38
,比如说 ens33
用于内部本地网络通信,ens38
是与ISP到Internet的外网连接。
当你将ens33
配置为静态,不设默认网关,ens38
通过 DHCP
获取配置信息时不会出问题。
/etc/netplan/00-installer-config.yaml
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: no
addresses: [192.168.71.xx/24]
nameservers:
addresses: [223.5.5.5, 114.114.114.114]
ens38:
dhcp4: yes
但当你将两个接口都配置成 DHCP
后,netplan
将会创建两个默认网关,导致网络访问异常。
root@dev:~$ route -n
default via 192.168.71.2 dev ens37 proto dhcp src 192.168.71.130 metric 100
default via 10.9.15.254 dev ens33 proto dhcp src 10.9.14.114 metric 100
10.9.14.0/23 dev ens33 proto kernel scope link src 10.9.14.114
10.9.15.254 dev ens33 proto dhcp scope link src 10.9.14.114 metric 100
192.168.71.0/24 dev ens37 proto kernel scope link src 192.168.71.130
192.168.71.2 dev ens37 proto dhcp scope link src 192.168.71.130 metric 100
解决方案
netplan
在 V0.90
之后引入了一套新的选项 dhcp4-overrides
可以解决此问题
使用下面的配置来解决:
/etc/netplan/00-installer-config.yaml
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: yes
dhcp4-overrides:
use-routes: false
ens38:
dhcp4: yes