web-dev-qa-db-ja.com

pingが失敗するのにtracerouteが失敗するのはなぜですか

数日間、ICMPベースのtraceroute(特に-Iパラメーターで設定)に応答している間、ICMPpingに断続的に応答しないマシンの興味深い観察を開始しました。

私の知る限り、どちらもICMPのエコー要求を使用するので、そこに違いはないと思います。

誰かがこれについて説明がありますか?

2
user297763

ほとんどの場合、pong from pingはブロック/破棄されますが、tracerouteはノード/ホップからのエラーメッセージを使用してルートを決定します。 Tracerouteは、トリックを使用して情報を取得するという点で、標準のツールではありません。トリックはTTLを操作することであるため、ホップは[〜#〜] icmp [〜#〜]エラー(ICMP TTL超過))で応答します。これが可能な理由です。

2
Konrad Gajewski

すべてのリストを提供できます のヘッダーフィールドIPヘッダー 。また、ヘッダーフィールドごとに、pingとtracerouteがそのフィールドに異なる値を使用する可能性があることを説明できます。また、接続のもう一方の端は、そのヘッダーフィールドの値に基づいてトラフィックをフィルタリングする可能性があります。

しかし、それはあまり役立つ答えではありません。代わりに、その目的のために設計されたツールを使用して、発信トラフィックのヘッダーフィールドを検査することをお勧めします。 tcpdumpを使用して初期分析を実行し、さらに調査するためにトラフィックを保存できます。より徹底的な検査のために、Wiresharkがより適したツールであることがわかりました。以前にtcpdumpを使用してキャプチャしたトラフィックを検査できます。また、リアルタイムで検査できるように、ネットワークインターフェイスから直接トラフィックをキャプチャすることもできます。

探すべき最も明白な違いは、長さとホップ制限です。 tracerouteを使用すると、受信側はホップ制限が変化するパケットを受信し、そのうちの1つに応答する限り、応答が表示されます。 pingを使用すると、特定のホップ制限のみを受け取ります。

また、実際に返信が届くかどうかにも注意する必要があります。誤って構成されたターゲットでは、パケットがサイレントにドロップされることがありますが、適切に構成されたターゲットは、要求を処理しない理由を示すエラーメッセージを送信する可能性があります。奇妙な応答が、一方のプログラムによって予期せずにドロップされ、もう一方のプログラムによって表示される可能性があります。

ヘッダーフィールドのいくつかは、pingとtracerouteの両方のコマンドラインフラグを使用して変更できます。特定のヘッダーフィールドが異なる動作を引き起こしていると思われる場合は、コマンドラインフラグを探してその特定のヘッダーフィールドを変更し、疑わしいことを確認してください。

0
kasperd