Битлента
Сетевые команды и утилиты4 мин чтения·

tracepath в Linux: трассировка без прав root и определение MTU по пути

Как работает tracepath в Linux: трассировка без прав администратора, значение pmtu на каждом переходе, ключи -n, -m, -l, -b и разбор вывода.

Кратко

Tracepath (пакет iputils) прокладывает маршрут и определяет минимальный MTU без прав root. Команда tracepath -n example.com печатает узлы и значение pmtu, а строка Resume в конце сообщает итоговый MTU пути и число переходов.

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

Tracepath решает две задачи одновременно: показывает узлы на пути и определяет наименьший MTU на маршруте (Path MTU, сокращённо PMTU). Главное его удобство в том, что он не требует прав суперпользователя: для отправки UDP-пакетов на высокие порты специальные привилегии не нужны.

Утилита входит в набор iputils, как и ping, поэтому в большинстве дистрибутивов Linux она уже установлена или ставится вместе с этим набором. В некоторых системах она называется tracepath6 для IPv6, а в современных версиях достаточно ключа -6.

Traceroute показывает только последовательность узлов, а вопрос о размере пакета он не решает. Если вы подозреваете проблему с MTU (страницы частично загружаются, соединения зависают на больших передачах), tracepath отвечает на этот вопрос прямо и без ручного подбора размера, как в проверке командой ping.

Практическое отличие в целях: traceroute отвечает на вопрос «через какие узлы идут пакеты», а tracepath дополнительно на вопрос «какого размера пакеты по этому пути проходят целиком». Когда проблема выглядит как «мелкое работает, крупное зависает», вторая информация полезнее первой, и начинать диагностику стоит именно с неё.

Основные ключи и пример запуска

Запуск в простейшем виде: tracepath -n example.com. Ключ -n отключает поиск имён и ускоряет вывод. Ниже параметры, в которых мы уверены.

КлючЧто делает
-nПоказывает только числовые адреса
-bПоказывает и имена, и адреса
-m числоОграничивает максимальное число переходов
-l числоЗадаёт начальную длину пакета
-p портЗадаёт начальный порт назначения
-4, -6Выбирают IPv4 или IPv6

Начальная длина пакета задаёт верхнюю границу зондирования: если вы укажете значение больше реального MTU, tracepath обнаружит предел и уменьшит размер. Порт менять требуется редко, обычно при попытке пройти узел, который фильтрует конкретные порты.

Так как утилита опирается на UDP, на маршруте с жёсткой фильтрацией она может не дойти до цели. В таком случае сочетайте её с другими способами трассировки.

Для IPv6 запускайте tracepath -6 example.com. В отличие от IPv4, в IPv6 маршрутизаторы не фрагментируют пакеты, поэтому определение PMTU там критично: узел, который отбрасывает ICMPv6-сообщения о слишком большом пакете, ломает связь для больших передач. Минимально допустимый MTU в IPv6 составляет 1280 байт.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно

Как читать вывод tracepath

Пример (пример, адреса из блока документации):

1?: [LOCALHOST] pmtu 1500 1: 192.0.2.1 0.512ms 1: 192.0.2.1 0.430ms 2: 198.51.100.1 3.106ms 3: no reply 4: 203.0.113.9 12.010ms pmtu 1492 5: 203.0.113.50 25.204ms reached Resume: pmtu 1492 hops 5 back 5

Разберём строки по частям.

  • Первая строка показывает локальный MTU, с которого начинается зондирование.
  • Значение pmtu, появившееся на переходе, означает, что начиная с этого места MTU стал меньше. В примере он снизился до 1492.
  • Строка no reply значит, что узел не ответил. Как и в traceroute, это не всегда обрыв.
  • Слово reached показывает, что цель достигнута.
  • В строке Resume приведены итоговый pmtu, число переходов туда и число переходов обратно (back).

Если значения hops и back заметно различаются, обратный путь отличается от прямого. В некоторых случаях вместо back показывается несколько значений или пометка asymm, что тоже говорит об асимметрии маршрута.

Что делать с найденным значением PMTU

Итоговый pmtu важен, если он оказался меньше 1500 и вы не знали об этом. Тогда стоит проверить, что на вашем роутере и компьютере выставлен подходящий размер MTU и что не блокируются ICMP-сообщения о необходимости фрагментации. Если эти сообщения фильтруются, отправитель не узнаёт о лимите, и крупные пакеты пропадают без объяснений. Такую ситуацию называют «чёрной дырой PMTU».

Порядок действий такой.

  1. Запустите tracepath -n к нескольким узлам и запишите итоговые значения pmtu.
  2. Найдите переход, на котором значение уменьшилось. Это часто узел на стороне провайдера или ваш собственный роутер с подключением PPPoE.
  3. Сравните результат с проверкой ping с запретом фрагментации. Они должны совпадать.
  4. При расхождении с настройками уточните значение у провайдера и скорректируйте MTU на своей стороне.

Подробнее понятие описано в словаре на странице про MTU, а настройка на роутере на странице про MTU и MSS.

После правки настроек повторите tracepath: значение pmtu должно совпасть с ожидаемым, а страницы и передачи крупных файлов перестать зависать. Если картина не изменилась, вернитесь к исходным настройкам и проверьте, нет ли фильтрации ICMP на вашем роутере или брандмауэре.

Ограничения tracepath

Утилита не заменяет полноценные средства диагностики. В отличие от mtr, она не собирает статистику потерь, а в отличие от traceroute, не умеет переключать протокол зондирования на ICMP или TCP.

Также в macOS штатного tracepath нет, поэтому для проверки MTU там используют ping с ключом -D и подбор размера вручную. В Windows аналога нет, применяют ping с ключом -f.

Отдельно стоит помнить о том, что результаты зависят от момента: маршруты меняются, и значение pmtu в разное время может различаться. Повторяйте измерение перед выводами. Проверяйте только свои сети и узлы, на которые у вас есть разрешение, и не запускайте утилиту в цикле по чужим адресам.

Если tracepath недоступен, но нужна проверка MTU, воспользуйтесь методом с ping: выберите размер данных 1472 и уменьшайте его, пока ответы не пойдут. Оба метода дают близкие значения, и расхождение в один-два байта чаще всего объясняется разной трактовкой заголовков в утилитах, а не проблемой сети.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно
tracepathlinuxmtuiputils

Часто задаваемые вопросы

Читайте также