Гид по технологиям

Traceroute в Linux: как диагностировать сеть

6 min read Сеть Обновлено 01 Dec 2025
Traceroute в Linux: диагностика сети
Traceroute в Linux: диагностика сети

TL;DR

Traceroute — утилита для отображения маршрута сетевых пакетов от вашего компьютера до удалённого хоста. Она показывает промежуточные маршрутизаторы и задержки на каждом этапе. Используйте traceroute для поиска узких мест, неотвечающих шлюзов и оценки латентности; если поведение неочевидно, примените альтернативы (mtr, ping, tcptraceroute) и следуйте предложенной методике диагностики.

Важно: traceroute не исправляет сеть. Это инструмент наблюдения и диагностики. Результат помогает принять дальнейшие действия.

Иллюстрация: traceroute в Linux — терминал и сеть

Содержание

  • Как работает traceroute
  • Какие проблемы можно найти с помощью traceroute
  • Использование traceroute в Linux — базовый пример
  • Отправка пакетов с настраиваемым TTL
  • Выбор протокола для проб (UDP / TCP / ICMP)
  • Изменение интерфейса и порта
  • Методика диагностики (пошагово)
  • Дерево принятия решения (Mermaid)
  • Чек-листы по ролям
  • Когда traceroute не даёт ответа и альтернативы
  • Критерии приёмки
  • Короткий глоссарий
  • Соображения по безопасности и приватности

Как работает traceroute

Traceroute отправляет подряд тестовые пакеты с постепенно увеличивающимся значением TTL (Time To Live). Каждый маршрутизатор, через который проходит пакет, уменьшает TTL на 1. Когда TTL достигает нуля, маршрутизатор отсылает ICMP-сообщение “Time Exceeded” назад отправителю. По этому механизму traceroute получает IP-адреса промежуточных узлов и измеряет задержку до каждого из них.

Определение: TTL — счётчик Life‑Time пакета; уменьшается на каждом хопе и предотвращает бесконечную маршрутизацию.

Коротко:

  • traceroute по умолчанию использует UDP-пакеты в большинстве реализаций Linux;
  • некоторые реализации могут применять ICMP или TCP (см. ниже);
  • ответ от каждого хопа показывает IP (и часто время RTT).

Терминал: traceroute до google.com, список шлюзов

Какие проблемы можно найти с помощью traceroute

Traceroute помогает обнаружить и локализовать такие проблемы:

  • Неотвечающие или «падающие» маршрутизаторы внутри сети.
  • Резкие скачки задержки (латентности) между двумя хопами.
  • Ассиметричные маршруты (разные пути туда и обратно).
  • Ограничения или блокировки ICMP/UDP/TCP на промежуточных узлах.
  • Неправильная маршрутизация на границе провайдеров.

Важно: traceroute не исправляет маршруты. Он предоставляет карту, по которой можно планировать дальнейшие меры (обновление правил, обращение к провайдеру, изменение конфигурации).

Терминал: несколько шлюзов не отвечают на traceroute

Использование traceroute в Linux — базовый пример

Откройте терминал и выполните:

traceroute ubuntu.myvpsserver.top

Команда начнёт отправлять пробные пакеты и покажет список хопов и RTT (в миллисекундах). В качестве аргумента можно указать доменное имя или IP.

Терминал: traceroute до небольшого VPS

Совет: чтобы узнать IP вашего локального шлюза, выполните ip route | grep default или ifconfig -s | awk '{print $1}'.

Отправка пакетов с настраиваемым TTL

По умолчанию traceroute инкрементирует TTL, начиная с 1. Можно настроить начальный TTL с помощью флага -f (first TTL). Также полезно менять количество запросов на каждый хоп с -q.

Примеры:

traceroute -q1 ubuntu.myvpsserver.top

Этот пример отправит по одному пакету на хоп. Если шлюзы ограничивают количество пакетов на IP, можно также отключить параллельные запросы:

traceroute -N 1 ubuntu.myvpsserver.top

Терминал: traceroute с однопоточными запросами (-N 1)

Если нужно пропустить первые N хопов (начать проверку с более глубокого уровня), используйте -f:

traceroute -f 3 ubuntu.myvpsserver.top

Терминал: traceroute с увеличенным начальным TTL, пропускает первые шлюзы

Выбор протокола для проб (UDP, TCP, ICMP)

По умолчанию — UDP. Но многие межсетевые экраны или провайдеры фильтруют UDP-пакеты traceroute. В таких случаях можно переключиться на TCP или ICMP.

  • TCP SYN (полезно для обхода фильтров UDP):
traceroute -T target.example.com

Терминал: traceroute с TCP SYN (-T) вместо UDP

  • ICMP ECHO (иногда самый универсальный вариант):
sudo traceroute -I myvpsserver.top

ICMP полезен, если сеть блокирует UDP и TCP probe‑пакеты. Учтите, что ICMP может быть ограничен тоже.

Изменение сетевого интерфейса и порта

Чтобы выбрать конкретный сетевой интерфейс на машине (например, при наличии нескольких NIC), используйте -i:

traceroute -i enp1s0 myvpsserver.top

Для указания начального порта UDP применяйте -p:

traceroute -p34543 myvpsserver.top

Примечание: при сочетании с -I (ICMP) опция -p задаёт исходный номер последовательности ICMP, а не порт.

