web-dev-qa-db-ja.com

cygwinでtracerouteを取得する方法は?

Traceroute(tracert)の実装は、WindowsとUnixでは異なります。両方をWiresharkと比較したかった。私は現在Windows 7を使用しており、Unix tracerouteをすぐに実装したいと考えていました。

私の最初のアイデアは、MSYSまたはCygwinを使用して取得することでした。 「inetutils *」パッケージをチェックしてCygwinをインストールしましたが、/usr/bin/にtracerouteコマンドと対応する実行可能ファイルがありません。

Cygwinパッケージ検索 で「traceroute」を検索してみたところ、「zsh」ファイルのリストにこの部分文字列が見つかりました。 zshをインストールしてtraceroutetcptracerouteを試したところ、結果はありませんでした。

Tracerouteのインストールを確認する必要があるパッケージはどれですか?Cygwinのtracerouteはありますか?

15
Kirill

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は非常に迅速に結果を出します。

5
Kirill

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とまったく同じネットワークトレースは得られません。

16
Stephen Kitt

命令を使用してCygwin32でmtrのポートを構築することができました。

https://github.com/traviscross/mtr/

MTRは、代替のオープンソースのtracerouteツールです。 GUIとNcursesテキストインターフェイスの両方があります。それは正確には古典的なtracerouteではありませんが、私はもっと好きです。

3
LatinSuD