Команда трассировки в Linux

Обновлено: 25.06.2024

В Unix-подобных операционных системах команда traceroute печатает маршрут, по которому пакеты идут к сетевому узлу.

На этой странице рассматривается версия traceroute для Linux.

Описание

Интернет – это большое и сложное скопление сетевого оборудования, соединенного между собой шлюзами. Отследить маршрут, по которому следуют ваши пакеты (или найти шлюз, который отбрасывает ваши пакеты) может быть сложно. Команда traceroute использует поле «время жизни» IP-протокола и пытается получить ответ ICMP TIME_EXCEEDED от каждого шлюза на пути к какому-либо хосту.

Единственным обязательным параметром является имя хоста или IP-адрес получателя. Длина тестовой дейтаграммы по умолчанию составляет 40 байт, но ее можно увеличить, указав размер пакета (в байтах) после имени узла назначения.

traceroute пытается отследить маршрут, по которому IP-пакет должен следовать к какому-либо хосту в Интернете, запуская пробные пакеты с небольшим ttl (время жизни), а затем прослушивая ответ ICMP о "превышении времени" от шлюза. Он начинает свои зонды с ttl, равным единице, и увеличивает его на единицу, пока не получит ICMP «порт недоступен» (или сброс TCP), что означает, что мы добрались до «хоста» или достигли максимума (который по умолчанию равен 30 переходам) . При каждой настройке ttl отправляются три зонда (по умолчанию), и печатается строка, показывающая ttl, адрес шлюза и время приема-передачи для каждого зонда. За адресом может следовать дополнительная информация по запросу. Если ответы зонда приходят от разных шлюзов, будет напечатан адрес каждой отвечающей системы. Если нет ответа в течение 5,0 секунд (по умолчанию), для этого зонда печатается "*" (звездочка).

После времени поездки может быть напечатана дополнительная аннотация: !H, !N или !P (хост, сеть или протокол недоступны), !S (исходный маршрут не удалось), !F (необходима фрагментация), !X (коммуникация административно запрещена), !V (нарушение приоритета хоста), !C (действующее отключение приоритета) или ! (Код недостижимости ICMP). Если почти все проверки приводят к какой-либо недостижимости, traceroute прекращает работу и завершает работу.

Вы не хотите, чтобы узел назначения обрабатывал пробные пакеты UDP, поэтому для порта назначения установлено маловероятное значение (его можно изменить с помощью флага -p). Для трассировки ICMP или TCP такой проблемы нет (для TCP мы используем метод полуоткрытости, который предотвращает видимость наших зондов приложениями на целевом хосте).

В современной сетевой среде традиционные методы трассировки не всегда применимы из-за широкого использования брандмауэров. Такие брандмауэры фильтруют «маловероятные» порты UDP или даже эхо-сигналы ICMP. Для решения этой проблемы реализованы некоторые дополнительные методы трассировки (включая tcp); см. список доступных методов ниже. Такие методы пытаются использовать определенный протокол и порт источника/назначения, чтобы обойти брандмауэры (чтобы они воспринимались брандмауэрами как начало разрешенного типа сетевого сеанса).

Синтаксис

Параметры

--help Показать сообщение справки и выйти.
-4, -6 Явно принудительно использовать трассировку IPv4 или IPv6. По умолчанию программа попытается разрешить данное имя и автоматически выберет соответствующий протокол. Если при разрешении имени хоста возвращаются адреса IPv4 и IPv6, traceroute использует IPv4.
-I Использовать ICMP ECHO для запросов.
-T Использовать TCP SYN для зондов.
-d Включить отладку на уровне сокета (если ядро ​​поддерживает это).
-F Не фрагментировать пробные пакеты. (Для IPv4 он также устанавливает бит DF, который указывает промежуточным маршрутизаторам также не выполнять удаленную фрагментацию).

Изменяя размер тестового пакета с помощью параметра командной строки package_len, вы можете вручную получить информацию о MTU отдельных сетевых переходов. Опция --mtu (см. ниже) пытается сделать это автоматически.

Следующие параметры предназначены для расширенного использования (другие методы трассировки и т. д.):

