У меня следующая проблема:
Бег 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 для работы с этой опцией.