Traceroute(tracert)の実装は、WindowsとUnixでは異なります。両方をWiresharkと比較したかった。私は現在Windows 7を使用しており、Unix tracerouteをすぐに実装したいと考えていました。
私の最初のアイデアは、MSYSまたはCygwinを使用して取得することでした。 「inetutils *」パッケージをチェックしてCygwinをインストールしましたが、/usr/bin/
にtracerouteコマンドと対応する実行可能ファイルがありません。
Cygwinパッケージ検索 で「traceroute」を検索してみたところ、「zsh」ファイルのリストにこの部分文字列が見つかりました。 zshをインストールしてtraceroute
とtcptraceroute
を試したところ、結果はありませんでした。
Tracerouteのインストールを確認する必要があるパッケージはどれですか?Cygwinのtracerouteはありますか?
OK、Stephen Kittが言ったように、Cygwinにtracerouteバイナリを使用する準備はできていません。それが私が自分でコンパイルしようとした理由です。
modern traceroute があることがわかりますが、その説明から、古いLinuxカーネルでは使用できず、「dccp.h」がないためにコンパイルが動かなくなったため、あきらめました。
私はコンパイルできました 古い実装 ですが、TTLを超えた場合にICMP応答が返されない(結果の代わりにアスタリスクがある))ように機能します。
1 * * *
2 * * *
たぶん、Cygwinで機能するためにいくつかの修正が必要であり、それがCygwinのtracerouteパッケージがない理由です。
Wiresharkで確認したところ、UDPテストパケットを使用しており、対応するICMP応答が正しく配信されていることがわかりました。この古いtracerouteは、Winのtracert
(ノードを1つずつ「クエリ」する)のように動作が遅いことに気づきたいです。最新のtracerouteは非常に迅速に結果を出します。
Cygwinパッケージにはtraceroute
はありません。これは、tracert
がWindowsで常に使用できるためです。これについて簡単に説明しているスレッドについては、 https://cygwin.com/ml/cygwin/2005-12/msg00443.html を参照してください。ソースからCygwinを使用して、Unixスタイルのtraceroute
をコンパイルしてみることができます。
Windowsスタイルのtracert
をUnixスタイルのtraceroute
と比較したい場合は、ネットワークスタックが異なるため、UnixまたはLinuxでtraceroute
を実行することをお勧めします。したがって、WindowsでUnixスタイルのtraceroute
を実行しても、Unixスタイルのtraceroute
とまったく同じネットワークトレースは得られません。
命令を使用してCygwin32でmtr
のポートを構築することができました。
https://github.com/traviscross/mtr/
MTRは、代替のオープンソースのtracerouteツールです。 GUIとNcursesテキストインターフェイスの両方があります。それは正確には古典的なtracerouteではありませんが、私はもっと好きです。