Назад | Перейти на главную страницу

Traceroute против tracert

У меня следующая проблема:

Бег tracert из Windows 7 возвращает все переходы на данный сервер. Бег traceroute из Fedora 30, используя то же соединение и тот же пункт назначения, за пределами IP шлюза он возвращает только * * *.

Не могли бы вы объяснить мне, почему из Windows он работает, а из Fedora - нет? В чем разница?

Также не могли бы вы посоветовать мне, как мне сделать traceroute ответные прыжки при запуске из Fedora?

Windows ' tracert использует ICMP при увеличении TTL для проверки:

Как использовать утилиту TRACERT

Утилита диагностики TRACERT определяет маршрут к пункту назначения, отправляя эхо-пакеты протокола управляющих сообщений Интернета (ICMP) в пункт назначения.

Fedoraс tracerouteпо умолчанию отправляет зонды UDP, как это делали предыдущие реализации трассировки Unix. Подсказка UDP по умолчанию (помимо двойной проверки путем захвата перед написанием этого ответа) от человек который сначала говорит об UDP:

Мы не хотим, чтобы конечный хост обрабатывал пробные пакеты UDP, поэтому для порта назначения установлено маловероятное значение (вы можете изменить его с помощью флага -p). Для трассировки ICMP или TCP такой проблемы нет (для TCP мы используем полуоткрытую технику, которая не позволяет приложениям на узле назначения видеть наши зонды).

Оба инструмента ожидают получить ВРЕМЯ ICMP ПРЕВЫШАЕТ как ответ построить маршрут.

На этом пути разные маршрутизаторы могут выбрать ответ по-разному (т. Е. Не отвечать вообще) в зависимости от используемого метода проверки.

Если вы знаете, что зонды ICMP лучше подходят для вашего теста, вы можете сделать то же самое в Fedora с помощью:

traceroute --icmp destination

Поскольку ICMP, в отличие от UDP, обычно требует создания специальных пакетов, команде могут потребоваться привилегии root для работы с этой опцией.

Вот в чем разница:

  • tracert: использует ICMP
  • traceroute: использует UDP

Я должен сказать это tracert в последнее время стал моим любимым инструментом: