Icmp сообщение благодаря которому работает утилита tracert traceroute

Обновлено: 05.07.2024

Как работает Tracert.

Как работает Traсeroute.

Пример трассировки до того же ресурса:

Из результата вывода возникает вопрос, почему в этом случае трассировка не дошла до конца, и появились в выводе так называемые звездочки (* * *), а ответ как раз и заключается в различие (в данном примере). Очень часто, маршрутизаторы/хосты настраиваются таким образом, чтобы они не отвечали на подобного рода запросы, в таком случае и появляются звездочки. Это совершенно не значит, что имеются какие-то проблемы. Делается это для того, чтобы разгрузить оборудование. В данном примере 1 и 8 хоп не отвечает на UDP-датаграммы, однако если запустить утилу traceroute c ключиком -I, то трассировка дойдет, т.к. данный ключ заставляет посылаю уже ICMP-датаграммы.

Заключение.

Следует отметить, что звездочки могут возникать и при трассировке ICMP-пакетами, это также не значит, что существует проблема. Все зависит от того, как настроил оборудование администратор. Это его железо и настраивается оно с его потребностями. Данное явление вполне нормально. Также не следует паниковать, если конечный хост не пингуется. Вполне возможно, что ресурс просто от них закрылся.

Traceroute — это утилита, которая позволяет проследить маршрут следования данных до удалённого адресата в сетях TCP/IP. В Linux используется команда Traceroute, а в Windows — Tracert. При помощи этих команд можно увидеть путь пакета данных от вашего компьютера до целевого сервера или сайта.

Как работают Tracert и Traceroute

Этот принцип лежит в основе работы утилит Tracert и Traceroute, однако между ними есть отличия. Рассмотрим каждую утилиту отдельно.

Как использовать Traceroute и Tracert

Кириллические домены необходимо вводить в формате Punycode. Для перевода домена в Punycode воспользуйтесь сервисом.

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

В зависимости от того, какую операционную систему вы используете, реализация Traceroute может задействовать для своей работы разные протоколы: UDP, TCP, ICMP или GRE. Так, для платформы Windows маршрут следования пакетов исследуется посредством протокола ICMP, а на платформе Linux или в маршрутизаторах Cisco используется протокол UDP.

Traceroute и Tracert

1. Предназначение Traceroute и Tracert

Traceroute и Tracert

Для мониторинга пакетной передачи в GNU/Linux, Cisco и macOS используется команда Traceroute, а в Windows — Tracert. Пакеты данных, которые передаются в сеть, проходят не сразу от получателя к пользователю, а идут через узлы — ноды. Поскольку эти хосты не являются целевыми, их еще называют транзитными узлами.


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

Между утилитами Tracert и Traceroute есть небольшое отличие и в механизме трассировки: Tracert выполняет трассировку без указания порта у хоста назначения, а Traceroute наоборот — использует порт.

Traceroute и Tracert

2. Механизм работы трассировки сети

Каждый посылаемый пакет сопровождается параметром TTL Time to live — время жизни IP-пакетов . Это восьмиразрядное поле IP-заголовка, определяющее максимальное число шагов при трассировке. Благодаря этому параметру пакет не ходит по сети бесконечно в случае каких-то коллизий в маршрутизации подобные ошибки иногда случаются в реальной жизни , для самих пакетов подобная ситуация зацикливания исключена на уровне дизайна. Максимальное значение TTL=255.

Traceroute и Tracert

Большая задержка между хопами не обязательно свидетельствует о проблемах с аппаратным обеспечением. Это может объясняться и большой длиной магистрали по которой передается трафик. Между некоторыми маршрутизаторами расстояние может составлять в тысячи километров, например, если передача идет на другой континент.

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

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

Traceroute и Tracert

3. Формат командной строки

Общий формат вызова утилиты выглядит следующим образом:

Параметры командной строки:

  • -d — не использовать разрешение в имена узлов;
  • -h — максимальное число хопов;
  • -j — произвольный выбор маршрута по перечню узлов (для протокола IPv4);
  • -w — время ожидания отклика (миллисекунды);
  • -R — трассировка пути (для протокола IPv6);
  • -S — использовать указанный адрес источника (для протокола IPv6);
  • -4 — программное задействование протокола IPv4;
  • -6 — программное задействование протокола IPv6.

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

Рассмотрим пример трассировки. Для оценки доступности хоста, мы можем запустить утилиту для обмена пинг-пакетами и посмотреть какая будет задержка при соединении с удаленным хостом. При значении TTL = 1 нам ответит первый хост, при TTL = 2 мы получим отклик от второго сервера и так далее.

