Команда traceroute: установка, использование и опции -n, -I, -T
Чтобы проверить по хопам, через какие маршрутизаторы проходят пакеты на пути к цели, используйте команду traceroute. На сервере AlmaLinux 9.8 traceroute не был установлен, поэтому мы установили его через dnf, а на сервере Debian 12 с traceroute 2.1.2 трассировка маршрута до example.com достигла цели на седьмом хопе.
Приведённый ниже вывод получен на сервере Debian 12 под обычной учётной записью, и только вывод rpm и dnf в главе об установке получен на сервере AlmaLinux 9.8 (учётная запись root). Имя хоста сервера заменено на server1, а адреса маршрутизаторов и целей на маршрутах заменены примерами (192.0.2.x, 198.51.100.x, 203.0.113.x). Номер выпуска установленного пакета (основная версия 2.1 не изменена) и время метаданных dnf тоже являются примерами, а время отклика оставлено как измерено.
1️⃣ Установка traceroute
Установлен ли traceroute по умолчанию, зависит от дистрибутива. На сервере AlmaLinux 9.8 запуск выдал [traceroute: command not found], а запрос через rpm не нашёл установленного пакета.
rpm -q traceroutepackage traceroute is not installedВ семействе RHEL установка выполняется через dnf. Предварительный просмотр с [--assumeno] показал только один пакет для установки, traceroute из репозитория baseos, без других пакетов.
dnf install --assumeno tracerouteLast metadata expiration check: 0:05:00 ago on Thu Oct 29 09:00:00 2026.
Dependencies resolved.
================================================================================
Package Architecture Version Repository Size
================================================================================
Installing:
traceroute x86_64 3:2.1.0-9.el9 baseos 56 k
Transaction Summary
================================================================================
Install 1 Package
Total download size: 56 k
Installed size: 107 k
Operation aborted.Размер загрузки составил 56k, размер после установки — 107k. [--assumeno] отвечает no на все вопросы, поэтому ничего не устанавливает и завершается сообщением [Operation aborted.] (по официальной документации dnf).
Настоящая установка выполнена командой [dnf install traceroute], без [--assumeno].
dnf install tracerouteLast metadata expiration check: 0:20:00 ago on Thu Oct 29 09:00:00 2026.
Dependencies resolved.
================================================================================
Package Architecture Version Repository Size
================================================================================
Installing:
traceroute x86_64 3:2.1.0-9.el9 baseos 56 k
Transaction Summary
================================================================================
Install 1 Package
Total download size: 56 k
Installed size: 107 k
Downloading Packages:
traceroute-2.1.0-9.el9.x86_64.rpm 3.6 MB/s | 56 kB 00:00
--------------------------------------------------------------------------------
Total 97 kB/s | 56 kB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : traceroute-3:2.1.0-9.el9.x86_64 1/1
Running scriptlet: traceroute-3:2.1.0-9.el9.x86_64 1/1
Verifying : traceroute-3:2.1.0-9.el9.x86_64 1/1
Installed:
traceroute-3:2.1.0-9.el9.x86_64
Complete!Под [Installed:] появился только пакет traceroute, и установка завершилась сообщением [Complete!] без пакетов зависимостей.
После установки мы проверили версию командой [traceroute --version].
traceroute --versionModern traceroute for Linux, version 2.1.0
Copyright (c) 2016 Dmitry Butskoy, License: GPL v2 or any laterПуть к исполняемому файлу, найденный через [command -v traceroute], — [/usr/bin/traceroute].
В семействе Debian установите пакет traceroute из репозитория дистрибутива командой [apt install traceroute] (по официальной информации о пакетах Debian). Установленную версию проверяйте через --version.
traceroute --versionModern traceroute for Linux, version 2.1.2
Copyright (c) 2016 Dmitry Butskoy, License: GPL v2 or any laterНа сервере Debian 12 пакет traceroute уже был установлен, а версия отображалась как [Modern traceroute for Linux] 2.1.2.
2️⃣ Как использовать команду traceroute
traceroute принимает имя цели или IP-адрес и отправляет пакеты, у которых TTL начинается с 1 и увеличивается по одному. Пакет с TTL 1 истекает на первом маршрутизаторе, а пакет с TTL 2 — на втором. По ответам [time exceeded], которые возвращают эти маршрутизаторы, traceroute выводит адрес и время кругового пути для каждого хопа (по официальному руководству).
Когда пакет достигает цели, она отвечает [port unreachable], и трассировка заканчивается на этом хопе; если цель не достигнута, трассировка продолжается до максимального числа хопов. По официальному руководству на каждый хоп отправляются три пакета, поэтому в строке видны три времени, а по умолчанию проверяется до 30 хопов.
Для example.com мы вывели только адреса с помощью -n и проверили только до десятого хопа с помощью -m 10.
traceroute -n -m 10 example.comtraceroute to example.com (203.0.113.154), 10 hops max, 60 byte packets
1 192.0.2.1 0.110 ms 0.083 ms 0.067 ms
2 192.0.2.2 0.348 ms 0.273 ms 0.263 ms
3 198.51.100.77 0.426 ms 0.337 ms 198.51.100.13 1.251 ms
4 198.51.100.49 0.968 ms 1.264 ms 198.51.100.53 1.148 ms
5 * * *
6 203.0.113.19 1.631 ms 203.0.113.25 2.549 ms 203.0.113.14 1.543 ms
7 203.0.113.154 1.544 ms 1.656 ms 1.607 msВ первой строке показаны имя цели, фактически использованный адрес, максимальное число хопов и размер пакета 60 байт. На седьмом хопе ответил адрес цели, поэтому трассировка закончилась, не дойдя до десятого хопа, а весь запуск занял меньше секунды.
| Вывод | Назначение |
|---|---|
| traceroute to example.com (203.0.113.154) | Имя цели и адрес, в который оно разрешилось и на который фактически отправлялись пакеты |
| 10 hops max | Максимальное число проверяемых хопов — задаётся через -m, по умолчанию 30 |
| 60 byte packets | Размер отправляемых пакетов — по умолчанию 60 байт для IPv4 и 80 байт для IPv6 (по официальному руководству) |
| 1 | Номер хопа — значение TTL этого пакета |
| 192.0.2.1 | Адрес маршрутизатора, ответившего на этом хопе |
| 0.110 ms 0.083 ms 0.067 ms | Время кругового пути трёх пакетов, отправленных на один хоп |
| 198.51.100.77 … 198.51.100.13 | Строка с двумя адресами, потому что на одном хопе разным пакетам ответили разные маршрутизаторы |
| * * * | Ни один из трёх пакетов не получил ответа вовремя — каждая звёздочка означает один пакет |
| !H · !N · !P · !X | Значок недоступности после времени — хост, сеть или протокол недоступны, административный запрет (по официальному руководству) |
Третий и четвёртый хопы показали два адреса в одной строке, а шестой хоп — три. Когда на три пакета, отправленных на один хоп, отвечают разные маршрутизаторы, traceroute выводит все ответившие адреса подряд, как описано в официальном руководстве.
Без -n traceroute преобразует ответившие адреса в имена хостов.
traceroute localhosttraceroute to localhost (127.0.0.1), 30 hops max, 60 byte packets
1 server1 (127.0.0.1) 0.068 ms 0.048 ms 0.028 msПри запуске для localhost в столбце хопа появилось имя хоста сервера Debian 12, а в скобках — адрес 127.0.0.1.
3️⃣ Опции traceroute
В --help у traceroute 2.1.2 перечислено 34 опции. Из них мы запустили -n, -q и -m, меняющие вывод, а также -I и -T, меняющие отправляемые пакеты, под обычной учётной записью на сервере Debian 12.
[traceroute -n] выводит только IP-адреса, не преобразуя их в имена хостов. С -n на том же localhost в столбце хопа остался только 127.0.0.1.
traceroute -n localhosttraceroute to localhost (127.0.0.1), 30 hops max, 60 byte packets
1 127.0.0.1 0.073 ms 0.075 ms 0.025 ms-q задаёт число пакетов на один хоп, значение по умолчанию — 3. При -q 1 появилось одно время, при -q 5 — пять.
traceroute -q 1 -n 127.0.0.1traceroute to 127.0.0.1 (127.0.0.1), 30 hops max, 60 byte packets
1 127.0.0.1 0.096 mstraceroute -q 5 -n 127.0.0.1traceroute to 127.0.0.1 (127.0.0.1), 30 hops max, 60 byte packets
1 127.0.0.1 0.083 ms 0.028 ms 0.024 ms 0.022 ms 0.022 ms-m меняет максимальное число проверяемых хопов. Значение 256 было отклонено сообщением [max hops cannot be more than 255].
traceroute -m 256 -n 127.0.0.1max hops cannot be more than 255По умолчанию пакеты отправляются по UDP. -I отправляет их как ICMP ECHO, а -T как TCP SYN (по умолчанию порт 80). Эти две опции нужны, чтобы перепроверить другим типом пакетов маршрут, на котором фильтруется UDP. Под обычной учётной записью обе опции оставили сообщение о нехватке прав и завершились с кодом выхода 1.
traceroute -I -n 127.0.0.1You do not have enough privileges to use this traceroute method.
socket: Operation not permittedtraceroute -T -n 127.0.0.1You do not have enough privileges to use this traceroute method.
socket: Operation not permittedОфициальное руководство называет способ по умолчанию и -U (фиксированный порт назначения 53) способами, разрешёнными обычным учётным записям. -I работает под обычной учётной записью, только если настройка ядра ping_group_range разрешает группу этой записи.
cat /proc/sys/net/ipv4/ping_group_range1 0Значение на сервере Debian 12 было [1 0], что по документации ядра Linux не разрешает ни одной группы. -T независимо от этой настройки не входит в способы, разрешённые обычным учётным записям, поэтому запускайте обе опции под учётной записью с правами root.
📌 Основные опции: результаты из этой статьи
| Опция | Назначение | Результат в этой статье |
|---|---|---|
| -n | Выводит только IP-адреса, не преобразуя их в имена хостов | Для localhost в столбце хопа остался только 127.0.0.1 |
| -q | Задаёт число пакетов на один хоп (по умолчанию 3) | -q 1 показывает одно время, -q 5 — пять |
| -m | Задаёт максимальное число проверяемых хопов (по умолчанию 30) | С -m 10 example.com закончился на седьмом хопе, -m 256 отклонено сообщением [max hops cannot be more than 255] |
| -I | Отправляет пакеты как ICMP ECHO | Под обычной учётной записью — сообщение о нехватке прав и код выхода 1 |
| -T | Отправляет пакеты как TCP SYN (по умолчанию порт 80) | Под обычной учётной записью — сообщение о нехватке прав и код выхода 1 |
| -U | Отправляет по UDP с фиксированным портом назначения 53 | example.com показал * * * с седьмого по десятый хоп, адрес цели не появился |
📎 Другие опции: по официальному руководству
| Опция | Назначение |
|---|---|
| -w | Задаёт максимальное время ожидания ответа (по умолчанию 5 секунд) |
| -p | Задаёт порт (начальный порт для UDP, фиксированный порт назначения для TCP, начальный порядковый номер для ICMP) |
| -f | Задаёт начальный TTL (по умолчанию 1) |
| -N | Задаёт число одновременно отправляемых пакетов (по умолчанию 16, уменьшайте для маршрутизаторов, ограничивающих скорость ответов) |
| -s | Меняет адрес отправителя на адрес другого интерфейса сервера |
| -i | Задаёт сетевой интерфейс для исходящих пакетов (по умолчанию по таблице маршрутизации) |
| -4 | Отправляет только по IPv4 (IPv4 по умолчанию, если имя возвращает адреса IPv4 и IPv6) |
| -6 | Отправляет только по IPv6 |
🔲 Симулятор команды traceroute
В симуляторе ниже вы можете сократить маршрут до example.com с помощью -m или ввести для 127.0.0.1 и localhost опции -n, -q, -f (начальный хоп), а также требующие прав -I и -T.
4️⃣ Хопы без ответа в traceroute
Даже если можно сменить способ отправки, хоп без ответа остаётся [* * *]. По официальному руководству каждая звёздочка означает один пакет без ответа вовремя, а ожидание длится не более 5 секунд.
Увидев * * * на промежуточном хопе, легко решить, что маршрут обрывается в этом месте. На маршруте к example.com со способом по умолчанию только пятый хоп был * * *, но пакеты прошли этот хоп, миновали шестой и достигли цели на седьмом.
-U отправляет с фиксированным портом назначения 53. Когда мы отправили пакеты на тот же example.com с -U, маршрутизатор перед целью ответил на шестом хопе, затем * * * продолжалось с седьмого по десятый хоп, а адрес цели не появился.
traceroute -U -n -m 10 example.comtraceroute to example.com (203.0.113.154), 10 hops max, 60 byte packets
1 192.0.2.1 0.176 ms 0.096 ms 0.661 ms
2 * * *
3 198.51.100.13 0.622 ms 0.586 ms 0.562 ms
4 198.51.100.49 0.898 ms 1.314 ms 198.51.100.53 1.159 ms
5 * * *
6 203.0.113.9 3.773 ms 203.0.113.27 3.275 ms 203.0.113.14 8.973 ms
7 * * *
8 * * *
9 * * *
10 * * *Официальное руководство объясняет, что при -U программа на стороне цели обычно не отвечает, поэтому последний хоп не виден. На маршруте, где брандмауэр фильтрует UDP-порты traceroute или ICMP ECHO, из-за этого брандмауэра тоже не приходят ответы, и продолжается только * * *.
| Где появилось * * * | Как читать | Перепроверка |
|---|---|---|
| Один промежуточный хоп | Этот хоп не ответил — если следующие хопы отвечают, пакеты его прошли | Оставьте как есть и читайте следующие хопы |
| Перед целью до -m | Цель или брандмауэр перед ней фильтрует этот пакет или порт (по официальному руководству) | Способ по умолчанию / -T (root) / [-T -p порт] |
| Хопы, меняющиеся при каждом запуске | Если маршрутизатор ограничивает скорость ответов ICMP, части ответов может не быть (по официальному руководству) | [-N 1] · [-w 5] |
Если трассировка остановилась перед целью, смените способ отправки и проверьте снова. Официальное руководство представляет -T как способ, созданный для прохождения через брандмауэры. Для цели с явно открытым портом, например почтового сервера, указание этого порта, как в [-T -p 25], может сработать, даже когда -I не доходит.
* на промежуточном хопе может меняться и в зависимости от способа отправки или запуска. Второй хоп ответил при способе по умолчанию, но при -U показал * * *. Официальное руководство сообщает, что части ответов может не быть, если маршрутизатор ограничивает скорость ответов ICMP, и советует уменьшить число одновременно отправляемых пакетов через [-N 1]. Кроме того, traceroute сокращает ожидание по уже полученному времени ответа; если из-за этого * появляется слишком рано, укажите одно время ожидания, как в [-w 5], чтобы отключить этот расчёт (по официальному руководству).
5️⃣ tracepath вместо traceroute
На сервере, где нельзя устанавливать пакеты, проверяйте тот же маршрут командой tracepath. На сервере AlmaLinux 9.8 не было traceroute, но был tracepath в составе iputils 20210202. На сервере Debian 12, наоборот, не было tracepath. По официальному руководству tracepath работает без прав root, но имеет меньше опций и отправляет только UDP. Поэтому, когда нужно сменить способ отправки через -I или -T либо отправить несколько пакетов на хоп через -q для сравнения, установите и используйте traceroute.
🔢 FAQ & рекомендуемые материалы
Сеть · Настройка
[Linux] Команда ip: управление сетевыми интерфейсами и настройками
Команда ip проверяет состояние сетевых интерфейсов, IP-адреса и таблицу маршрутизации и управляет ими.
Брандмауэр · Ubuntu
[Ubuntu] Настройка брандмауэра UFW в Ubuntu
Настройка для включения UFW, брандмауэра Ubuntu по умолчанию, и проверки его состояния и правил.
Сеть · DNS
Команда host в Linux | команда для DNS-запросов
Команда host запрашивает DNS, преобразуя имена хостов в IP-адреса и IP-адреса в имена хостов.
ℹ️ О партнёрских ссылках
Материалы этого сайта содержат партнёрские ссылки. Если посетитель покупает товар или услугу по такой ссылке, сайт получает комиссию от продавца. При этом сумма, которую платит покупатель (при акционных скидках сумма снижается ↓), не увеличивается. Указанные цены, скидки и наличие актуальны на момент написания и могут отличаться, поэтому перед покупкой уточняйте их у продавца. Товары выбираются и оцениваются по нашим собственным критериям, а комиссия не влияет ни на порядок, ни на содержание обзоров.