Traceroute — что это, как читать вывод и команды | Глоссарий FREEHOSTING

Traceroute

Traceroute Utility
Traceroute — Сетевая утилита, которая показывает маршрут IP-пакета от источника до цели и время задержки на каждом промежуточном узле. Работает за счёт постепенного увеличения TTL и анализа ICMP-ответов Time Exceeded от маршрутизаторов вдоль пути.

Определение простыми словами

Traceroute отвечает на вопрос «где теряются мои пакеты». Утилита отправляет серию тестовых пакетов с TTL=1, 2, 3 и так далее. Каждый маршрутизатор уменьшает TTL на единицу, и когда счётчик доходит до нуля — возвращает ICMP Time Exceeded. По обратным сообщениям traceroute восстанавливает цепочку хопов и измеряет RTT для каждого.

В Linux по умолчанию используется UDP-вариант (порты 33434+), в Windows (tracert) — ICMP echo. Многие узлы отдают приоритет «обычному» трафику, поэтому ICMP-ответы могут приходить с задержкой больше, чем фактический пинг через них. Это нормально и не означает реальной просадки.

Сравнение

Утилита Платформа Метод Особенности
traceroute Linux/macOS UDP по умолчанию Гибкие флаги, есть -I (ICMP) и -T (TCP)
tracert Windows ICMP Echo Минимум опций, идёт «из коробки»
mtr Linux/macOS/Windows ICMP/UDP/TCP Постоянный режим, статистика потерь
tcptraceroute Linux TCP SYN Проходит фаерволы, блокирующие UDP/ICMP
pathping Windows ICMP + анализ Длительный сбор статистики потерь

Кейсы использования

  • Поиск узкого места: traceroute показывает, на каком хопе RTT резко вырастает или начинаются потери.
  • Диагностика BGP-маршрута: видно, через каких провайдеров (AS) идёт трафик до целевого хоста.
  • Проверка асимметричной маршрутизации — туда и обратно пакеты могут идти разными путями, отсюда странные задержки.
  • Подбор лучшего датацентра: трассируете до нескольких локаций и выбираете с минимальным числом хопов и стабильным RTT.
  • Негатив: traceroute не покажет всю картину, если на пути стоит фаервол, дропающий ICMP TTL Exceeded или UDP. Хопы будут отображаться как * * *. В таких случаях используйте tcptraceroute с портом 80/443.

Технические детали

Базовые команды для Linux. В Windows аналог — tracert.

# Простой UDP-traceroute
traceroute example.com

# Через ICMP, удобно когда UDP блокируется
traceroute -I example.com

# Через TCP-порт 443 — обходит большинство периметровых фильтров
traceroute -T -p 443 example.com

# Без резолва имён, быстрее
traceroute -n example.com

# Указать максимальное число хопов и количество проб на хоп
traceroute -m 20 -q 3 example.com

# Постоянный режим с потерями (mtr)
mtr -rwzbc 50 example.com
# -r: report mode, -w: wide, -z: ASN, -b: и IP и hostname, -c: число пакетов

# Windows эквивалент
tracert -d -h 20 example.com

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

Частые вопросы

Почему один из хопов показывает звёздочки * * *?

Маршрутизатор не отвечает на ICMP Time Exceeded — фильтрует или ограничивает rate-limit. Пакет всё равно проходит дальше, просто этот хоп не виден. Не считайте это потерей.

Чем traceroute отличается от mtr?

Traceroute — разовая трассировка. Mtr делает её непрерывно и показывает процент потерь и среднее RTT на каждом хопе. Для долгой диагностики mtr намного информативнее.

Что значат высокие задержки на промежуточном хопе при нормальном RTT до цели?

Промежуточный маршрутизатор обрабатывает ICMP-ответы по остаточному принципу, поэтому показывает большее RTT. Если задержка не растёт на следующих хопах — реальной проблемы нет.