Как получить трассировку на Cygwin?

14

Реализация traceroute (tracert) отличается в Windows и Unix. Я хотел сравнить оба с Wireshark. Сейчас я нахожусь на Windows 7, и я хотел быстро получить реализацию Unix traceroute.

Моей первой идеей было получить его с помощью MSYS или Cygwin. Я установил Cygwin с проверенными пакетами "inetutils *", но в нем нет команды traceroute и соответствующего исполняемого файла /usr/bin/.

Я также попытался найти «traceroute» с помощью поиска пакетов Cygwin и нашел эту подстроку в списке файлов «zsh». Я установил Zsh и попробовал tracerouteи tcptracerouteбезрезультатно.

Какой пакет я должен проверить для установки traceroute и есть ли вообще трассировка для Cygwin?

Кирилл
источник

Ответы:

14

В tracerouteпакетах Cygwin их нет, потому что они tracertвсегда доступны в Windows. См. Https://cygwin.com/ml/cygwin/2005-12/msg00443.html для обсуждения, кратко обсуждающего это. Вы можете попробовать скомпилировать Unix-стиль tracerouteиз исходного кода, например, Cygwin.

Если вы хотите сравнить Windows-стиль tracertс Unix-стилем traceroute, я бы порекомендовал работать tracerouteв Unix или Linux, потому что сетевые стеки отличаются; поэтому запуск Unix-стиля tracerouteв Windows не даст вам тех же сетевых следов, что и в Unix-стиле tracerouteв Unix.

Стивен Китт
источник
3
pingтакже существует в Windows, но доступен для Cygwin :) В любом случае, спасибо за ваш ответ. Может быть, я попытаюсь скомпилировать tracerouteдля Cygwin вручную.
Кирилл
4
Справедливо, и tracerouteпредлагает довольно много функций, чем tracert.
Стивен Китт
4

Хорошо, как сказал Стивен Китт, для Cygwin нет готовых к использованию двоичных файлов traceroute. Вот почему я попытался скомпилировать это сам.

Я могу видеть, что есть современная трассировка, но из ее описания следует, что она не может быть использована со старыми ядрами Linux, и для меня компиляция застряла на отсутствующем "dccp.h", и я сдался.

Мне удалось скомпилировать старую реализацию , но она работает так, как будто не видит превышения ICMP-ответов на TTL (вместо результатов есть звездочки):

1 * * *

2 * * *

Возможно, для работы с Cygwin требуются некоторые исправления, и именно поэтому для Cygwin нет пакета traceroute.

Я проверил с Wireshark и вижу, что он использует тестовые пакеты UDP, и соответствующие ответы ICMP доставляются правильно. Хочу заметить, что этот старый traceroute работает медленно, как Win tracert(«запрашивая» узлы один за другим). Современная трассировка дает результаты очень быстро.

Кирилл
источник
2

Я смог построить порт mtrв Cygwin32, используя инструкции:

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

MTR - альтернативный инструмент с открытым исходным кодом. Он имеет графический интерфейс и текстовый интерфейс Ncurses. Это не совсем классическая трассировка, но мне она больше нравится.

LatinSuD
источник