Команда tracepath: проверка хопов и MTU пути вместо traceroute

Тестовая средаСемейство RHELAlmaLinux 9.8iputils 20210202Учётная запись rootDebian 12 · traceroute 2.1.2 обычная учётная запись
Сетевые командыtracepathРасположение/usr/bin/tracepath

На сервере Linux маршрут (хопы), по которому пакеты идут до цели, и MTU пути можно проверить командой tracepath без прав root. На сервере AlmaLinux 9 без установленного traceroute мы ограничили число хопов до 10 и проверили маршрут до example.com: до четвёртого хопа были видны время ответа и MTU пути 1500, а следующие шесть хопов не ответили.

Вывод ниже получен на сервере AlmaLinux 9.8 (учётная запись root), а версия traceroute и состояние пакета проверены на сервере Debian 12 (обычная учётная запись). IPv6-адреса первого хопа и промежуточных маршрутизаторов заменены примерами адресов для документации, а время ответа и значения pmtu оставлены как есть.

1️⃣ Как пользоваться командой tracepath

  • ↪️ Проверка хопов и MTU пути до цели

tracepath принимает одно имя или IP-адрес цели, отправляет UDP-пакеты и выводит ответившие хопы по одной строке в порядке TTL. По умолчанию максимальное число хопов — 30, его можно изменить опцией -m.

Для example.com мы добавили -m 10, чтобы проверить маршрут только до десятого хопа.

tracepath -n -m 10 example.com
 1?: [LOCALHOST]                        0.006ms pmtu 9001
 1:  fe80::1%eth0                                          0.077ms pmtu 1500
 1:  2001:db8:a::5b                                        2.627ms asymm  8 
 2:  2001:db8:a::52                                        1.473ms asymm 12 
 3:  2001:db8:b::1e                                       19.653ms asymm  9 
 4:  2001:db8:c::                                          3.642ms asymm 11 
 5:  no reply
 6:  no reply
 7:  no reply
 8:  no reply
 9:  no reply
10:  no reply
     Too many hops: pmtu 1500
     Resume: pmtu 1500 

Этот сервер отправлял пакеты на IPv6-адрес example.com, и до четвёртого хопа выводилось время ответа. С пятого хопа шли строки no reply, поэтому строка reached, означающая, что цель достигнута за десять хопов, не появилась, а выполнение заняло около 18 секунд.

Запуск к той же цели без -m не завершился за 30 секунд. Для маршрутов со множеством неотвечающих хопов число проверяемых хопов уменьшают опцией -m.

Версию установленного tracepath проверяют опцией -V; на этом сервере tracepath был из iputils 20210202.

tracepath -V
tracepath from iputils 20210202

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

  • ↪️ Номер хопа, pmtu, asymm, reached

Каждая строка вывода показывает по порядку номер хопа, ответивший адрес и время приёма-передачи. Там, где меняется MTU пути, добавляется pmtu, а если у прямого и обратного пути разное число хопов — asymm. Вот что смотреть в каждой строке.

ВыводНазначение
1?:Поле номера хопа — ? добавляется к номеру, угаданному из-за того, что TTL не удалось получить из ответа
[LOCALHOST]Строка самого сервера, пока пакет ещё не ушёл в сеть
0.077msВремя приёма-передачи до этого хопа
pmtu 1500MTU пути (байты), изменившийся в этой точке, — появляется только при изменении
asymm 8Разница в числе хопов между прямым и обратным путём — официальное руководство называет это значение ненадёжным
no replyХоп, не ответивший на пакет, отправленный с этим TTL
reachedСтрока, где цель достигнута
Too many hopsОстановка после проверки числа хопов, заданного опцией -m
Resume: pmtu … hops … back …MTU всего пути, число хопов до цели и оценка числа обратных хопов

В выводе для example.com pmtu в первой строке [LOCALHOST] был 9001 и на первом хопе сменился на 1500. То, что строка TTL 1 выводится дважды с другим адресом, тоже соответствует примеру из официального руководства. Руководство объясняет, что если первый пакет отклоняется на первом хопе из-за MTU пути, та же строка TTL появляется ещё раз.

Когда цель достигнута, в конце строки добавляется reached, а последняя строка Resume показывает число хопов до цели. При отправке на 127.0.0.1 reached появился за один хоп, а строка Resume была [pmtu 65535 hops 1 back 1].

tracepath -n 127.0.0.1
 1:  127.0.0.1                                             0.047ms reached
     Resume: pmtu 65535 hops 1 back 1 

Если маршрут закончился на Too many hops без reached, значит, в пределах хопов, заданных опцией -m, ответа от цели не было. На маршруте до example.com за десять хопов reached тоже не появился, поэтому в строке Resume остался только pmtu без числа хопов.

3️⃣ Опции tracepath

  • ↪️ -n, -b, -m и длина пакета -l

У tracepath всего восемь опций: -4, -6, -n, -b, -l, -m, -p и -V; при запуске без цели этот список выводится как справка по использованию. Без опций ответившие адреса преобразуются в имена: при отправке на localhost в поле хопа появился localhost.

tracepath localhost
 1?: [LOCALHOST]                        0.003ms pmtu 65536
 1:  localhost                                             0.048ms reached
 1:  localhost                                             0.030ms reached
     Resume: pmtu 65536 hops 1 back 1 

[tracepath -n] выводит только IP-адреса, не преобразуя их в имена. С -n для того же localhost поле хопа сменилось на IPv6-адрес ::1, и маршрут до example.com, запущенный с -n, тоже показал в поле хопа только адреса.

