tracerouteがルート全体を印刷しないことがある


7

私のネットワークを監視していると、トレースルートが現在よりも完全なルートを印刷するために使われていることに気付きました...

たとえば、これは私のゲートウェイを含む、より完全なtracerouteです。

$ sudo traceroute -F xxx.xx.136.5

traceroute to xxx.xx.136.5 (xxx.xx.136.5), 30 hops max, 60 byte packets

 1  * * *

 2  192.168.1.1 (192.168.1.1)  1.607 ms  1.604 ms  1.627 ms

 3  xxx.xx.136.5 (xxx.xx.136.5)  3.286 ms  5.729 ms  7.416 ms

これで、まったく同じコマンドでゲートウェイが省略されます。

$ sudo traceroute -F xxx.xx.136.5

traceroute to xxx.xx.136.5 (xxx.xx.136.5), 30 hops max, 60 byte packets

1  xxx.xx.136.5 (xxx.xx.136.5)  24.004 ms  28.267 ms  42.343 ms

これらのコマンドは同じマシンで実行されました。

ルート全体を常に持つように設定するにはどうすればよいですか?


1
一部のデバイスは、ACLまたはその他の構成のためにICMPに応答しません。また、トンネリングされたトラフィックは、物理インターフェースのエンドポイントを除いて、pingを返しません。
HAL、

2
一部のデバイスは、通過するパケットのTTLを減少させないため、tracerouteにまったく表示されません。たとえば、Cisco PIX / ASAファイアウォールはデフォルトでこのように動作します。
James Sneeringer、2015

1
何か回答がありましたか?もしそうなら、質問が永遠にポップアップし続けないように答えを受け入れ、答えを探します。または、独自の回答を提供して受け入れることもできます。
Ron Maupin

@HAL Linux tracerouteはICMPの代わりにダミーUDPを使用するため、期限切れのICMP TTLを返すものであれば何でも機能します。
Zac67 2017

何か回答がありましたか?もしそうなら、あなたは答えを受け入れて、質問が永遠にポップアップし続けないようにして、答えを探します。または、独自の回答を提供して受け入れることもできます。
Ron Maupin

回答:


6

tracerouteの任意の形式は、IPパケットのTTLを1ずつ増やすことで機能します。最初のパケットのTTLは1で、1ルーターはタイマーをデクリメントし、ICMPを介してエラーメッセージを送信します(存続時間を超えました)。標準* NIX tracerouteはUDP、Windows tracert ICMPを使用します。TCPを使用するバージョンもあります。

ホップが表示されない理由はいくつかあります。

  • 人々は、ICMPは邪悪であると考えています。これは多くの問題(PMTUの発見など)につながります。
  • 人々はウィンドウについてのみ考え、UDPをブロックします。traceroute -Iトリックを実行してみてください。
  • tcptracerouteを使用することもできます
  • ルーターがパケットのルーティングでビジー状態の場合、ICMPパケットを送信するためのリソースがありません。

5

tcptracerouteホップツーホップルーティングをより詳細に使用することを好みます。

tcptracerouteが使用するICMPパケットを無視して、ほとんどの保護ファイアウォールを本質的にバイパスしますtraceroute。ポート80または53を使用します。


1

ゲートウェイにログオプションがある場合は、それを有効にします。観察された動作を説明するエントリが見つかる場合があります。ルーターは、繰り返されるICMPをDOSとして解釈する場合があります。

...ただし、直感的には、ソースが外部ネットワーク上にあると予想される場合があります。


0

イントラネット上のtraceroute(およびmtr、tpctracerouteなど)で実際に何がうまくいくかを発見しました。既知のホップを隠すのは私自身のルーターです。私のルーター(Linux 2.6.15のTP-Link WAPのようなもの)は、既知のルートへのホップを隠すために使用します。したがって、vgは、Googleにtracerouteを指定すると、1つのホップ、google自体を出力します。これは、ルーターがルートを非常によく知っているためです(私は1日中Googleを使用しています)。しかし、PCをアクセスポイントにまっすぐに接続し、tracerouteをgoogleに向けると、ここからgoogleまでのルート全体が出力されます。

だから、私は今何が起こっているのかを知っていますが、なぜこのようにそうしているのかはわかりません。

回避策として、(問題のある)ルーターで実行されている組み込みLinuxが提供するトレーサーアウトを使用します。つまり、自分のPCを介してホップを非表示にするルーターが、独自の組み込みシステムでトレーサーアウトを適切に実行するインターフェイスを提供します...

とにかく、返信ありがとうございます!


ルーターにファイアウォールがあり、中間ホップが生成するICMP TTL超過メッセージをブロックしているようですが、最後のホップのエコー応答のICMPメッセージはブロックされていません。これは(コンシューマーグレードの機器であるため、トピック外です)ルーター/ファイアウォール構成の問題です。
Ron Maupin

0

新しいホストを実装すると、トレースルートにはローカルゲートウェイのアドレス、ホストLAN上のアドレスだけが表示され、他のすべてのホップは*として表示されることに気付きました。

トレースルートを実行しているときに同じホストでTCPDUMPを実行すると、ICMP TTLがパスのノードによって生成されたメッセージを超えたことがわかりましたが、TRACEROUTEはIPアドレスを表示しませんでした。

ホストには2つのネットワークインターフェイスがありました。インターフェイスAにはデフォルトルートが設定されており、インターフェイスBには宛先へのスタティックルートがあります。トレースルートを実行していたのはインターフェイスBで、*のみが表示されていました。

問題を解決するために、パスの次のルーターである2番目のホップに別の静的ルートを追加したので、はるかに短いパスで作業できます。最初にテストを開始したとき、2番目のホップは*としてのみ表示されていましたが、ネットワークトレースルートに静的ルートを追加するとすぐに、そのIPアドレスが表示されました。

最終宛先へのルートを再度トレースし、ICMP TTL超過メッセージを生成したすべてのIPアドレスをメモして、インターフェイスBのルーティングでこれらのネットワークがすべて静的に構成されていることを確認できるようにしました。これを実行すると、トレースルート結果にリストされているすべてのIPが表示されます。

したがって、ICMP TTL超過メッセージを受信するインターフェイスがそのアドレスに戻るルーティングを持たない場合、トレースルートの結果に表示されないように見えます。コミュニティの誰かがこのように動作する理由を説明できると思いますが、デフォルトルートが設定されていないインターフェイスでトレースルートを実行している複数のインターフェイスを持つホストは、かなりの時間の無駄です。

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