次の問題が発生しています。
Windows 7からtracert
を実行すると、指定されたサーバーにすべてのホップが返されます。 Fedora 30からtraceroute
を実行し、同じ接続と同じ宛先を使用して、ゲートウェイIPを超えて* * *のみを返します。
Windowsからは機能するが、Fedoraからは機能しない理由を教えてください。違いはなんですか?
また、Fedoraから実行されているときにtraceroute
にホップを返す方法を教えてください。
Windowsの tracert
はICMPを使用していますが、TTLをインクリメントしてプローブを実行しています。
TRACERTユーティリティの使用方法
TRACERT診断ユーティリティは、インターネット制御メッセージプロトコル(ICMP)エコーパケットを宛先に送信することにより、宛先へのルートを決定します。
Fedora の traceroute
は、デフォルトで、以前のUnix tracerouteの実装と同様に、UDPプローブを送信します。ヒントUDPはデフォルトです(この回答を書き込む前にキャプチャを実行してダブルチェックすることを除いて)は、UDPについて最初に話す man からのものです。
宛先ホストがUDPプローブパケットを処理しないようにするため、宛先ポートは想定外の値に設定されます(-pフラグで変更できます)。 ICMPまたはTCP tracerouting(TCPの場合、ハーフオープンテクニックを使用するため、プローブが宛先ホスト)。
どちらのツールも、ルートを構築するための応答として ICMP TIME EXCEEDED を受け取ることを期待しています。
この経路に沿って、さまざまなルーターが、使用されるプローブ方法に応じて異なる(つまり、まったく応答しない)ことを選択する場合があります。
ICMPプローブがテストに適していることがわかっている場合は、Fedoraで同じことを行うことができます。
traceroute --icmp destination
ICMPはUDPとは異なり、通常は特別なパケットを作成する必要があるため、このオプションを使用してコマンドを実行するにはroot権限が必要になる場合があります。