< td>Использовать необработанный пакет указанного протокола для трассировки. Протокол по умолчанию — 253, согласно rfc3692.
--sport=port Выбирает исходный порт для использования. Подразумевает -N 1. Обычно исходные порты (если применимо) выбираются системой.
--fwmark=mark Установить метку брандмауэра для исходящих пакетов (начиная с ядра Linux 2.6.25).
-M метод Использовать указанный метод для операций трассировки. Традиционный метод udp по умолчанию называется default, а icmp (-I) и tcp (-T) имеют имена icmp и tcp соответственно. Параметры, специфичные для метода, могут быть переданы с помощью -O. У большинства методов есть свои простые сокращения (-I означает -M icmp и т.д.).
-O option Определяет некоторые опция, зависящая от метода. Несколько параметров разделяются запятыми (или используйте несколько спецификаций -O в командной строке). У каждого метода могут быть свои специфические опции, а у многих их может вообще не быть.Чтобы распечатать информацию о доступных параметрах, используйте -O help.
-U Использовать UDP для определенного порта назначения для трассировки (вместо увеличения порта для каждого каждый зонд). Порт по умолчанию — 53 (dns).
-UL Использовать UDPLITE для трассировки (порт по умолчанию — 53).
-D Использовать запросы DCCP для тестов.
-P протокол
--mtu Обнаружение MTU на трассируемом пути. Подразумевает -F -N 1. Новый mtu печатается один раз в виде F=NUM при первом пробном переходе, который требует достижения такого mtu. (На самом деле, соответствующее icmp-сообщение «фрагмент необходим» обычно отправляется предыдущим переходом). Обратите внимание, что некоторые маршрутизаторы могут кэшировать однажды увиденную информацию о фрагментации. Таким образом, вы можете получить окончательный mtu с более близкого прыжка. Попробуйте указать необычный tos через -t, это помогает на одну попытку (потом его можно и туда закэшировать). Для получения дополнительной информации см. параметр -F.
--back Вывести количество прыжков назад, если оно отличается от прямого направления. Это число угадывается в предположении, что удаленные переходы отправляют ответные пакеты с начальным значением ttl, установленным на 64, 128 или 255 (что является обычной практикой). Оно печатается как отрицательное значение в форме '-NUM' .

Список доступных методов

Как правило, конкретный метод traceroute может быть выбран с помощью "-M name", но у большинства методов есть простые переключатели командной строки (вы можете увидеть их после имени метода , если есть).

Проверочные пакеты представляют собой дейтаграммы udp с так называемыми "маловероятными" портами назначения. «Маловероятный» порт первого зонда — 33434, затем для каждого следующего зонда он увеличивается на единицу. Поскольку ожидается, что порты не будут использоваться, хост-получатель обычно возвращает «icmp unreach port» в качестве окончательного ответа. (Хотя никто не знает, что происходит, когда какое-то приложение прослушивает такие порты).

Этот метод может быть разрешен для непривилегированных пользователей, начиная с ядра 3.0 (только IPv4), которое поддерживает новые сокеты dgram icmp (или "ping"). Чтобы разрешить такие сокеты, системный администратор должен предоставить диапазон sysctl net/ipv4/ping_group_range, соответствующий любой группе пользователя.

Если в сетевом пути присутствуют какие-то фильтры, то, скорее всего, фильтруются любые "маловероятные" udp-порты (как для метода по умолчанию) или даже icmp-эхо (как для icmp), и вся трассировка остановится на таком брандмауэре. Чтобы обойти сетевой фильтр, мы должны использовать только разрешенные комбинации протокол/порт. Если мы трассируем для какого-то, скажем, почтового сервера, то, скорее всего, -T -p 25 может достучаться до него, даже когда -I не может.

В этом методе используется хорошо известная "техника полуоткрытости", которая не позволяет приложениям на целевом хосте вообще видеть наши зонды. Обычно отправляется TCP-синхронизация. Для неслушаемых портов получаем tcp reset, и все готово. Для активных прослушиваемых портов мы получаем tcp syn+ack, но отвечаем сбросом tcp (вместо ожидаемого tcp ack), таким образом удаленный сеанс tcp прерывается даже без уведомления приложения.

Метод TCP может быть одним из следующих:

Обратите внимание, что в отличие от метода tcp соответствующее приложение на целевом хосте всегда получает ваши зонды (со случайными данными), и большинство из них могут быть легко сбиты с толку. В большинстве случаев он не будет отвечать на ваши пакеты, поэтому вы никогда не увидите последний переход в трассировке. (Однако DNS-серверы обычно отвечают гневно).

Примечания

Для ускорения работы обычно посылаются несколько запросов одновременно. Недостатком является то, что это создает «шторм пакетов», особенно в направлении ответа. Маршрутизаторы могут ограничивать скорость ответов icmp, и некоторые ответы могут быть потеряны. Чтобы избежать этого, уменьшите количество одновременных запросов или даже установите его равным 1 (как в начальной реализации traceroute), т. е. -N 1

Конечный (целевой) хост может отказаться от некоторых одновременных запросов и даже ответить только на самые последние. Это может привести к дополнительным прыжкам, "выглядящим как просроченные" рядом с последним прыжком. traceroute использует интеллектуальный алгоритм для автоматического обнаружения такой ситуации, но если в вашем случае он не может помочь, используйте -N 1.

Для еще большей стабильности вы можете замедлить работу программы с помощью опции -z. Например, используйте -z 0,5 для полусекундной паузы между проверками.

Если некоторые переходы ничего не сообщают для каждого метода, последний шанс получить что-либо — это использовать команду ping с параметром -R (IPv4 и только для ближайших 8 переходов).

Примеры

Связанные команды

netstat — выводит информацию о сетевых подключениях, таблицах маршрутизации, статистике интерфейсов, маскарадных подключениях и членстве в многоадресной рассылке.
ping — отправляет пакеты ICMP ECHO_REQUEST на сетевые узлы.

traceroute — полное руководство, синтаксис, примеры и многое другое!

С помощью Ping вы можете узнать, есть ли у вас подключение или нет.

Простой двоичный файл, да или нет.

Но traceroute выводит сетевую аналитику ОС на более высокий уровень.

Traceroute не только сообщит, есть ли у вас подключение, но и укажет, где именно возникла проблема и почему это происходит.

В этой статье мы обсудим все, что вы хотите знать о трассировке.

  1. Что такое трассировка?
  2. Как работает трассировка?
  3. В чем разница между Tracert и Traceroute?
  4. Запуск TraceRoute в Windows, Linux или macOS.
  5. Ping vs Traceroute: подробное объяснение Traceroute.
  6. Синтаксис и параметры команды traceroute (для Windows).
  7. Трассировка IPv4 и IPv6.

Что такое трассировка?

Traceroute – это команда мониторинга, обычно используемая сетевыми и системными администраторами в своей повседневной работе.

Этот базовый инструмент диагностики сети имеет три основные цели, которые дают вам точное и полное представление о сетевой проблеме.

С Traceroute можно?

  1. Получить полный путь, по которому пакет достигает пункта назначения.
  2. Узнайте имена и идентификаторы маршрутизаторов и устройств на пути.
  3. Определите время, которое потребовалось для отправки и получения данных на каждое устройство на пути.

Traceroute предоставляет вам полную информацию о пути, по которому ваши данные будут доставлены к месту назначения, без фактической отправки данных (кроме ICMP).

Например, если источник пути (ваш компьютер) находится в Бостоне, штат Массачусетс, а пункт назначения — в Сан-Хосе, штат Калифорния (сервер), Traceroute определит полный путь, каждый переход (компьютеры, маршрутизаторы или любые устройства, которые находятся между источником и получателем) на пути, а также время, необходимое для перехода и возврата.


Как работает трассировка?

Каждый IP-пакет, отправляемый через Интернет, имеет поле, известное как время жизни (TTL). Но это поле явно не связано со временем, измеряемым количеством переходов. Вместо этого это максимальное количество прыжков, которое пакет может пройти через Интернет, прежде чем он будет отброшен.

Поле TTL в IP-пакете очень важно, потому что, если бы его не было, пакет продолжал бы передаваться от одного маршрутизатора к другому в бесконечном цикле в поисках пункта назначения.

Значение TTL помогает при отравлении маршрутов и, что наиболее важно, помогает протоколам Distance Vector избежать петель маршрутизации.

Traceroute зависит от TTL для измерения расстояния между источником и пунктом назначения и поиска промежуточных звеньев между ними.

TTL

При трассировке источник переопределяет значение TTL каждый раз, когда получает ответ, и отправляет пакет с TTL= +1, пока не достигнет пункта назначения.

Когда пакет достигает своего максимального TTL, последний переход в очереди отправит обратно источнику пакет «ICMP TTL Exceeded».

Это сообщение — то, что ищет traceroute. «ICMP TTL Exceeded» содержит ценную информацию, например время, которое потребовалось для достижения этого конкретного прыжка, и имя отвечающего сервера.

ICMP TTL Exceeded

В чем разница между Tracert и Traceroute?

Tracert и Traceroute имеют разный синтаксис, но обе эти команды делают одно и то же.

Их отличает операционная система, в которой они выполняются: Tracert для Windows и Traceroute для Linux.

Другое дело в том, как каждая команда выполняется в фоновом режиме.

