ping結果でのTTLの解釈


11

私はVoIPサービスプロバイダーで働いていますが、ケーブルインターネット接続を使用しているお客様との間で問題が発生し、ループが発生します。

彼には単一のブロックがあり、これは70.141.15.0/29であると仮定します。ゲートウェイは.1、ルーターは.2と.3です。どちらのルーターも彼のケーブルモデムに接続されています。これは、私たちの知る限りでは、ケーブルプロバイダーが「ブリッジモード」と想定しているものに設定されています。

同じボックスから両方のルーターに同時にpingを実行しています。これは、(おそらく)Level(3)からファイバーに接続されたLinuxシステムです。言うまでもなく、地球上の誰も、あちこちにあるノードの数を知りません。ただし、pingの結果を確認してください。

最初のルーターへ:

64 bytes from 70.141.15.2: icmp_seq=2637 ttl=47 time=45.0 ms
64 bytes from 70.141.15.2: icmp_seq=2638 ttl=47 time=39.2 ms
64 bytes from 70.141.15.2: icmp_seq=2639 ttl=47 time=37.3 ms
64 bytes from 70.141.15.2: icmp_seq=2640 ttl=47 time=46.1 ms
64 bytes from 70.141.15.2: icmp_seq=2641 ttl=47 time=45.8 ms
64 bytes from 70.141.15.2: icmp_seq=2642 ttl=47 time=46.5 ms
64 bytes from 70.141.15.2: icmp_seq=2643 ttl=47 time=40.9 ms

2番目から:

64 bytes from 70.141.15.3: icmp_seq=631 ttl=239 time=54.7 ms
64 bytes from 70.141.15.3: icmp_seq=637 ttl=239 time=40.5 ms
64 bytes from 70.141.15.3: icmp_seq=638 ttl=239 time=40.3 ms
64 bytes from 70.141.15.3: icmp_seq=639 ttl=239 time=38.4 ms
64 bytes from 70.141.15.3: icmp_seq=640 ttl=239 time=44.9 ms
64 bytes from 70.141.15.3: icmp_seq=641 ttl=239 time=38.4 ms
64 bytes from 70.141.15.3: icmp_seq=642 ttl=239 time=38.8 ms

TTL値を確認してください。これは理にかなっていますか?これらのデバイスは互いに直接隣接しており、個別のスイッチポートを介してそのモデムに接続されています。どうすれば200近くのホップがあるように見えますか?他のサイトにpingを送信したところ、TTLが思ったように実装されていないという印象を受けました。私と4.2.2.2、またはwoot.comの間に200ホップあるとは思えませんが、両方の結果でTTLの結果が50未満になります。

これらのルーターの1つ(TTLが高い方)はフォーティネット製で、もう1つはカスタムLinuxベースのデバイスです。Fortiには自前のネットワークスタックがあると確信していますが、Linuxボックスでは、ハードウェア開発者がダウンロードしたソースtarballに付属しているものをすべて使用しています。ICMPエコーがこれらの1つに奇妙な形式で実装され、TTLが50のすべての応答を故意に送信する可能性はありますか?

私はまた、正気に見えるTTLで応答する唯一のサイトの1つがスラッシュドットであることにも気づき、それらのサーバーとルーターは、平均的なWebサイトよりも「ガレージで見つかったもの」より少し少ないかもしれないと想像できます。ある種のことで、私はその最後の仮定で正しい方向に進んでいるように感じるかもしれません。

要約すると、pingのTTLは信頼できるものを意味しますか?


3
私はWindows XPとWindows 7がTTLを128に設定し、Linuxシステムの場合、それらは一般にTTL 64を持っているとどこかで読んだ。完璧ではないが、時々知っておくと非常に役立つ。
Sean、

回答:


22

言うまでもなく、地球上の誰も、あちこちにあるノードの数を知りません。

ノードの数はわかっています。正確に16あります。異なる応答を取得する理由は、オペレーティングシステムによってTTLの開始値が異なるためです。一部のデバイスは255を使用しますが、他のデバイスは63を使用します。したがって、pingを実行しているデバイスの1つは、TTLを255に設定して応答を送信します。デバイスに戻ってくるまでに、239に減少します。これは16ホップです。

pingを実行する他のデバイスは、TTLを63に設定します。したがって、到達すると、値は47になります。

255-239 = 63-47 = 16。

自分とターゲットの間のホップ数を確認したい場合は、tracerouteを使用します。


ありがとうございました!私は今、ベースレスであることを認識していました(戻りパケットのTTLは、要求パケットのTTLによって何らかの形で指示されていた)。もう1つの質問:255と63の標準ベースの値または任意ですか?つまり、任意の3桁のTTLが255などとして開始されたと安全に想定できますか?
Daniel Thompson

3
これについての「基準」はないと思います。OTOH、私はどちらか一方ではないシステムを見たことがありません。
Ron Trunk、

63は、初期TTLの珍しい値のように聞こえます。
JeanPierre

2

TTL値はリモートマシンによって決定されます。たとえば、Linuxマシンにpingすると、元のTTL値は64になります。返されるために通過するネットワークの数に応じて、TTLは値1から差し引かれます。グーグルのネームサーバー、それは128の最初の値を持っています。それがあなたに戻る時までに、それは121の値を持っているかもしれません(私のためにそれはします)。それは、私に到達するために7つのネットワークを通過し、それがWindowsマシンだったことを意味します。

一般的なTTL値

  • ルーター-255
  • ウィンドウズ-128
  • Linux-Mac-64

0

128-Windows、64-most Linuxおよびルーター、60-非常にまれ、32-Windows 95。

また、63を使用している人はいません。おそらく、リターンパス上の別のルーターに到達しています。


0

ルートの総数を確認するには、「Tracert [IP ADDRESS]」を試してください。

システムが64 TTLで開始する場合、1ホップ離れたデバイスをTRACERTすると、TTL = 63になります。

私が試しました、そしてそれは私が得たものです。私はいつもTTLを考えています...うーんクールです😎


これは尋ねられた質問に答えません。
Teun Vink
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.