Трассировка маршрута: как найти, где теряются пакеты по пути к сайту
7 мин чтения
Трассировка маршрута: как найти, где теряются пакеты по пути к сайту

Трассировка маршрута: как найти, где теряются пакеты по пути к сайту

Пинг говорит, что «до сервера далеко или плохо», но не говорит, где именно. Трассировка отвечает на этот вопрос: она показывает каждый маршрутизатор на пути пакета и время до него. Разбираем, как запустить трассировку на любой системе, как читать её вывод без паники из-за звёздочек — и в каких случаях она действительно находит виновного.

Как это работает: элегантный трюк с TTL

У каждого IP-пакета есть поле TTL (time to live) — счётчик прыжков, восьмибитное число не больше 255. Каждый маршрутизатор по пути уменьшает его на единицу, а когда TTL доходит до нуля — выбрасывает пакет и отправляет вам сообщение «время истекло», подписанное своим адресом. Трассировка пользуется этим честно и нагло: посылает пакет с TTL=1 — и узнаёт первый маршрутизатор, потом с TTL=2 — узнаёт второй, и так далее до цели. Обычно предел — 30 прыжков (значение по умолчанию), но до большинства серверов Рунета пакет добирается за 8–15.

# Windows
tracert example.ru

# macOS / Linux
traceroute example.ru

# Лучший вариант: mtr — трассировка + статистика потерь в динамике
mtr example.ru

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

Читаем вывод: что означает каждая строка

Типичный вывод — пронумерованные строки с адресом узла и тремя замерами времени. Первая строка — ваш роутер, дальше сеть провайдера, магистрали, сеть хостинга и, наконец, сам сервер. Читается это по трём паттернам:

Картина в выводе Что это значит Насколько тревожно
Время плавно растёт с каждым прыжком Нормальная картина: каждый узел дальше предыдущего Всё в порядке
Резкий скачок (+50–100 мс) на одном узле и дальше держится Пакет ушёл на дальнюю магистраль (другая страна/континент) — или узел перегружен Скачок между городами — физика; скачок внутри одного города — вопрос
Звёздочки (* * *) на промежуточном узле, но дальше маршрут идёт Узел просто не отвечает на служебные пакеты — маршрутизаторам разрешено их игнорировать Не тревожно: пакеты через узел проходят
Звёздочки начались с какого-то узла и до самого конца Маршрут обрывается: дальше пакеты не проходят (авария, фильтр, блокировка) Вот здесь и живёт проблема — на последнем ответившем узле
Потери в середине, но 0% на последнем узле (в mtr) Промежуточный узел экономит на ответах вам, но транзит не теряет Ложная тревога: важны потери именно на конечном узле

Самая частая ошибка чтения трассировки — паника из-за звёздочек и «потерь» на промежуточных узлах. Маршрутизаторы обрабатывают служебные ответы по остаточному принципу: им важнее пересылать трафик, чем отвечать на ваши зонды. Правило простое: диагноз ставится по конечному узлу и по точке, где ответы пропали навсегда, — а не по каждому молчуну в середине пути.

Разбор примера: типичная трассировка построчно

  1  192.168.1.1        1 ms    1 ms    1 ms   ← ваш роутер
  2  10.77.0.1          4 ms    5 ms    4 ms   ← узел провайдера в районе
  3  87.226.x.x         6 ms    6 ms    7 ms   ← ядро сети провайдера
  4  * * *                                     ← магистральный узел молчит (норма)
  5  188.128.x.x       18 ms   19 ms   18 ms   ← стык с магистралью, другой город
  6  95.167.x.x        42 ms   44 ms   43 ms   ← магистраль, ещё дальше
  7  193.107.x.x       45 ms   44 ms   45 ms   ← сеть дата-центра
  8  193.107.239.67    45 ms   45 ms   46 ms   ← сам сервер

Что здесь видно за десять секунд: локальная сеть чистая (1 мс до роутера), провайдер добавляет считанные миллисекунды, главный прирост (+24 мс на шаге 5→6) — это переход на дальнюю магистраль, то есть география, а не поломка. Молчащий четвёртый узел никого не должен волновать: следующие за ним отвечают. Сервер стабилен: три замера последней строки почти одинаковы. Диагноз — маршрут здоров, задержка объясняется расстоянием. Если бы на шаге 6 время прыгнуло до 300 мс и держалось до конца — вопрос к этой магистрали; если бы строки 5–8 превратились в звёздочки — к узлу номер 4 и дальше.

Почему маршруты не ходят по прямой

