如何找到用于路由的网关

如何找到用于路由的网关

这是在 unix 环境中。我在主机中有多条路由(使用“ip route show”命令可见)。如果我正在 ping 一个地址,如何找出哪个网关用于路由流量?

我尝试使用 traceroute 命令,但它没有显示直接网关。

从下面的输出来看,10.58.227.1 是我的默认网关。

# ip r l
10.58.227.0/24 dev front_eth1  proto kernel  scope link  src 10.58.227.231
169.254.0.0/17 dev bond0  proto kernel  scope link  src 169.254.0.4
default via 10.58.227.1 dev front_eth1  proto gated

当我对外部地址进行跟踪路由时,使用的网关(默认网关 10.58.227.1)未显示在输出中。

# traceroute -n -I 10.63.21.118
traceroute to 10.63.21.118 (10.63.21.118), 30 hops max, 40 byte packets
 1  10.58.112.1  0.507 ms  1.008 ms  1.017 ms
 2  10.63.21.118  0.228 ms  0.233 ms  0.234 ms

是否有任何选项可以查看与 traceroute 命令给出的相同信息,包括用于路由的网关?

答案1

您可以使用该ip route get <address>命令要求内核报告将数据包发送到指定地址所使用的路由:

$ ip route get 4.2.2.1
4.2.2.1 via 192.168.0.1 dev eth0  src 192.168.0.121 
    cache 
$ 

192.168.0.1是我的默认路由。如果我请求一个不经过默认路由的地址:

$ ip route get 192.168.0.116
192.168.0.116 dev eth0  src 192.168.0.121 
    cache 
$ 

相关内容