На переднем плане вы видите одинаковую информацию для обоих случаев. В результате запуска tracert или traceroute вы увидите один и тот же маршрут и транзитные задержки пакетов по всему пути.

Эта команда доступна в Unix, Linux и MacOS как «traceroute», а в Windows — как «tracert».

Запуск маршрута трассировки в Windows, Linux или MacOS.

Несмотря на то, что функциональность одинакова, синтаксис и вывод отличаются. Чтобы запустить команду traceroute в Windows, Linux или macOS, вам необходимо следовать приведенным ниже инструкциям:

Для Windows.

Команду traceroute можно запустить практически на всех платформах Windows, включая XP, Vista, Server, Windows 7, 8, 10 и т. д.

  1. Для начала откройте «Командную строку». Перейдите в «Пуск», введите «CMD» и нажмите клавишу ввода.
  2. Используйте команду «tracert».Введите «tracert» вместе с целью, чтобы проследить маршрут к месту назначения.

Для Linux

Чтобы выполнить трассировку в любой ОС Linux, такой как Debian, Red Hat, Ubuntu и т. д.

  1. Для начала откройте Терминал.
    Нажмите Ctrl + Alt + T или введите «терминал» в строке поиска.
  2. Установите трассировку.
    Если у вас еще не установлен traceroute, вам может потребоваться его установить. Например, в Ubuntu команда для установки traceroute выглядит так: «sudo apt-get install traceroute».
  3. Используйте команду traceroute.
    Введите «traceroute» вместе с именем хоста или IP-адресом.

Для Mac OSX

Вы также можете запустить команду traceroute в macOS.

  1. Откройте терминал.
    Во-первых, вам нужно открыть терминал. Это можно сделать, перейдя в «Приложения», затем «Утилиты» и дважды щелкнув «Терминал».
  2. Введите команду traceroute.
    Используйте команду traceroute и введите цель.

Ping vs Traceroute: подробное объяснение трассировки

Во время теста без Traceroute, такого как Ping, TTL будет начинаться с любого значения от 1 до 255, которое обычно определяется по-разному в зависимости от операционной системы.

Допустим, вы пингуете IP-адрес 8.8.8.8, а значение TTL по умолчанию равно 51 прыжку.

ping

Ваш пакет будет начинаться с «лимита переходов 51», чтобы избежать дальнейшего зацикливания, и он пройдет максимум 51 переход, чтобы достичь пункта назначения, прежде чем он будет отброшен.

Каждый маршрутизатор, который находится между источником и получателем, будет уменьшать TTL перед отправкой на следующий маршрутизатор.

Это уменьшение TTL на -1 будет происходить на всем пути до тех пор, пока пакет не достигнет места назначения или не будет достигнуто предельное значение TTL, а на последнем узле будет отправлено сообщение ICMP TTL Exceeded.

Чтобы наглядно представить пример Ping…

Давайте отправим пинг с ограниченным значением TTL до 10.

Этот компьютер не сможет достичь места назначения, так как существует более десяти прыжков к серверу 8.8.8.8.

Итак, с помощью этого Ping мы получаем некоторую ценную информацию от перехода номер 10, например IP-адрес 72.14.211.154 и дополнительные данные.

bash

Пример трассировки

Traceroute начинает свой путь к месту назначения по-другому. Он начинается с TTL=1 (вместо 51 по умолчанию) и добавляет один, пока не достигнет конечного пункта назначения.

При запуске теста Traceroute следующий переход, который получает пакет с TTL=1, который в моем случае является шлюзом, будет выполнять TTL-1 по протоколу, что приведет к TTL=0. Это означает, что дальнейшей пересылки не будет, и пакет будет отброшен.

Следующий переход (мой шлюз) уведомит источник о превышении срока жизни сообщением «ICMP TTL превышен», содержащим ценную информацию, такую ​​как IP-адрес, имя хоста и задержку.

Как упоминалось в предыдущем разделе, основная задача команды Traceroute – прибавить +1 к TTL, пока пакет не достигнет конечного пункта назначения.

Итак, вернемся к нашему примеру, давайте проследим путь 8.8.8.8.

traceroute 8.8.8.8

Пример Traceroute показывает, что пакету потребовалось 13 переходов от источника (192.168.0.1) до места назначения (8.8.8.8) вместе со всей информацией о промежуточных переходах.

На том же снимке экрана видно, что номер перехода 10 — это «72.14.219.20», тот же IP-адрес, который мы получили от команды «ping 8.8.8.8 -10».

Синтаксис и параметры команды traceroute (для Windows)

Команда tracert (для Windows) доступна в командной строке во всех операционных системах Windows, включая Windows 10, Windows 8, Windows 7, Windows XP, Windows Vista, а также в более ранних версиях Windows.

Синтаксис команды tracert приведен ниже:

tracert в справке Windows меню

Ниже приведено краткое описание каждой опции tracert в Windows…

< tr>
Опция Описание
-d Эта опция tracert не позволяет tracert преобразовывать IP-адреса в имена хостов, что часто приводит к более быстрым результатам.
-h MaxHops Эта опция указывает максимальное количество переходов при поиске цели. Если вы не укажете MaxHops, а цель не будет найдена по максимальному количеству переходов по умолчанию (30 для Windows), tracert перестанет искать.
-w TimeOut Используя эту опцию tracert, вы можете указать время в миллисекундах, через которое каждый ответ до истечения времени ожидания.
-4 Это заставляет tracert использовать только IPv4.
-6 Заставляет tracert использовать только IPv6.
Цель Обязательный параметр. Он используется для указания пункта назначения, либо IP-адреса, либо имени хоста.
/? Используйте help переключитесь с помощью команды tracert, чтобы отобразить подробную справку о нескольких параметрах команды.

Чтение вывода «tracert».

Теперь, когда мы знаем, как работает traceroute и его синтаксис, давайте узнаем, как читать вывод.

tracert -m option

Если вы заметили, что вывод трассировки Windows отличается от выводов Linux или macOS. Есть пять столбцов, первый — количество переходов, следующие три столбца — три ICMP (пинга) с задержкой и, наконец, IP-адрес или имя хоста.

Еще один вариант, который мы протестировали, — тайм-аут (-w 200). Это максимальное время ожидания в миллисекундах для каждого пакета, прежде чем он будет считаться потерянным. Чтобы прочитать столбцы задержки, вы можете начать с 1 мс, что является переходом к шлюзу.

Самая большая задержка, которую мы здесь видим, была на узле 5, который занял 209 мс (от источника 1 до узла 5). Другими словами, переход с 4-го на 5-й переход занял (209–8) 201 мс.

tracert delay

Синтаксис и параметры команды traceroute (для Linux)

Синтаксис команды traceroute для Linux можно записать так:

ubuntu linux команда traceroute

Ниже приведено краткое описание каждого параметра трассировки в системах Linux.

< tr>
Опция Описание
–help Используется для отображения справочного сообщения и выхода.
-4, -6 Явно активировать трассировку IPv4 или IPv6.
-f Устанавливает начальный TTL для первого исходящего пакета.
-F Устанавливает бит «не фрагментировать».
-d Включает отладку.
-g Указывает свободный исходный маршрутный шлюз (максимум 8).
-i Установить сетевой интерфейс для получения исходного IP-адреса.
-I Использовать ICMP ECHO.
-m Установите максимальное значение TTL, используемое в исходящих пакетах. По умолчанию установлено значение 30 переходов.
-n Печать адресов переходов в числовом виде.
-p Для трассировки UDP указывает базовый порт назначения. Эту опцию можно использовать для поиска незакрытых портов.
-r Избегайте обычных таблиц маршрутизации и отправляйте непосредственно на хост в определенной сети.
-s Выбирает альтернативный исходный адрес. Обратите внимание, что вы должны выбрать адрес одного из интерфейсов.
-t Тип службы. Значение должно быть десятичным целым числом в диапазоне от 0 до 255. Вы можете использовать его, чтобы проверить, приводят ли разные типы обслуживания к разным путям.
-v Подробный вывод.
-w Устанавливает время ожидания ответа. По умолчанию 5 секунд.
-z Установите время в миллисекундах для паузы между тестами.< /td>

Трассировка IPv4 и IPv6

По умолчанию tracert и traceroute проверяют путь только для адресов IPv4. Но это не значит, что вы не можете протестировать IPv6. Все современные ОС поставляются с полной поддержкой адресов IPv6, включая все команды, такие как ping, traceroute, netstat и т. д., для поддержки IPv6.

Но IPv4 является предпочтительным методом адресации, поэтому у вас могут не быть маршрутов IPv6 в вашем маршрутизаторе, готовых отправить пакет ICMP к месту назначения IPv4. Если в вашей ОС и маршрутизаторе есть поддержка маршрутов IPv6, вы можете выполнить тест.

Чтобы проверить маршрут для адреса IPv6, используйте «tracert6» или «traceroute6» для ОС Linux. Команда tracert6 отправляет последовательность протокола пользовательских дейтаграмм (UDP) на узел назначения.В то время как в случае с Windows вы можете отследить IPv6-адреса, используя «tracert -6».

  • Для macOS и Linux: traceroute6 2a00:1450:400a:804::2004
  • Для Windows: tracert -6 2a00:1450:400a:804::2004

traceroute 6

Обзор

Несмотря на то, что Traceroute недооценен, он является одним из лучших инструментов сетевой аналитики для ОС. Он не только способен проверять подключение, как это делает Ping, но также находит все переходы между источником и получателем, включая имена и время задержки.

И все это делается с помощью того же протокола, который использует Ping, ICMP. Кроме того, путем изменения поля в IP-пакете TTL.

Некоторые разработчики программного обеспечения даже создают интерфейсную версию traceroute, включающую в себя такие элементы, как графический интерфейс, географические карты, графики и т. д. Все для того, чтобы сделать простой инструмент еще более мощным.

Но если вы понимаете основы и некоторые приемы, показанные в этой статье, вам, вероятно, не понадобится сложное программное обеспечение.

Traceroute доступен во всех операционных системах, от Linux, Windows, UNIX до macOS.

Базовая функциональность одинакова, но помните, что синтаксис команд и выходные данные немного различаются.

Traceroute — важный инструмент диагностики сети. Вместе с другими командами Linux, такими как ping, ip и netstat (или более новая альтернатива ss), Traceroute определяет путь, по которому проходят пакеты от источника к месту назначения. Этот инструмент универсален для Linux, Windows и macOS.

В этой статье рассказывается о командах traceroute или tracert, о том, как они работают, а также о том, как запускать и читать traceroute в Linux, Windows и macOS.

Как запустить трассировку в Linux, Windows и macOS

  • Доступ к командной строке/терминалу.
  • Сетевое подключение.
  • Веб-сайт или IP-адрес для отслеживания (необязательно, указано в примерах).

Что такое трассировка?

traceroute — это команда, используемая при устранении неполадок в сети для сопоставления путей, по которым пакеты проходят через сеть. Инструмент помогает в обнаружении возможных маршрутов информации от источника к месту назначения. Кроме того, эта команда также помогает рассчитать время перехода между точками.

Применительно к устранению неполадок в сети traceroute помогает определить, где замедляется трафик между источником и пунктом назначения.

Как работает трассировка?

Протокол отправляет пакеты ICMP (Internet Control Message Protocol) каждому маршрутизатору, осуществляющему передачу данных между источником и получателем. Когда вы запускаете traceroute, вывод показывает:

  • IP-адрес маршрутизатора, который успешно получил пакет.
  • Задержка перемещения или количество времени, которое потребовалось, чтобы получить ответ для каждой из трех проверок.

Traceroute действует как серия команд ping. Пока команда ping запрашивает ответ от пункта назначения, traceroute также собирает промежуточную информацию.

Для сбора информации, доступной между источником и получателем, трассировка снижает значение TTL (время жизни) пакета до минимума (1). Когда маршрутизатор получает информацию, он уменьшает значение TTL до 0, указывая, что он должен отправить информацию обратно источнику. Источник собирает информацию о промежуточном маршрутизаторе, сбрасывает значение TTL до 1 и увеличивает его.

Схема трассировки путь итераций

Таким образом, пакет достигает следующего маршрутизатора в сети. Итеративный процесс повторяется до тех пор, пока последний пакет не достигнет IP-адреса назначения. Затем traceroute распознает IP-адрес назначения и выводит всю собранную промежуточную информацию.

Команда по умолчанию отправляет три запроса для каждого значения TTL и распечатывает время приема-передачи для каждого пакета.

Как запустить трассировку?

Traceroute доступен на большинстве современных компьютеров. Программа представляет собой инструмент командной строки с различными параметрами и синтаксисом в зависимости от операционной системы.

По умолчанию трассировка составляет 30 переходов для размера пакета 60 байтов для IPv4 и 80 байтов для IPv6.

Примечание. Узнайте о разнице между IPv4 и IPv6.

Запуск трассировки в Linux

В Ubuntu команда traceroute по умолчанию недоступна. Установите инструмент с помощью диспетчера пакетов apt.

<р>1. Откройте терминал (CTLR+ALT+T) и установите traceroute с помощью:

<р>2. В терминале запустите traceroute с помощью:

Вывод команды traceroute в Linux

В качестве альтернативы используйте имя хоста:

Примечание. Для Linux доступна аналогичная команда под названием tracepath. Основное различие между ними заключается в том, что traceroute предлагает больше опций, некоторые из которых требуют привилегий root. С другой стороны, tracepath доступен для всех пользователей и выводит меньше информации.

Дополнительные параметры Traceroute в Linux

По умолчанию traceroute отправляет UDP-пакеты. Добавьте параметр -I для тестовых пакетов ICMP:

Включите параметр -n, чтобы скрыть имена устройств для более чистого вывода:

Вывод traceroute -In

По умолчанию количество отправляемых пакетов равно трем. Измените число с помощью параметра -q, за которым следует количество пакетов:

 Вывод traceroute -Inq

Уменьшение количества пакетов до одного увеличивает скорость трассировки.

Все дополнительные параметры traceroute см. на странице руководства в терминале с помощью команды man:

Руководство содержит информацию обо всех доступных параметрах команды и способах их применения к команде.

Запуск трассировки в Windows

Traceroute доступен для Windows с более коротким именем tracert . Чтобы запустить traceroute в Windows, выполните следующие действия:

<р>1. Нажмите клавишу Windows и введите CMD.

<р>2. Нажмите Enter и откройте командную строку.

<р>3. Наконец, запустите traceroute с помощью:

Вывод tracert на Windows

Выходные данные выводят Трассировка завершена на консоль после завершения трассировки.

Запуск трассировки в macOS

Чтобы запустить traceroute в macOS с помощью графического интерфейса, выполните следующие действия:

<р>1. Нажмите на значок Spotlight (увеличительное стекло).

<р>2. Затем найдите Network Utility в поле поиска.

<р>3. Дважды щелкните Network Utility в результатах поиска.

<р>4. Найдите и щелкните вкладку Traceroute.

Traceroute на macOS с использованием графического интерфейса

<р>5. Наконец, введите IP-адрес или хост назначения и нажмите «Трассировать». Текстовое поле под кнопкой Trace выводит результаты Traceroute.

Как прочитать трассировку?

При запуске traceroute в выходных данных отображается путь, по которому пакеты перемещаются к точке назначения. Распечатанный результат делится на три основных столбца:

Столбцы трассировки разделены

<р>1. Каждая строка указывает переход маршрутизатора. В первом столбце указан номер прыжка.

<р>2. Следующие три столбца показывают время приема-передачи (RTT) для трех пакетов:

  • Для близлежащих сетей эти значения обычно меньше 100 мс.
  • Для удаленных сетей в других странах типичные значения RTT достигают 300 мс.

Три символа звездочки (* * *) вместо цифр, за которыми следует сообщение "Время ожидания запроса истекло", могут означать:

  • Маршрутизатор не работает.
  • Маршрутизатор настроен не возвращать результаты трассировки.
  • На маршрутизаторе включен брандмауэр.
  • Тайм-аут для одного из предыдущих маршрутизаторов.
<р>3. В последнем столбце отображается IP-адрес назначения и, по возможности, разрешенное доменное имя.

Выходные строки traceroute сгруппированы в пять блоков:

Строки трассировки разделены

<р>1. Локальная сеть.

<р>2. Интернет-провайдер (ISP) для локальной сети.

<р>4. Сеть узла назначения.

<р>5. Адрес назначения.

Примечание. Результаты у всех разные. Однако общие категории по-прежнему применимы к любой ситуации. Выясните каждый адрес, просмотрев обратный DNS.

Добавьте > .txt в конце команды traceroute или tracert, чтобы сохранить результаты в текстовый файл для дальнейшего использования и анализа. Например, в Linux и macOS:

Пользователи Windows могут выполнить те же действия:

В обоих случаях выходные данные ничего не выводят и возвращаются к обычному вводу командной строки. Файл сохраняется в место, где запускается команда.

К концу этого руководства вы узнаете, как использовать и читать выходные данные команды traceroute или tracert. Traceroute — это важный инструмент для устранения неполадок в сети и выявления узких мест в соединении.

Если вы хотите узнать больше о traceroute по сравнению с другими терминальными программами, прочитайте нашу статью о tracepath и traceroute.

Дополнительные сетевые команды см. в нашем руководстве по сетевому сканеру nmap. Это полезный инструмент для поиска открытых портов.

Traceroute — это инструмент в Linux, который позволяет исследовать маршруты сетевых пакетов. Это может помочь вам определить фактор, ограничивающий перемещение сетевых пакетов. Traceroute также полезен для устранения неполадок с медленными сетевыми соединениями. В этом руководстве показано, как запустить traceroute в Linux.

О трассировке

