Как запустить Traceroute на Windows, Mac и Linux
Утилита traceroute — это сетевой диагностический инструмент, который отображает точный маршрут, по которому IP-пакеты следуют от вашего компьютера до целевого хоста, фиксируя каждый промежуточный маршрутизатор (хоп) и измеряя время приёма-передачи (RTT) до каждого из них. Это наиболее эффективный инструмент для определения того, где именно возникает скачок задержки, потеря пакетов или аномалия маршрутизации — в вашей локальной сети, инфраструктуре провайдера, транзитной магистрали или на самом сервере назначения.
При запуске traceroute ваша система отправляет серию зондирующих пакетов с последовательно увеличивающимися значениями TTL (Time To Live). Каждый маршрутизатор, уменьшающий TTL до нуля, возвращает ICMP-сообщение «Time Exceeded», раскрывая свою идентификацию и время отклика. Именно этот механизм принципиально отличает traceroute от простого `ping` — он раскрывает полную топологию маршрутизации, а не только доступность конечного узла.
Как работает Traceroute изнутри
Понимание базовых механизмов позволяет избежать неверной интерпретации результатов — ошибки, которую допускают даже опытные администраторы.
- Windows (`tracert`) по умолчанию отправляет пакеты ICMP Echo Request.
- Linux и macOS (`traceroute`) по умолчанию отправляют UDP-датаграммы на порты с высокими номерами (33434+), хотя это можно настроить.
- Каждый зонд отправляется трижды на каждый хоп, что даёт три измерения RTT на строку.
- Маршрутизатор, который ограничивает скорость или отбрасывает ICMP/UDP, будет отображаться звёздочками (`* * *`), однако это не обязательно означает, что путь за ним нарушен.
Это поведенческое различие между операционными системами критически важно: хоп, который выглядит неотвечающим в Linux, может нормально отвечать в Windows — просто потому, что ACL маршрутизатора блокирует UDP, но разрешает ICMP.
Как запустить Traceroute в Windows
Шаг 1: Откройте командную строку
Нажмите `Win + R`, введите `cmd` и нажмите Enter. Либо найдите Командную строку в меню «Пуск». В средах с ограниченным ICMP рекомендуется запускать от имени администратора.
Шаг 2: Выполните команду
“`
tracert example.com
“`
Замените `example.com` на целевое доменное имя или IP-адрес. Windows преобразует имя хоста в IP-адрес перед отправкой первого зонда.
Шаг 3: Прочитайте вывод
“`
Tracing route to example.com [93.184.216.34] over a maximum of 30 hops:
1 <1 ms <1 ms <1 ms 192.168.0.1
2 10 ms 11 ms 10 ms 10.0.0.1
3 15 ms 16 ms 15 ms isp.gateway.net [203.0.113.1]
4 * * * Request timed out.
5 22 ms 21 ms 23 ms core1.backbone.net [198.51.100.5]
“`
Основные параметры `tracert` в Windows
| Флаг | Функция |
|---|
| — | — |
|---|
| `-d` | Пропускает обратный поиск DNS, значительно ускоряет вывод |
|---|
| `-h <max_hops>` | Устанавливает максимальное количество хопов (по умолчанию: 30) |
|---|
| `-w <timeout>` | Устанавливает время ожидания в миллисекундах на зонд (по умолчанию: 4000 мс) |
|---|
| `-4` | Принудительно использует IPv4 |
|---|
| `-6` | Принудительно использует IPv6 |
|---|
Пример с параметрами:
“`
tracert -d -h 20 -w 2000 example.com
“`
Совет профессионала: В Windows `tracert -d` — это самый быстрый способ получить результаты, когда вас интересует только маршрутизация на уровне IP, а не имена хостов. Обратный поиск DNS может добавлять несколько секунд на каждый хоп в перегруженных сетях.
Как запустить Traceroute в macOS
Шаг 1: Откройте Терминал
Нажмите `Command + Space`, введите Terminal и нажмите Enter. Или перейдите в Программы > Утилиты > Терминал.
Шаг 2: Выполните команду
“`
traceroute example.com
“`
В macOS утилита `traceroute` предустановлена как часть сетевого инструментария BSD. Дополнительная установка не требуется.
Шаг 3: Прочитайте вывод
“`
traceroute to example.com (93.184.216.34), 64 hops max, 52 byte packets
1 192.168.0.1 (192.168.0.1) 1.206 ms 0.930 ms 0.799 ms
2 10.0.0.1 (10.0.0.1) 10.123 ms 10.456 ms 10.678 ms
3 isp.gateway.net (203.0.113.1) 15.789 ms 15.012 ms 15.234 ms
“`
Обратите внимание, что macOS по умолчанию использует максимум 64 хопа против 30 в Windows — это важно при трассировке маршрутов до географически удалённых или сложных сетевых назначений.
Основные параметры `traceroute` в macOS
| Флаг | Функция |
|---|
| — | — |
|---|
| `-n` | Отключает разрешение имён хостов, показывает только IP-адреса |
|---|
| `-q <nqueries>` | Изменяет количество зондов на хоп (по умолчанию: 3) |
|---|
| `-m <max_ttl>` | Устанавливает максимальный TTL / количество хопов |
|---|
| `-w <waittime>` | Тайм-аут в секундах на зонд |
|---|
| `-I` | Использует ICMP Echo вместо UDP (полезно, когда UDP заблокирован) |
|---|
| `-T` | Использует TCP SYN-зонды (требует root; обходит многие межсетевые экраны) |
|---|
Пример — режим ICMP для обхода UDP-фильтрации:
“`
sudo traceroute -I example.com
“`
Пример — режим TCP SYN на порту 80 (наиболее совместимый с межсетевыми экранами):
“`
sudo traceroute -T -p 80 example.com
“`
Как запустить Traceroute в Linux
Шаг 1: Откройте Терминал
Нажмите `Ctrl + Alt + T` или найдите терминал в панели запуска приложений.
Шаг 2: Установите `traceroute` при необходимости
Во многих минимальных или серверных дистрибутивах Linux утилита `traceroute` не установлена по умолчанию.
Debian / Ubuntu:
“`
sudo apt-get install traceroute
“`
CentOS / RHEL / AlmaLinux / Rocky Linux:
“`
sudo yum install traceroute
“`
Fedora:
“`
sudo dnf install traceroute
“`
Arch Linux:
“`
sudo pacman -S traceroute
“`
Шаг 3: Выполните команду
“`
traceroute example.com
“`
Шаг 4: Прочитайте вывод
“`
traceroute to example.com (93.184.216.34), 30 hops max, 60 byte packets
1 192.168.0.1 (192.168.0.1) 0.728 ms 0.457 ms 0.373 ms
2 10.0.0.1 (10.0.0.1) 9.862 ms 9.946 ms 10.123 ms
3 isp.gateway.net (203.0.113.1) 14.987 ms 14.123 ms 15.456 ms
“`
Основные параметры `traceroute` в Linux
| Флаг | Функция |
|---|
| — | — |
|---|
| `-n` | Отключает обратное разрешение DNS |
|---|
| `-I` | Отправляет ICMP Echo-зонды (требует root) |
|---|
| `-T` | Отправляет TCP SYN-зонды (требует root) |
|---|
| `-U` | Отправляет UDP-зонды (поведение по умолчанию) |
|---|
| `-p <port>` | Указывает порт назначения |
|---|
| `-m <max_ttl>` | Максимальное количество хопов |
|---|
| `-q <nqueries>` | Количество зондов на хоп |
|---|
| `-A` | Выводит номера AS (автономных систем) рядом с каждым хопом |
|---|
Флаг `-A` особенно полезен для диагностики проблем маршрутизации между AS — он показывает, какому провайдеру или сетевому оператору принадлежит каждый хоп, позволяя точно определить, где именно передача между операторами вызывает задержку.
“`
traceroute -A example.com
“`
`mtr` — лучшая альтернатива в Linux
Для непрерывной или интерактивной диагностики `mtr` (Matt’s Traceroute) объединяет `ping` и `traceroute` в постоянно обновляемый дисплей. Это предпочтительный инструмент среди сетевых инженеров для анализа потери пакетов в реальном времени.
“`
sudo apt-get install mtr
mtr example.com
“`
`mtr` накапливает статистику со временем, делая видимой периодическую потерю пакетов — то, что однократный `traceroute` полностью упустит.
Сравнение между платформами: tracert и traceroute
| Характеристика | Windows (`tracert`) | macOS (`traceroute`) | Linux (`traceroute`) |
|---|
| — | — | — | — |
|---|
| Протокол зондирования по умолчанию | ICMP Echo Request | UDP | UDP |
|---|
| Максимальное количество хопов по умолчанию | 30 | 64 | 30 |
|---|
| Количество зондов на хоп по умолчанию | 3 | 3 | 3 |
|---|
| Размер пакета (по умолчанию) | 40 bytes | 52 bytes | 60 bytes |
|---|
| Режим ICMP | По умолчанию | Флаг `-I` (root) | Флаг `-I` (root) |
|---|
| Режим TCP SYN | Недоступен нативно | Флаг `-T` (root) | Флаг `-T` (root) |
|---|
| Поиск номеров AS | Недоступен | Недоступен | Флаг `-A` |
|---|
| Поддержка IPv6 | Флаг `-6` | Команда `traceroute6` | Флаг `-6` |
|---|
| Встроено в ОС | Да | Да | Часто требует установки |
|---|
Понимание вывода Traceroute: технический разбор
Номер хопа
Каждая строка представляет один маршрутизатор на пути. Хоп 1 — это почти всегда ваш шлюз по умолчанию (домашний роутер или коммутатор LAN). Хоп 2 — как правило, первая точка агрегации вашего провайдера.
Время отклика (RTT)
На каждый хоп отображаются три значения RTT. Нормальные значения, как правило, постепенно увеличиваются по мере накопления хопов и географического расстояния. Резкий скачок на 50+ мс на конкретном хопе, сохраняющийся на всех последующих хопах, указывает на реальное узкое место в этом узле.
Интерпретация `* * *` (звёздочек)
Звёздочки означают, что зонд превысил время ожидания — маршрутизатор не вернул ICMP-ответ в течение отведённого времени. Это не обязательно является проблемой. Многие корпоративные маршрутизаторы и узлы магистральных сетей намеренно снижают приоритет или молча отбрасывают ICMP/UDP-зонды из соображений безопасности, продолжая при этом нормально пересылать трафик. Если хопы после звёздочек показывают нормальные значения RTT, путь не нарушен.
Высокая задержка на одном хопе
Если хоп 7 показывает 200 мс, а хоп 8 — 25 мс, значение 200 мс почти наверняка является результатом ограничения скорости ICMP на маршрутизаторе хопа 7, а не реальным узким местом. Маршрутизатор обрабатывает зонд с низким приоритетом, пересылая реальный трафик на полной скорости. Всегда оценивайте тенденции задержки по всему пути, а не отдельные хопы в изоляции.
Асимметричная маршрутизация
Traceroute отображает только прямой путь. Обратные пакеты могут следовать совершенно другим маршрутом. Это означает, что наблюдаемый скачок задержки может возникать на обратном пути, а не на прямом, который показывает traceroute. Для полной видимости необходимы инструменты вроде `traceroute` в обоих направлениях (от источника и от назначения).
Петли маршрутизации
Если один и тот же IP-адрес появляется на нескольких последовательных хопах, существует петля маршрутизации. Пакеты бесконечно пересылаются между двумя маршрутизаторами до истечения TTL. Это является ошибкой конфигурации и приведёт к полному отказу подключения к данному назначению.
Типичные сценарии Traceroute и их значение
Сценарий 1: Высокая задержка начиная с хопа 2
Первая точка агрегации вашего провайдера перегружена. Это вне вашего контроля. Зафиксируйте вывод с временными метками и обратитесь к провайдеру с доказательствами.
Сценарий 2: Все хопы после хопа 5 показывают `* * *`, но назначение отвечает на ping
Вышестоящие маршрутизаторы назначения блокируют ICMP-зонды. Переключитесь в режим TCP SYN (`-T -p 443`) для трассировки через межсетевые экраны.
Сценарий 3: Скачки задержки на хопе, расположенном в неожиданной стране
Ваш трафик маршрутизируется через другую страну перед достижением локального назначения — аномалия маршрутизации BGP. Это распространено при неправильно настроенном anycast или плохо подключённых провайдерах.
Сценарий 4: Traceroute завершается, но сайт по-прежнему работает медленно
Узкое место может быть на стороне сервера: перегруженный CPU, медленный отклик приложения или задержка базы данных. Traceroute измеряет только производительность на сетевом уровне. Если вы размещаетесь на VPS и сталкиваетесь с этим, исследуйте использование ресурсов сервера с помощью `top`, `htop` или `vmstat`.
Сценарий 5: Traceroute никогда не завершается (останавливается на определённом хопе бесконечно)
Межсетевой экран отбрасывает ваши зонды, и назначение недоступно. Проверьте с помощью `ping` до назначения. Если ping также не проходит, хост недоступен или блокирует весь ICMP. Если ping проходит, заблокирован только протокол зондирования — смените протокол.
Traceroute для диагностики серверов и хостинга
Traceroute незаменим при диагностике проблем с подключением между вашей инфраструктурой и конечными пользователями или между сервисами. Если вы запускаете приложения на выделенном сервере, traceroute из нескольких географически распределённых точек наблюдения позволяет определить, локализована ли задержка в конкретном регионе или у конкретного провайдера.
В средах веб-хостинга, управляемых через панель управления, трассировка маршрутов до IP-адреса вашего сервера со стороны клиента помогает разграничить проблему на уровне хостинга и проблему транзита сети. Администраторы, использующие VPS с cPanel, могут сопоставлять данные traceroute с серверными журналами доступа для получения полной картины жалобы на подключение.
При диагностике сбоев доставки электронной почты или тайм-аутов SMTP запуск traceroute до IP-адреса вашего почтового сервера является логичным первым шагом перед проверкой записей SPF/DKIM. Если вы используете выделенный почтовый хостинг, это помогает подтвердить, является ли проблема сетевой или конфигурационной.
Для нагрузок, чувствительных к задержкам, таких как инференс машинного обучения или конвейеры рендеринга, работающие на GPU-хостинге, traceroute помогает убедиться, что сетевой путь между вашим клиентом и GPU-узлом оптимально маршрутизирован без неожиданных транзитных хопов.
Продвинутые техники: онлайн и распределённый Traceroute
Traceroute из одной точки показывает только путь от вашего компьютера. Для комплексного анализа сети:
- Looking Glass серверы: Многие провайдеры и IXP управляют публичными looking glass серверами, позволяющими запускать traceroute с их сетевого края, раскрывая путь с точки зрения оператора.
- BGP.tools / RIPE Atlas: Распределённые платформы измерений, запускающие traceroute одновременно из сотен глобальных точек наблюдения, выявляя региональные аномалии маршрутизации, невидимые из одного места.
- PathPing (Windows): Встроенный инструмент Windows, объединяющий `ping` и `tracert`, выполняющий непрерывные зонды до каждого хопа и вычисляющий статистику потери пакетов. Запуск: `pathping example.com`
- WinMTR: Графический аналог `mtr` для Windows, предоставляющий статистику потери пакетов и задержки в реальном времени для каждого хопа.
Практическая матрица решений: какой инструмент использовать
| Ситуация | Рекомендуемый инструмент |
|---|
| — | — |
|---|
| Быстрая однократная проверка пути в Windows | `tracert -d target` |
|---|
| Быстрая однократная проверка пути в Linux/macOS | `traceroute -n target` |
|---|
| Непрерывный/реальный анализ потери пакетов | `mtr target` |
|---|
| Цель за межсетевым экраном, блокирующим ICMP/UDP | `traceroute -T -p 443 target` (Linux/macOS) |
|---|
| Определение провайдера каждого хопа | `traceroute -A target` (Linux) |
|---|
| Диагностика из нескольких глобальных точек | RIPE Atlas или BGP.tools |
|---|
| Непрерывная статистика потерь в Windows | `pathping target` |
|---|
| Сравнение прямого и обратного путей | Запустите traceroute с обоих конечных узлов |
|---|
Ключевые технические выводы
- Всегда используйте `-n` или `-d` в первую очередь, чтобы устранить задержки разрешения DNS и быстрее получить необработанные результаты.
- Хоп, показывающий `* * *`, не означает нарушенный путь — оцените следующие за ним хопы.
- Задержка на одном промежуточном хопе часто является ограничением скорости ICMP, а не реальным узким местом.
- Переключайте протоколы зондирования (ICMP, UDP, TCP SYN) при постоянных тайм-аутах — межсетевые экраны избирательны по протоколам.
- Используйте `mtr` вместо `traceroute` для любой диагностической сессии длиннее одной проверки.
- Traceroute раскрывает только прямой путь. Асимметричная маршрутизация требует двунаправленного анализа.
- Флаг `-A` в Linux traceroute добавляет аннотацию номеров AS, что необходимо для анализа маршрутизации через несколько провайдеров.
- Документируйте выводы traceroute с временными метками при подаче заявок в поддержку провайдера — операторы требуют эти данные для расследования проблем на уровне BGP.
Часто задаваемые вопросы
Почему traceroute показывает `* * *` для некоторых хопов, но назначение по-прежнему доступно?
Маршрутизаторы на пути настроены на отбрасывание или ограничение скорости ICMP-сообщений о превышении TTL, продолжая при этом нормально пересылать трафик. Это намеренная политика безопасности и производительности на большинстве корпоративных маршрутизаторов и маршрутизаторах операторского класса. Это не указывает на потерю пакетов на пути данных.
В чём разница между `tracert` в Windows и `traceroute` в Linux?
Ключевое различие — протокол зондирования по умолчанию: `tracert` использует ICMP Echo Request, тогда как Linux/macOS `traceroute` использует UDP-датаграммы. Это означает, что они по-разному взаимодействуют с межсетевыми экранами и ACL. Linux `traceroute` также поддерживает TCP SYN-зонды и поиск номеров AS, чего `tracert` не умеет.
Как запустить traceroute через межсетевой экран, блокирующий UDP и ICMP?
Используйте режим TCP SYN с портом, который почти наверняка открыт на цели, например портом 80 или 443: `sudo traceroute -T -p 443 example.com`. TCP SYN-зонды проходят через большинство stateful-межсетевых экранов, поскольку напоминают начало легитимного соединения.
Что означает резкий скачок задержки в traceroute, сохраняющийся на всех последующих хопах?
Устойчивое увеличение задержки начиная с определённого хопа указывает на реальное узкое место или перегруженный канал в этой точке пути. Это отличается от скачка на одном хопе (который обычно является ограничением скорости). Устойчивое увеличение означает, что весь трафик задерживается в этом узле или на канале сразу после него.
Может ли traceroute диагностировать медленную работу сайта?
Traceroute диагностирует только задержку на сетевом уровне и проблемы маршрутизации. Если сетевой путь выглядит нормально, но сайт по-прежнему работает медленно, проблема на стороне сервера — время обработки приложением, задержка запросов к базе данных или исчерпание ресурсов. Используйте инструменты мониторинга сервера вместе с traceroute для полной диагностики.
