20231229-记录一次路由不正确导致访问不了目标地址的解决过程 ================================================================================ 现象 --------------- .. code-block:: bash 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。 跟踪一下路由: .. code-block:: bash $ 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。 查看一下当前路由表: .. code-block:: bash $ 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。 因此使用了这一条错误的路由记录,导致访问不了。 我们看一下桥接设备的信息: .. code-block:: bash $ 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没有内容,说明是一个没有被使用的桥接设备。 我们先停掉该设备,不停掉是删除不掉这一条记录的。 .. code-block:: bash $ sudo ifconfig br-eba29d1b9b76 down 删除该桥接设备 .. code-block:: bash $ sudo brctl delbr br-eba29d1b9b76 删除后,在跟踪一下路由,可用正常访问了。