Терминал: traceroute ICMP ECHO с пользовательским номером последовательности

Методика диагностики — пошагово (мини‑метод)

  1. Запустите базовый traceroute до проблемного хоста: traceroute hostname.
  2. Обратите внимание на первые неответы (* * *) и резкие скачки RTT.
  3. Повторите запрос с -q1 и -N 1, чтобы исключить эффект параллельных пакетов.
  4. Попробуйте -I и -T, чтобы проверить фильтрацию протоколов.
  5. Выполните ping до подозрительных узлов по очереди для подтверждения задержек.
  6. При необходимости — смените интерфейс -i или начальный TTL -f для локализации проблемы.
  7. Соберите скриншоты/логи и, если проблема на стороне провайдера, эскалируйте с точными данными о хопе и времени.

Дерево принятия решения

flowchart TD
  A[Есть проблема доступа или высокая задержка?]
  A -->|Нет| B[Остановиться: проблема не сетевого уровня]
  A -->|Да| C[Запустить базовый traceroute]
  C --> D{На каком хопе начинается проблема?}
  D -->|Локально 'первые 1-3 хопа'| E[Проверить локальный роутер/маршрутизацию]
  D -->|Дальше| F[Попробовать -T и -I]
  F --> G{Ответило ли изменение протокола?}
  G -->|Да| H[Вероятно фильтрация UDP: использовать TCP/ICMP]
  G -->|Нет| I[Собрать логи, обратиться к провайдеру]
  E --> J[Проверить интерфейс, кабели, таблицы маршрутов]
  J --> K[Если не помогло — эскалировать на сетевого инженера]

Чек-листы по ролям

Системный администратор:

  • Запустить traceroute и ping до проблемного хоста.
  • Проверить таблицы маршрутизации (ip route).
  • Проверить настройки межсетевого экрана и NAT.
  • Собрать логи и трассировки для провайдера.

Разработчик / DevOps:

  • Повторить тесты из среды CI/CD или с того же сервера.
  • Проверить конфигурацию сервиса (binding, firewall rules).
  • Протестировать соединение с разных зон/регионов.

Техподдержка (первой линии):

  • Спросить, есть ли локальные изменения сети у пользователя.
  • Попросить сделать traceroute и отправить вывод.
  • При невозможности локализовать — передать инженерам с указанием хопа и времени.

Когда traceroute даёт неверную картину и альтернативы

Traceroute может «ложно» показывать проблему, если:

  • Промежуточный роутер фильтрует ICMP/UDP, но сам пропускает трафик дальше — тогда вы увидите пропуски (* * *), но реальный трафик идёт.
  • Маршрут ассиметричный: маршрут туда и обратно различается, поэтому задержки на возврате не видны.
  • QoS/Rate limiting применяет разные правила к probe-пакетам.

Альтернативы и дополняющие инструменты:

  • mtr — непрерывная смесь traceroute + ping для динамической оценки.
  • ping — для оценки стабильности и средней задержки.
  • tcptraceroute или traceroute -T — для проверки TCP-путей.
  • tracepath — простая версия, не требует root.
  • tcpdump — для анализа содержимого и подтверждения, что пакеты проходят.

Критерии приёмки

Чтобы считать диагностику завершённой, должны быть выполнены следующие пункты:

  • Набор тестов (traceroute/ICMP/TCP) воспроизводит проблему или документирует её отсутствие.
  • Определён конкретный хоп или сегмент сети с аномалией.
  • Собраны временные метрики и логи (скрин, текстовый вывод) для эскалации.
  • Предложен дальнейший план: локальная правка, смена маршрута, обращение к провайдеру.

Короткий глоссарий (1‑строчные определения)

  • TTL — Time To Live, счётчик «жизни» пакета;
  • RTT — Round Trip Time, время туда‑обратно;
  • ICMP — протокол сообщений сети (используется для ошибок и диагностики);
  • UDP/TCP — протоколы транспортного уровня; UDP без установления соединения, TCP устанавливает соединение.

Соображения по безопасности и приватности

  • Traceroute раскрывает IP-адреса промежуточных устройств. Не публикуйте трассировки с конфиденциальными внутренними адресами в открытых каналах.
  • Запуск traceroute с правами root не обязателен для большинства флагов, но некоторые варианты (например, низкоуровневые порты) требуют привилегий.
  • Если вы выполняете трассировку через VPN или приватные каналы, учитывайте правила компании и шифрование данных.

Все изменения и скриншоты — Ramces Red.

Итог

Traceroute — простой и полезный инструмент для первоначальной локализации сетевых проблем. Он даёт картину маршрута и задержки, но не заменяет углублённый анализ. Комбинируйте traceroute с mtr, ping и tcpdump, используйте разные протоколы и следуйте методике для надёжной диагностики.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Настройка внешнего вида Android: темы, лаунчеры, значки
Android.

Настройка внешнего вида Android: темы, лаунчеры, значки

Динамические маршруты в Next.js
Разработка

Динамические маршруты в Next.js

Переустановить Microsoft Store в Windows 11
Windows

Переустановить Microsoft Store в Windows 11

Как добавить шрифты в GIMP
GIMP

Как добавить шрифты в GIMP

Как загрузить приложения Microsoft Store без магазина
Windows

Как загрузить приложения Microsoft Store без магазина

Converseen — пакетный конвертер изображений
Инструменты

Converseen — пакетный конвертер изображений