Traceroute работает, отправляя пакеты данных на целевой компьютер, сервер или веб-сайт и записывая все промежуточные шаги, через которые проходят пакеты. Результатом команды traceroute будут IP-адреса и доменные имена, через которые проходят пакеты. Эти записи также показывают, сколько времени требуется пакетам для достижения каждого пункта назначения. Это может объяснить, почему некоторые веб-сайты могут загружаться дольше, чем другие, поскольку количество переходов трафика может различаться.

Traceroute также полезен для сопоставления локальных сетей. При запуске инструмента можно получить представление о топологии и соединениях локальной сети.

Обратите внимание, что при использовании traceroute некоторые устройства могут плохо взаимодействовать. Это может быть связано с прослушиванием маршрутизаторов, ограничением скорости сообщений ICMP интернет-провайдерами, настройками устройств на запрет отправки пакетов ICMP (для предотвращения распределенных DoS-атак) и т. д. Некоторые сети также настроены на блокировку запросов traceroute.

Установка трассировки

Traceroute — это мощный инструмент, доступный для всех дистрибутивов Linux. Ниже приведен краткий список команд для установки traceroute в различных дистрибутивах.

Для Debian/Ubuntu и производных:


Для Fedora и ее производных:

Для openSUSE, SUSE Linux и производных:

Для Arch Linux и производных:

Использование трассировки

В следующих разделах показано, как использовать traceroute в вашей системе Linux.

Основное использование

Основной метод использования traceroute довольно прост. Все, что требуется traceroute, — это место назначения для выполнения зондирования. Пунктом назначения может быть либо домен, либо IP-адрес.



Если сеть настроена на блокировку сигнала traceroute, эта проверка будет отмечена звездочками.

IPv4 или IPv6

По умолчанию traceroute будет использовать Интернет-протокол по умолчанию, с которым настроена ваша система. Чтобы вручную установить версию IP, выполните описанную ниже процедуру.

Чтобы указать traceroute использовать IPv4, используйте флаг "-4":


Чтобы указать traceroute использовать IPv6, используйте флаг "-6":

Тестирование портов

Если необходимо протестировать конкретный порт, порт можно указать с помощью флага «-p». Для трассировки UDP traceroute будет начинаться с заданного значения и увеличиваться с каждым зондом. Для трассировки ICMP это значение будет определять начальное значение последовательности ICMP. Для TCP и других это будет постоянный порт назначения для подключения.


Скрытие имен устройств

В некоторых случаях имена устройств в выводе могут сделать вывод беспорядочным. Для большей наглядности вы можете скрыть имена устройств из вывода. Для этого используйте флаг «-n» (без сопоставления):


Ограничение времени ожидания трассировки

По умолчанию traceroute ожидает ответа в течение 5 секунд. В определенных ситуациях вы можете захотеть изменить время ожидания, чтобы оно было больше или меньше 5 секунд. Для этого используйте флаг «-w». Обратите внимание, что значение времени является числом с плавающей запятой.


Методы зондирования

Существует несколько способов проверки удаленного адреса. Чтобы указать traceroute для использования эха ICMP, используйте флаг «-I»:


Чтобы использовать TCP SYN для проверки, используйте флаг "-T":

Установка максимального количества переходов

По умолчанию traceroute отслеживает 30 переходов.Traceroute предлагает возможность вручную задать количество переходов для отслеживания.

Используйте флаг "-m" с количеством прыжков:


Указание интерфейса

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


Определение количества запросов для перехода

Чтобы определить количество запросов для прыжка, укажите это число с помощью флага "-q":


Маршрутизация пакетов через шлюз

Чтобы направить пакеты через определенный шлюз, используйте параметр "-g", а затем шлюз:


Справочная страница трассировки

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


Чтобы получить более полное и подробное руководство по всем доступным параметрам traceroute, посетите справочную страницу с помощью следующей команды:


Заключение

Traceroute – это мощный инструмент для диагностики сети, который поддерживает множество параметров. Освоение traceroute может потребовать некоторого времени и практики. При использовании этого инструмента вы часто будете использовать методы, описанные в этой статье.

Есть и другие инструменты, такие как traceroute. Если вы хотите работать с аналогичным инструментом в графическом интерфейсе, попробуйте Zenmap для сканирования сети. Zenmap — это интерфейс с графическим интерфейсом для другого популярного сетевого сканера под названием Nmap.

Об авторе

Сидратул Мунтаха

Студент CSE. Я люблю Linux и играю с технологиями и гаджетами. Я использую как Ubuntu, так и Linux Mint.

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