web-dev-qa-db-ja.com

ルーティングに使用されるゲートウェイを見つける方法

これは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コマンドと同じ情報を表示するためのオプションはありますか?ルーティングに使用されるゲートウェイを含みますか?

40
divya

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 
$ 
67
sarnold