15.6. 20231229-记录一次路由不正确导致访问不了目标地址的解决过程

15.6.1. 现象

git pull

ssh: connect to host 192.168.200.250 port 22: No route to host
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

从提示来看,应该没有路由到目标IP。

跟踪一下路由:

$ traceroute 192.168.200.250
traceroute to 192.168.200.250 (192.168.200.250), 30 hops max, 60 byte packets
1  chenjie (192.168.192.1)  3049.793 ms !H  3049.745 ms !H  3049.717 ms !H

可用看到唯一的一条路由是:192.168.192.1。

查看一下当前路由表:

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         router.lan      0.0.0.0         UG    100    0        0 enp12s0
10.0.3.0        0.0.0.0         255.255.255.0   U     0      0        0 lxcbr0
10.196.126.0    0.0.0.0         255.255.255.0   U     0      0        0 lxdbr0
link-local      0.0.0.0         255.255.0.0     U     1000   0        0 enp12s0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
172.19.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-1282a5d5c83c
172.22.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-c3013f10200f
172.25.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-ba14f99a2778
192.168.3.0     0.0.0.0         255.255.255.0   U     0      0        0 virbr3
192.168.88.0    0.0.0.0         255.255.255.0   U     100    0        0 enp12s0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
192.168.160.0   0.0.0.0         255.255.240.0   U     0      0        0 br-83c0155b0adf
192.168.192.0   0.0.0.0         255.255.240.0   U     0      0        0 br-eba29d1b9b76
192.168.220.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr1
192.168.228.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr5
192.168.229.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr4
192.168.230.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr2

发现这是一个桥接设备。通过Genmask可用看到192.168.192.0的这一条路由的Genmask是:255.255.240.0,刚好覆盖192.168.200.0。

因此使用了这一条错误的路由记录,导致访问不了。

我们看一下桥接设备的信息:

$ brctl show br-eba29d1b9b76

bridge name bridge id               STP enabled     interfaces
br-1282a5d5c83c             8000.024242ba397f       no
br-83c0155b0adf             8000.024257504816       no
br-ba14f99a2778             8000.0242e3cf04a4       no
br-c3013f10200f             8000.02425df19f78       no
br-eba29d1b9b76             8000.02425fbdd99b       no
docker0             8000.0242ef50f094       no              veth10a6df1
lxcbr0              8000.00163e000000       no
lxdbr0              8000.00163ef43dae       no
virbr0              8000.525400674ab1       yes             virbr0-nic
virbr1              8000.5254001748ca       yes             virbr1-nic
virbr2              8000.525400c21a5a       yes             virbr2-nic
virbr3              8000.525400c3a19a       yes             virbr3-nic
virbr4              8000.525400f50a47       yes             virbr4-nic
virbr5              8000.525400ac6e24       yes             virbr5-nic

br-eba29d1b9b76这个桥接设备的interfaces没有内容,说明是一个没有被使用的桥接设备。

我们先停掉该设备,不停掉是删除不掉这一条记录的。

$ sudo ifconfig br-eba29d1b9b76 down

删除该桥接设备

$ sudo brctl delbr br-eba29d1b9b76

删除后,在跟踪一下路由,可用正常访问了。