如何使用 dhcp 和 netplan 配置默认路由度量?

如何使用 dhcp 和 netplan 配置默认路由度量?

我的问题非常类似这个问题。我的 vagrant 机器错误地设置了默认路由度量。

以下是netplan配置。

network:
  version: 2
  ethernets:
    enp0s3:
      dhcp4: true
      match:
        macaddress: 02:70:4e:c8:68:e9
    enp0s8:
      dhcp4: false
      addresses: [192.168.33.10/24]
      gateway4: 192.168.33.1
      routes:
        - to: 192.168.33.0/24
          via: 192.168.33.1
          metric: 0

和路由表。

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.33.1    0.0.0.0         UG    0      0        0 enp0s8
0.0.0.0         10.0.2.2        0.0.0.0         UG    100    0        0 enp0s3
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 enp0s3
10.0.2.2        0.0.0.0         255.255.255.255 UH    100    0        0 enp0s3
192.168.33.0    0.0.0.0         255.255.255.0   U     0      0        0 enp0s8
192.168.33.0    192.168.33.1    255.255.255.0   UG    0      0        0 enp0s8

enp0s3是 NAT 接口,互联网连接应该使用它。sudo route del default enp0s8解决了这个问题,但是将路由添加到 yaml 无法解决问题,并且有固定网关的限制。

我应该使用什么配置来自动重新排序指标?

答案1

对于具有多个接口的系统,只有应获取默认网关的接口才应设置“gateway4:”;请记住,DHCP 很可能也会设置默认网关:

network:
  version: 2
  ethernets:
    enp0s3:
      dhcp4: true
      match:
        macaddress: 02:70:4e:c8:68:e9
    enp0s8:
      dhcp4: false
      addresses: [192.168.33.10/24]

请注意,您设置的附加路由通常是不需要的:192.168.33.0/24 已经可以访问,因为enp0s8在这种情况下它直接连接到接口(当addresses:已经列出子网时)。设置metric:为 0 可能会进一步混淆内核。

如果您需要具有静态 IP 的接口(在这种情况下enp0s8有默认网关而不是执行 DHCP 的接口,那么您可以设置具有度量值的路由降低超过 100;所以它被挑选通过 DHCP 设置的默认网关systemd-networkd。 例如:

network:
  version: 2
  ethernets:
    enp0s3:
      dhcp4: true
      match:
        macaddress: 02:70:4e:c8:68:e9
    enp0s8:
      dhcp4: false
      addresses: [192.168.33.10/24]
      routes:
        - to: 0.0.0.0/0
          via: 192.168.33.1
          metric: 50

相关内容