tracepath -n localhost
 1?: [LOCALHOST]                        0.005ms pmtu 65536
 1:  ::1                                                   0.039ms reached
 1:  ::1                                                   0.010ms reached
     Resume: pmtu 65536 hops 1 back 1 

-b выводит имя и адрес вместе. С -b для 127.0.0.1 адрес появился в скобках после имени: [localhost (127.0.0.1)].

tracepath -b 127.0.0.1
 1:  localhost (127.0.0.1)                                 0.050ms reached
     Resume: pmtu 65535 hops 1 back 1 

-m задаёт максимальное число проверяемых хопов и принимала значения от 0 до 255. С -m 0 сразу вывелись только строки Too many hops и Resume без строк хопов, а значение 256 было отклонено с сообщением [out of range].

tracepath -m 0 127.0.0.1
     Too many hops: pmtu 65535
     Resume: pmtu 65535 

-l — длина первого отправляемого пакета; по умолчанию 65535 байт для IPv4 и 128000 байт для IPv6. С -l 1500 для 127.0.0.1 pmtu в строке Resume сменился с 65535 на 1500.

tracepath -l 1500 -n 127.0.0.1
 1:  127.0.0.1                                             0.028ms reached
     Resume: pmtu 1500 hops 1 back 1 

-p задаёт первый UDP-порт назначения. Результат с -p 33434 для 127.0.0.1 был таким же, как без этой опции.

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

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

  • ↪️ Установка, права, отправляемые пакеты

На серверах, где traceroute установить нельзя, маршрут проверяют командой tracepath вместо traceroute. На проверенном сервере AlmaLinux 9.8 пакета traceroute не было, а tracepath входит в пакет iputils и запустился без отдельной установки.

rpm -q traceroute
package traceroute is not installed

На сервере Debian 12 было наоборот: traceroute 2.1.2 был установлен, а пакет iputils-tracepath с tracepath — нет.

traceroute --version
Modern traceroute for Linux, version 2.1.2
Copyright (c) 2016  Dmitry Butskoy,   License: GPL v2 or any later
apt-cache policy iputils-tracepath
iputils-tracepath:
  Installed: (none)
  Candidate: 3:20221126-1+deb12u1

Как видно по этим двум серверам, набор команд зависит от дистрибутива, поэтому сначала проверьте, какая из них есть на сервере, к которому вы подключены. tracepath не требует прав root и запускается под любой учётной записью, которая может отправлять UDP-пакеты. Исполняемый файл tracepath на сервере AlmaLinux 9.8 тоже имел права rwxr-xr-x без дополнительных возможностей (capability).

Параметрtracepathtraceroute
Сервер AlmaLinux 9.8Входит в пакет iputils, запускается сразуНе установлен
Сервер Debian 12Пакет iputils-tracepath не установленtraceroute 2.1.2 установлен
Отправляемые пакетыUDPПо умолчанию UDP, -I — ICMP, -T — TCP
Вывод на хопОдна строкаПо умолчанию три отправки, три значения времени (меняется опцией -q)
Число опцийВосемь: -4 -6 -n -b -l -m -p -VБольше 20 только на первом экране --help

Если нужно смотреть маршрут по ICMP или TCP либо отправлять по несколько раз на хоп, чтобы сравнить время, придётся установить и использовать команду traceroute. На серверах, где установка затруднена или где нужно видеть и MTU пути, подходит tracepath.

🔲 Симулятор команды tracepath

В симуляторе ниже можно снова посмотреть маршрут до example.com, меняя только число хопов, или самостоятельно ввести -n, -b, -m и -l для localhost и 127.0.0.1 и сравнить результаты.

Симулятор команды tracepathiputils 20210202
[root@server work]#
Работает только в вашем браузере и не отправляет настоящих пакетов. Клавишами ↑↓ можно вызвать предыдущие команды.

🔢 FAQ & рекомендуемые материалы

Нет, код выхода этого не показывает. Даже когда запуск к example.com с -m 10 закончился на Too many hops без reached, код выхода был 0. Ошибка разрешения имени и неверный аргумент дали 1, а запуск без цели — 255. Код выхода различает только ошибки выполнения, поэтому достигнута ли цель, проверяют по строке reached в выводе.

localhost отправлялся на IPv6-адрес ::1, поэтому в первой строке [LOCALHOST] вывелся MTU петлевого интерфейса 65536, а для 127.0.0.1, то есть IPv4, без изменений вывелась длина пакета IPv4 по умолчанию — 65535. MTU интерфейса lo, проверенный командой ip link, тоже был 65536.

С -4 пакеты отправляются только на IPv4-адреса. С -4 для localhost reached появился за один хоп по IPv4 без строки [LOCALHOST], а -6 для 127.0.0.1, наоборот, завершился сообщением [Address family for hostname not supported].

ℹ️ О партнёрских ссылках
Материалы этого сайта содержат партнёрские ссылки. Если посетитель покупает товар или услугу по такой ссылке, сайт получает комиссию от продавца. При этом сумма, которую платит покупатель (при акционных скидках сумма снижается ↓), не увеличивается. Указанные цены, скидки и наличие актуальны на момент написания и могут отличаться, поэтому перед покупкой уточняйте их у продавца. Товары выбираются и оцениваются по нашим собственным критериям, а комиссия не влияет ни на порядок, ни на содержание обзоров.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Докажите, что вы человек: 4   +   2   =