Команда traceroute: установка, использование и опции -n, -I, -T

Тестовая средаСемейство RHELAlmaLinux 9.8Учётная запись rootDebian 12 · traceroute 2.1.2 обычная учётная записьПроверено 2026-10-29

Чтобы проверить по хопам, через какие маршрутизаторы проходят пакеты на пути к цели, используйте команду 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

  • ↪️ dnf в семействе RHEL, apt в семействе Debian

Установлен ли traceroute по умолчанию, зависит от дистрибутива. На сервере AlmaLinux 9.8 запуск выдал [traceroute: command not found], а запрос через rpm не нашёл установленного пакета.

rpm -q traceroute
package traceroute is not installed

В семействе RHEL установка выполняется через dnf. Предварительный просмотр с [--assumeno] показал только один пакет для установки, traceroute из репозитория baseos, без других пакетов.

dnf install --assumeno traceroute
Last 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 traceroute
Last 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 --version
Modern 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 --version
Modern 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.com
traceroute 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 localhost
traceroute 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

  • ↪️ -n, -q, -m и способы отправки -I, -T

В --help у traceroute 2.1.2 перечислено 34 опции. Из них мы запустили -n, -q и -m, меняющие вывод, а также -I и -T, меняющие отправляемые пакеты, под обычной учётной записью на сервере Debian 12.

[traceroute -n] выводит только IP-адреса, не преобразуя их в имена хостов. С -n на том же localhost в столбце хопа остался только 127.0.0.1.

traceroute -n localhost
traceroute 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.1
traceroute to 127.0.0.1 (127.0.0.1), 30 hops max, 60 byte packets
 1  127.0.0.1  0.096 ms
traceroute -q 5 -n 127.0.0.1
traceroute 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.1
max hops cannot be more than 255

По умолчанию пакеты отправляются по UDP. -I отправляет их как ICMP ECHO, а -T как TCP SYN (по умолчанию порт 80). Эти две опции нужны, чтобы перепроверить другим типом пакетов маршрут, на котором фильтруется UDP. Под обычной учётной записью обе опции оставили сообщение о нехватке прав и завершились с кодом выхода 1.

traceroute -I -n 127.0.0.1
You do not have enough privileges to use this traceroute method.
socket: Operation not permitted
traceroute -T -n 127.0.0.1
You 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_range
1	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 с фиксированным портом назначения 53example.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.

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

4️⃣ Хопы без ответа в traceroute

  • ↪️ Строки * * * и брандмауэры

Даже если можно сменить способ отправки, хоп без ответа остаётся [* * *]. По официальному руководству каждая звёздочка означает один пакет без ответа вовремя, а ожидание длится не более 5 секунд.

Увидев * * * на промежуточном хопе, легко решить, что маршрут обрывается в этом месте. На маршруте к example.com со способом по умолчанию только пятый хоп был * * *, но пакеты прошли этот хоп, миновали шестой и достигли цели на седьмом.

-U отправляет с фиксированным портом назначения 53. Когда мы отправили пакеты на тот же example.com с -U, маршрутизатор перед целью ответил на шестом хопе, затем * * * продолжалось с седьмого по десятый хоп, а адрес цели не появился.

traceroute -U -n -m 10 example.com
traceroute 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 & рекомендуемые материалы

Нет, код выхода этого не показывает. Он был 0 и когда способ по умолчанию достиг example.com на седьмом хопе, и когда -U не дошёл до цели к десятому хопу. Неверные опции, значения -m вне диапазона и сбои разрешения имён завершились с кодом 2, а -I и -T под обычной учётной записью — с кодом 1. Код выхода различает только ошибки выполнения, поэтому достигнута ли цель, проверяйте по тому, появился ли адрес цели в последней строке.

По документации Microsoft, tracert в Windows отправляет ICMP Echo Request, увеличивая TTL, а traceroute в Linux по умолчанию отправляет пакеты UDP (по официальному руководству). Чтобы проверить в Linux тем же способом ICMP, что и tracert, добавьте -I.

Если задать первый TTL через -f, вывод начнётся с этого хопа. По официальному руководству значение по умолчанию равно 1, а с -f 2 для 127.0.0.1 номера хопов начались с 2. Когда максимальный хоп меньше начального, как при -m 0, команда была отклонена сообщением [first hop out of range].

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

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

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

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