ネットワーク
キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

tracerouteが応答なし

ISD
アドバイザー

tracerouteが応答なし

どうもです。

不思議な現象が発生しています。

ゲートウェイ先のサーバまでPingは

通るのに、ゲートウェイに対する

TraceRouteは帰ってきません。

おかしいですよね。

なにか解る方いらっしゃいますか?

2 件の返信
テレコム担当者
尊敬されているコントリビューター

tracerouteが応答なし

仕様だと思います。

# traceroute gateway

traceroute to gateway (xx.xx.xx.xx), 30 hops max, 20 byte packets

1 * * *

つまりゲートウエイから先のアドレスを探しに行くので

見つからない場合は * を表示し続けるのだと思います。

適当なアドレスで traceroute すると、

# traceroute 1.2.3.4

traceroute to 1.2.3.4 (1.2.3.4), 30 hops max, 20 byte packets

1 gateway1 (xx.xx.xx.xx) 0 ms 0 ms 0 ms

2 gateway2 (xx.xx.xx.xx) 0 ms 0 ms 0 ms

3 gateway3 (xx.xx.xx.xx) 2 ms 3 ms 3 ms

4 * * *

5 * * *

6 * * *

4番目のゲートウエイで止まってます。

詳しくは man traceroute

(注)

私はネットワークは素人です。

?????_98
アドバイザー

tracerouteが応答なし

pingがICMP ECHOを出し、ICMP ECHO REPLYを待つのに

対し、tracerouteは、UDPのパケットをある特定の

ポート番号に対して出し、指定した相手からICMP

PORT UNREACHがかえってくるのを待ちます。このとき

1回目はIP headerのTTLを1にして出すことで、ICMP

TIME_EXCEEDが一つ目のルータから返ることを期待

しています。そして、次のトライでは、TTLを2にして

同様にTIME_EXCEEDが返ることを期待します。これを

ICMP PORT UNREACHがくるまで続けます。

さて、tracerouteでゲートウェイのアドレスを指定

しますと、どうなるでしょう?UDPのパケットに対し

ICMP PORT UNREACHがそのゲートウェイから返って

くるでしょうか?私が試したところ、PORT UNREACH

を返すルーターと返さないルータとがあるようです。

もし、返さないルータがあったとしますとその

ルーターのところでは、そのときのTTLで指定された

値より少ないホップカウントになると思います。

(一番手前のルータに送ったときのことを考えれば

わかりやすいかと・・)

ですので、TIME_EXCEEDも出ないことになり、

"Tracerouteは返ってきません"ということになり

そうです。

つまり、IP layerで動いているルーターが、その

ルータあてにきたUDPパケットに対してどう動くか

が鍵となります。RFC1812:

"Requirements for IP Version 4 Routers. F. Baker, Ed.. June 1995."

をざっと見てみましたが、PORT UNREACHを出して

いけないとも出さなければいけないとも書いてありません。IP層のみが存在する*はず*のルーターです

ので、上位層へのパケットがきたときにどうすべきか

はRFCの解釈が分かれるところかも知れませんね。

いずれにしても、Tracerouteをルータをあて先に

実行するのは、なんとなくTracerouteの使用目的から

ずれるように感じますので、pingで問題なければ心配

することはないかと思います。

どなたかほかの解釈はありませんか?

急いで、調べたものですから、あまり自信はありません。(ただ、tracerouteの使用目的云々ははずしていない

とは思いますが)