Трассировки регулярно удивляют географией: пакет из Новосибирска во Владивосток может ехать через Москву, а между двумя соседними офисами — через другой город. Это не глупость сети, а её экономика: маршруты определяются не расстоянием, а договорами операторов о стыках (пирингах). Трафик идёт туда, где у вашего провайдера есть выгодный стык, — и иногда этот стык физически далеко. Для владельца сайта отсюда важный вывод: задержка до аудитории зависит не только от того, где стоит сервер, но и от того, как сети провайдеров аудитории состыкованы с сетью вашего хостинга. Проверить это можно только измерением из реальных сетей в реальных городах — по карте не угадаешь.

Ограничение, о котором забывают: маршрут — только ваш

Трассировка показывает путь от вас до сервера — и только его. У посетителя из другого города, у другого оператора, маршрут другой: он пойдёт через другие магистрали и упрётся (или не упрётся) в другие проблемы. Более того, обратный путь пакетов может отличаться от прямого — маршрутизация несимметрична. Поэтому «у меня трассировка чистая» и «у клиентов сайт тормозит» спокойно сосуществуют: вы просто смотрите на разные дороги.

Отсюда практический вывод: трассировка — инструмент локализации проблемы, которую уже заметили, а не инструмент наблюдения. Заметить же проблему «в других дорогах» можно, только регулярно проверяя сайт из тех мест, где живёт аудитория, — как мы разбирали в статье о проверке доступности из России.

Шпаргалка: с чем идти к провайдеру или хостеру

Поддержка любит конкретику. Идеальное вложение к тикету: вывод mtr за 5 минут (сотня циклов), время замера, и одна фраза — «потери N% начинаются с узла X». Такой тикет решается в разы быстрее, чем «у нас всё тормозит».

Мини-алгоритм: пинг → трассировка → выводы

Рабочая связка диагностики выглядит так. Шаг 1: пинг до цели — есть ли вообще проблема и какая (высокая задержка? потери?). Шаг 2: трассировка или mtr — где начинается: в вашей сети (первые 1–2 прыжка), у провайдера (следующие несколько), на магистрали или у хостинга (последние). Шаг 3: если проблема на последних прыжках — проверка сайта из другой сети и других городов: если там всё хорошо, дорога плохая только у вас; если плохо везде — проблема на стороне площадки, и это уже разговор с хостером. Кто именно виноват в каждом случае — мы подробно раскладывали в статье «Сайт не работает: как понять, у кого проблема».

Как это устроено в Пруфене

Трассировку запускают, когда уже что-то болит. Чтобы узнавать о боли раньше клиентов, Пруфен проверяет доступность и время ответа сайта по расписанию из 13 точек в разных городах — и когда сайт перестаёт отвечать хотя бы из части из них, вы получаете уведомление с картиной «где лежит, где живёт»: готовая замена ручной трассировке из пяти городов сразу.

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

Почему tracert и traceroute показывают разные картинки для одного сайта? Windows шлёт ICMP-зонды, классический Unix-traceroute — UDP. Файрволы по пути относятся к ним по-разному, отсюда разные звёздочки. Смысл вывода от этого не меняется.

Трассировка обрывается, а сайт при этом открывается. Как так? Сервер или его файрвол игнорирует служебные зонды, но нормально отвечает на HTTP. Это обычная настройка безопасности. Верить в таком случае стоит HTTP-проверке, а не трассировке.

Может ли трассировка показать блокировку? Косвенно: маршрут, стабильно обрывающийся на сети оператора (а из других сетей проходящий), — характерный признак фильтрации. Для уверенного диагноза нужно сравнить трассировки из нескольких сетей и городов.

Через VPN трассировка выглядит странно — почему? Потому что для вашей системы весь путь до VPN-сервера — один «виртуальный» прыжок: реальные маршрутизаторы внутри туннеля не видны. Первые узлы после туннеля — уже сеть VPN-провайдера. Для диагностики собственного подключения VPN нужно отключить.

Сайт работает по HTTPS, а трассировка «не проходит». Можно ли трассировать именно порт 443? Да, инструментами вроде tcptraceroute или tracetcp: они шлют TCP-пакеты на нужный порт, и файрволы пропускают их охотнее, чем классические зонды. Полезно, когда обычная трассировка обрывается на подходе к серверу, а понять путь всё-таки нужно.

Что значит время меньше миллисекунды на первом прыжке? Это ваш роутер — он в одном кабеле или одном Wi-Fi от вас. Если и здесь десятки миллисекунд, проблема вообще не в интернете, а в вашей локальной сети: перегруженный Wi-Fi-канал, старый роутер, помехи.

Была ли статья полезна?

Начните мониторинг прямо сейчас

Бесплатный тариф — до 5 проверок. 150 ₽ на баланс при регистрации.

Создать аккаунт