2015年10月30日 星期五

[Linux 常見問題] How to find the gateway used for routing?

Source From Here 
Question 
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. 
-n: Do not resolve IP addresses to their domain names
-I --icmp: Use ICMP ECHO for tracerouting

# 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? 

How-To 
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

Supplement 
10 Useful “IP” Commands to Configure Network Interfaces

沒有留言:

張貼留言

[Git 常見問題] error: The following untracked working tree files would be overwritten by merge

  Source From  Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 #   git clean -d -fx 方案2: 今天在服务器上  gi...