在部署软件的时候,遇到了一个奇葩的事情:

现场服务器的IP是2.57.0.250,通过交换机策略和172.18.16.*段做通。

我部署的服务需要访问172.18.16.172,但是服务显示访问不到。

由于我是docker部署的,所以我直接在宿主机上ping,发现也不通。

这就奇了怪了,我其他设备都是可以通的。

我尝试追踪路由,发现了问题:

他居然没从物理网卡的网关2.57.0.1走,而是走了一个莫名其妙的路由。

我想起来由于我给docker设置了多个网络,其中有一个就是这个172.18.0.1

Docker 自动添加了172.18.0.0/16的路由指向网桥,而我添加的172.18.16.170/32(子网掩码255.255.255.255)是更精确的匹配,系统会优先使用。

我可以直接把目标IP指定走某个网卡:

sudo ip route add 172.18.16.170 via 2.57.0.1 dev eno3np2

再次查看路由,现在可以正常访问了: