how to find the gateway used for routing

This is in unix environment. I have multiple routes in a host (visible with 'ip route show' command). If I am pinging an address, how can I find out which gateway was used to route the tracffic?

I tried using traceroute command, but it does not show the immediate gateway.

From below output, 10.58.227.1 is my default gateway.

# 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

When I do traceroute to an external address, the gateway used (default gateway 10.58.227.1) is not shown in output.

# 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

Is there any option to view the same information as given by traceroute command, including the gateway used for routing?


You can use the ip route get <address> command to ask the kernel to report the route it would use to send a packet to the specified 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 is my default route. If I ask for an address that would not go over the default route:

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