如何找到用于路由的网关


45

这是在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

当我对外部地址进行traceroute时,所使用的网关(默认网关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命令提供的信息相同的任何选项,包括用于路由的网关?

Answers:


73

您可以使用以下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 
$ 

解冻很多。:)解决了这个问题。

随机问题-如果192.168.0.1是“默认路线”或“网关” ...将使用什么名称指代192.168.0.121?只是“来源”?
dtmland '16

@sarnold,请确认该服务器上是否需要Internet。
kd12

@ kd12仅在您希望将数据包路由到Internet时才需要该服务器上的Internet连接。如果需要,您可以设置IP网络而无需连接到Internet。路由表不知道也不在乎,它们的工作原理相同。:)
sarnold
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.