某些程序添加了路由,其度量值为从 201 开始的连续整数

某些程序添加了路由,其度量值为从 201 开始的连续整数

我的家庭路由器使用 enp2s0 连接到 WLAN,使用 enp3s0 (192.168.10.0/24) 连接到内部 LAN。从 Ubuntu 18.04 迁移到 Ubuntu 20.04(上周完成)后,某些东西不断向我的路由表添加和删除路由。特别是,当到 192.168.10.0/24 网络的路由被删除时,尤其有害...

有趣的是,到 192.168.10.0/24 的路由不断出现和消失,就好像存在某种竞争情况一样。

这是我的路线表:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    202    0        0 enp2s0
0.0.0.0         192.168.10.2    0.0.0.0         UG    204    0        0 br0
0.0.0.0         192.168.1.1     0.0.0.0         UG    205    0        0 br1
10.0.3.0        0.0.0.0         255.255.255.0   U     0      0        0 lxcbr0
169.254.0.0     0.0.0.0         255.255.0.0     U     203    0        0 enp3s0
192.168.42.0    0.0.0.0         255.255.255.0   U     207    0        0 vpn_dom
169.254.0.0     0.0.0.0         255.255.0.0     U     211    0        0 veth656d4511
169.254.0.0     0.0.0.0         255.255.0.0     U     213    0        0 veth9cad73ba
169.254.0.0     0.0.0.0         255.255.0.0     U     215    0        0 veth6a01cdf0
169.254.0.0     0.0.0.0         255.255.0.0     U     217    0        0 veth4b13dc4c
192.168.1.0     0.0.0.0         255.255.255.0   U     202    0        0 enp2s0
192.168.1.0     0.0.0.0         255.255.255.0   U     205    0        0 br1
192.168.10.0    0.0.0.0         255.255.255.0   U     204    0        0 br0

这是我的 netplan 文件:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp2s0:
      dhcp4: false
      dhcp6: false
    enp3s0:
      dhcp4: false
      dhcp6: false
    wlp4s0:
      dhcp4: false
      dhcp6: false
  
  bridges:
    br1:
      interfaces: [enp2s0]
      dhcp4: false
      dhcp6: false
      addresses: [192.168.1.11/24]
      routes:
      - to: default
        via: 192.168.1.1
        metric: 1
        on-link: true
      nameservers:
        addresses: [8.8.8.8]
      parameters:
        stp: true
        forward-delay: 4
    br0:
      interfaces: [enp3s0]
      dhcp4: false
      dhcp6: false
      addresses: [192.168.10.2/24]
      nameservers:
        addresses: [8.8.8.8]
      parameters:
        stp: true
        forward-delay: 4

我使用网桥,因为我有 LXC 容器,它们与这两个外部网络有桥接接口。

我怀疑是 dhclient 不断添加这些路线。

网络管理器已被禁用并确认其未运行。

我不使用防火墙。

我希望我的路由表如下所示:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.10.2    0.0.0.0         UG    100    0        0 br0
0.0.0.0         192.168.1.1     0.0.0.0         UG    1      0        0 br1
10.0.3.0        0.0.0.0         255.255.255.0   U     0      0        0 lxcbr0
192.168.42.0    0.0.0.0         255.255.255.0   U     207    0        0 vpn_dom
  1. 如何诊断问题?如何禁用/重新配置不断添加和删除不需要的路由的过程?
  2. 要做什么才能获得路由表的所需状态?

什么样的工作是持续运行这 3 个命令:

watch sudo ip route add 192.168.10.0/24 dev br0
watch sudo route del default gw 192.168.1.1 dev enp2s0
watch sudo route del default gw 192.168.10.2 dev br0

显然,这充其量只是一个半有效的解决办法。

以下是全新重启后产生的路线ip route show

default via 192.168.1.1 dev br1 proto static metric 1 onlink 
default via 192.168.1.1 dev enp2s0 proto dhcp src 192.168.1.11 metric 202 
default via 192.168.10.2 dev br0 proto dhcp src 192.168.10.2 metric 204 
default via 192.168.1.1 dev br1 proto dhcp src 192.168.1.11 metric 205 
10.0.3.0/24 dev lxcbr0 proto kernel scope link src 10.0.3.1 linkdown 
169.254.0.0/16 dev enp3s0 scope link src 169.254.220.38 metric 203 
169.254.0.0/16 dev br0 scope link src 169.254.220.38 metric 204 
169.254.0.0/16 dev vpn_dom scope link src 169.254.214.249 metric 207 
169.254.0.0/16 dev veth51ea584b scope link src 169.254.166.248 metric 211 
169.254.0.0/16 dev vethb08250b6 scope link src 169.254.103.110 metric 213 
169.254.0.0/16 dev veth9b43ee1b scope link src 169.254.250.25 metric 215 
169.254.0.0/16 dev veth3ef55092 scope link src 169.254.46.176 metric 217 
169.254.0.0/16 dev wlp4s0 scope link src 169.254.22.8 metric 306 
192.168.1.0/24 dev enp2s0 proto dhcp scope link src 192.168.1.11 metric 202 
192.168.1.0/24 dev br1 proto dhcp scope link src 192.168.1.11 metric 205 
192.168.10.0/24 dev br0 proto dhcp scope link src 192.168.10.2 metric 204```

答案1

诊断此问题的第一步是检查ip route show而不是的输出route,因为前者将为您提供有关路由来源的更多线索;例如proto staticvs proto dhcp

这不太可能是 DHCP 客户端的结果,因为您所有接口上都有路由,并且路由永远不会通过 DHCP(169.254.0.0)发送/设置。

相关内容