В целом, результат, который мы получим, будет кумулятивным по всем узлам маршрута и задержка в 200-300 миллисекунд нам ни о чем не скажет. Медлительность передачи данных может объясняться проблемами с каким-то одним маршрутизатором, определить который можно при помощи более подробной трассировки.

Traceroute и Tracert

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

5. Запуск в Linux

Чтобы запустить режим трассировки через ICMP в UNIX/Linux, следует использовать ключ -I в режиме суперпользователя root. В остальных случаях запуск трассировки можно выполнять от имени любого пользователя.

Наиболее важные аргументы для управления трассировкой в Linux:


  • -F — запретить фрагментацию;
  • -d — разрешить дебаггинг;
  • -f — указать первое значение TTL с которого начинается трассировка;
  • -g — назначить шлюз;
  • -i — пересылать пакет через указанный интерфейс;
  • -m — максимальное число узлов, через которые пройдет пакет;
  • -q — число пакетов трассировки три по умолчанию ;
  • -n — не идентифицировать доменные имена;
  • -p — использование порта;
  • -w — настройка таймаута при ожидании ответа от ноды;
  • -r — задействовать альтернативный роутер вместо указанного в таблице маршрутизации;
  • -z — указать минимальное значение времени между пакетами;
  • -U — задействовать UDP с увеличением номера порта;
  • -UL — задействовать UDPLITE;
  • -D — поддерживать DCCP;
  • --mtu — задать размер пакета.

6. Проблема с файрволами

Traceroute выполняет запросы не только по протоколу ICMP. Однако не имеющие достаточного опыта системные администраторы часто изменяют дефолтные настройки файервола включая разрешение протокола ICMP, после чего получают рабочий ping с нерабочей функцией Traceroute . Правильнее было бы дополнительно прописать разрешения в файерволе для транзита UDP-пакетов на порты с диапазоном от 33434 до 33534.

7. Альтернативные инструменты

tracepath — утилита, которая отслеживает путь передачи пакета от источника к пункту назначения, может использоваться как альтернатива traceroute для IPv6. Программа использует стандартный UDP-порт или какой-то случайный порт. Утилита похожа на traceroute , только не требует прав суперпользователя и не имеет дополнительных опций запуска.

Traceroute и Tracert

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

Сгенерированное изображение помогает наглядно увидеть как сгруппированы разнообразные интернет-ресурсы, насколько они физически далеко друг от друга отстоят. Диаграмма также может быть полезна при построении филиальной сети как дополнительный источник информации при выборе провайдера (аплинка).

Traceroute и Tracert

Заключение

Теперь, когда вы разобрались с принципами трассировки и изучили возможности Tracert и Traceroute, вы можете изучить свою сеть и выявить неисправности ее узлов. Механизм анализирования пути сетевых пакетов очень прост и может быть задействован на любой операционной системе, включая Android и iOS.

Для закрепления рекомендуем посмотреть это тематическое видео:

Что такое Tracert или Traceroute

Как работает команда Tracert или Traceroute


Как мы можем использовать команду TRACERT для обнаружения проблем

Мы должны помнить, что команда tracert очень полезна в очень больших локальных сетях, где пакет может выбирать разные пути для достижения своего конечного хоста. Благодаря этому мы можем знать, через какое оборудование проходит пакет данных, и, таким образом, повысить производительность локальной сети. Теперь мы увидим пример того, что происходит, когда команда Tracert отправляет пакет данных, который не может достичь своего места назначения:


Опции команды Tracert

Когда мы используем команду Tracert, в дополнение к записи команды Tracert и IP-адреса или имени сервера в консоли системных символов, мы можем записать ряд параметров для изменения или получения дополнительных данных, для этого мы должны ввести команду «Tracert Пробел, и следовал один из вариантов, которые мы укажем ниже. Примером может быть: Tracert -d 192.168.1.1

Посмотрим, какие у нас есть варианты:


Как мы уже видели, команда Tracert не только помогает нам узнать, по какому маршруту отправляется пакет данных в конечный узел назначения. Но это также помогает нам диагностировать производительность сети, если есть сбой в каком-либо внутреннем маршрутизаторе нашей локальной сети, или если есть проблема в каком-то внешнем маршрутизаторе к другому серверу. Без сомнения, команда tracert может прояснить многие сомнения и вопросы по поводу проблемы с сетью, которая у нас есть. Если у вас есть какие-либо вопросы, оставьте их нам в комментариях.

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