如何使用 dhcp 和 netplan 配置默认路由指标?

jei*_*iea 9 networking dhcp netplan

我的问题与这个问题非常相似。我的流浪机器错误地设置了默认路由指标。

以下是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
Run Code Online (Sandbox Code Playgroud)

和路由表。

# 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
Run Code Online (Sandbox Code Playgroud)

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

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

Mat*_*rre 14

对于有多个接口的系统,只有应该得到默认网关的接口才应该设置“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]
Run Code Online (Sandbox Code Playgroud)

请注意,您设置的附加路由通常是不需要的: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
Run Code Online (Sandbox Code Playgroud)

  • 此外,可以使用 `dhcp4-overrides: {route-metric: 100}`, [ref](https://netplan.io/examples) 更改指标权重 (2认同)