← Назад к вопросам

С помощью какой команды можно посмотреть маршрут от одного хоста к другому

1.3 Junior🔥 231 комментариев
#Сети и протоколы

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Для просмотра маршрута сетевого трафика от одного хоста к другому в Linux и Unix-подобных системах используется команда traceroute (или её современный вариант tracepath). В Windows аналогичная команда — tracert.

Основная команда: traceroute

traceroute — это классический инструмент для диагностики пути следования IP-пакетов. Он показывает каждый промежуточный маршрутизатор (хоп), который проходит пакет до достижения целевого хоста.

traceroute example.com

Выполнение этой команды выводит список всех узлов на пути, включая их IP-адреса и время ответа (RTT — Round-Trip Time) для каждого из трёх отправленных тестовых пакетов.

Принцип работы

traceroute использует особенность протокола ICMP (Internet Control Message Protocol) или UDP. Он отправляет пакеты с постепенно увеличивающимся значением поля TTL (Time to Live) в IP-заголовке:

  1. Первый пакет отправляется с TTL=1. Первый маршрутизатор уменьшает TTL до 0, отбрасывает пакет и отправляет обратно сообщение ICMP "Time Exceeded". traceroute записывает адрес этого маршрутизатора и время ответа.
  2. Затем отправляется пакет с TTL=2. Он проходит первый маршрутизатор (TTL уменьшается до 1), но отбрасывается на втором, который также отправляет ICMP-ответ.
  3. Процесс повторяется до тех пор, пока пакет не достигнет целевого хоста.

Когда целевой хост получает пакет, он отправляет ответ (например, ICMP "Port Unreachable" для UDP или другой тип ответа), что сигнализирует traceroute о завершении маршрута.

Современные альтернативы и варианты

1. tracepath

Более простой и часто предпочтительный инструмент в современных Linux-системах. Не требует специальных прав и использует только ICMP.

tracepath example.com

2. mtr (My TraceRoute)

Комбинирует возможности traceroute и ping, предоставляя динамическую статистику в реальном времени.

mtr example.com

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

3. Параметры traceroute для различных протоколов

# Использование UDP (традиционный режим, часто требует sudo из-за использования непривилегированных портов)
sudo traceroute -U example.com

# Использование ICMP (имитация ping)
traceroute -I example.com

# Использование TCP (полезно для обхода фильтрации UDP/ICMP)
traceroute -T example.com

# Указание порта для TCP/UDP
traceroute -T -p 443 example.com

Пример вывода traceroute

$ traceroute google.com
traceroute to google.com (142.250.185.78), 30 hops max, 60 byte packets
 1  192.168.1.1 (192.168.1.1)  0.500 ms  0.423 ms  0.398 ms
 2  10.0.0.1 (10.0.0.1)  5.123 ms  5.001 ms  4.890 ms
 3  213.180.1.1 (213.180.1.1)  10.456 ms  10.234 ms  10.123 ms
 4  * * *
 5  72.14.238.121 (72.14.238.121)  25.678 ms  25.456 ms  25.345 ms
 6  142.250.185.78 (142.250.185.78)  30.789 ms  30.567 ms  30.456 ms

В выводе:

  • Хоп 1 — локальный маршрутизатор.
  • Хоп 4 (* * *) — маршрутизатор, который не ответил на запросы (возможно, фильтрует ICMP).
  • Последний хоп — целевой хост.

Практическое применение в DevOps

  • Диагностика задержек сети: Определение, на каком участке возникают повышенные RTT.
  • Поиск точек отказа: Если трассировка "обрывается" на определённом хопе, это указывает на проблемный маршрутизатор или фильтрацию.
  • Анализ маршрутизации: Проверка, проходит трафик через ожидаемые сетевые узлы или есть неоптимальные пути.
  • Интеграция в мониторинг: Регулярные автоматические трассировки для ключевых серверов могут помочь в построении карты сетевой доступности.

Важные ограничения и особенности

  • Фильтрация ICMP/UDP: Многие сетевые устройства и firewall блокируют ICMP или UDP-пакеты, что может приводить к неполным трассировкам (* * *). В таких случаях стоит использовать TCP-трассировку (-T).
  • Разные результаты для разных протоколов: Маршрут для ICMP может отличаться от маршрута для TCP или UDP из-за политик маршрутизации (например, ECMP — Equal-Cost Multi-Path).
  • Асинхронная маршрутизация: Путь "обратно" (от целевого хоста к источнику) может отличаться от пути "вперед".

Таким образом, команда traceroute (и её варианты) является фундаментальным инструментом для анализа сетевой инфраструктуры, понимания пути данных и диагностики проблем соединения между хостами. В DevOps-практике её часто используют совместно с ping, netstat и анализаторами трафика (например, tcpdump) для комплексного исследования сетевых взаимодействий.

С помощью какой команды можно посмотреть маршрут от одного хоста к другому | PrepBro