Для большинства поставщиков управляемых услуг (MSP), системных администраторов и технических специалистов, команды Traceroute и Tracert являются первыми сигналами для устранения неполадок, связанных с задержкой сети или проблемами с подключением. Но что это?
Traceroute — это утилита, которая позволяет проследить маршрут следования данных до удалённого адресата в сетях TCP/IP. В Linux используется команда Traceroute, а в Windows — Tracert. При помощи этих команд можно увидеть путь пакета данных от вашего компьютера до целевого сервера или сайта.
- Общая информация
- Что такое Traceroute и Tracert
- Примеры использования команды ROUTE
- Вам также может быть интересно
- Как выполнить Traceroute по порту
- Как использовать Traceroute и Tracert?
- Расширенная диагностика с помощью программы MTR
- Диагностика разрешения имен (nslookup, dig)
- Диагностика с помощью команд
- Диагностика сетевой связности (ping, arp, traceroute)
- Всё о трассировке
- Как использовать Traceroute и Tracert
- Разница между Traceroute и Tracert
- Как работает Traceroute и Tracert?
- Как работают Tracert и Traceroute
- Как установить Traceroute на Linux
- Как использовать Traceroute по ICMP
- Как работает трассировка?
- Принцип работы системных утилит tracert и traceroute
- Как читать результаты Tracert
- Заключение
Общая информация
Трассировка – это проверка доставки пакетов данных по маршруту до удаленного сервера. Такой способ диагностики позволяет выявить проблемный участок сети, где возникают потери сетевых пакетов. Делается это всегда в тот момент, когда наблюдаются проблемы.
Трассировку можно выполнять с помощью команд traceroute (для Linux) и tracert (для Windows). Более информативный способ – посредством специального программного обеспечения, например, MTR.
При наличии проблем в доступности сервера или сайта трассировку нужно выполнять именно с проблемного устройства – онлайн сервисы в этом случае не подойдут.
Одна из важнейших подсистем, отвечающая за связь любого сервера с внешним миром — сетевая. Через сетевые интерфейсы поступают запросы от удаленных систем и через эти же интерфейсы направляются ответы, что позволяет налаживать коммуникацию и предоставлять/получать сервисы. В связи с этим особенно важно уметь производить диагностику и мониторинг сети хотя бы на базовом уровне, чтобы выявлять проблемы и вносить корректировки в конфигурацию в случае необходимости.
Для операционных систем семейства Linux написано множество утилит, помогающих в диагностике и мониторинге. Познакомимся с наиболее часто используемыми из них.
Что такое Traceroute и Tracert
Traceroute или Tracert – это утилита, служащая для диагностики сети. Она отслеживает пути, по которым пакеты данных проходят от источника к хосту назначения, что позволяет администраторам оперативно решить проблемы с подключением.
В Windows эта команда называется Tracert, а в Linux и MacOS – Traceroute.
Traceroute и Tracert в основном работают одинаково – они предоставляют информацию о пути пакета данных из одной точки сети на конкретный IP-сервер. Когда данные передаются между двумя точками, они должны проходить через несколько устройств (например, маршрутизаторы).
В то время как команда Ping может сообщить, есть ли проблема, Traceroute поможет вам точно определить, где именно она образовалась.
Представьте, что вы посещаете веб-сайт, и его страницы долго загружаются. В этом случае вы можете использовать Traceroute, чтобы определить, где происходят самые длительные задержки, чтобы добраться до источника самого сбоя.
Формат командной строки:
Подсказку по параметрам командной строки можно получить используя встроенную справку ( route /? ):
-f — Очистка таблиц маршрутов от записей всех шлюзов. При указании одной из команд таблицы очищаются до выполнения команды.
-p — При использовании с командой ADD задает сохранение маршрута при перезагрузке системы. По умолчанию маршруты не сохраняются при перезагрузке. Пропускается для остальных команд,
изменяющих соответствующие постоянные маршруты. Этот параметр не поддерживается в Windows 95.
-4 — Обязательное использование протокола IPv4.
-6 — Обязательное использование протокола IPv6.
command — Одна из следующих команд:
— PRINT — Печать маршрута
— ADD — Добавление маршрута
— DELETE — Удаление маршрута
— CHANGE — Изменение существующего маршрута
destination — Адресуемый узел.
MASK — Указывает, что следующий параметр интерпретируется как маска сети.
netmask — Значение маски подсети для записи данного маршрута. Если этот параметр не задан, по умолчанию используется значение 255.255.255.255.
gateway — Шлюз.
interface — Номер интерфейса для указанного маршрута.
METRIC — Определение метрики, т.е. цены для адресуемого узла. Чем ниже значение метрики, тем выше приоритет узла при построении маршрута.
Поиск всех символических имен узлов проводится в файле сетевой базы данных
NETWORKS. Поиск символических имен шлюзов проводится в файле базы данных имен
узлов HOSTS.
Для команд PRINT и DELETE можно указать узел и шлюз с помощью подстановочных
знаков или опустить параметр «шлюз».
Если адресуемый узел содержит подстановочные знаки * или ?, он используется
в качестве шаблона, и печатаются только соответствующие ему маршруты. Знак ‘*’
соответствует любой строке, а ‘?’ — одному знаку.
Примеры: 157.*.1, 157.*, 127.*, *224*.
Соответствие шаблону поддерживает только команда PRINT.
Недопустимое значение MASK вызывает ошибку, если (УЗЕЛ & МАСКА) != УЗЕЛ.
Например:
route ADD 157.0.0.0 MASK 155.0.0.0 157.55.80.1 IF 1 — Добавление маршрута завершится ошибкой, поскольку указан недопустимый параметр маски. (Узел & Маска) != Узел.
route PRINT — отобразить таблицу маршрутов
route PRINT -4 — отобразить таблицу маршрутов только для IPv4
route PRINT -6 — отобразить таблицу маршрутов только для IPv6
route PRINT 157* — отобразить таблицу маршрутов только для узлов, начинающихся со 157
Если сетевой интерфейс (IF) не задан, то производится попытка найти лучший интерфейс для указанного шлюза.
route ADD 3ffe::/32 3ffe::1 — добавить новый маршрут для узла с IPv6
route CHANGE 157.0.0.0 MASK 255.0.0.0 157.55.80.5 METRIC 2 IF 2 — изменить существующий маршрут для узла IPv4
Параметр CHANGE используется только для изменения шлюза или метрики.
route DELETE 157.0.0.0 — удалить маршрут для IPv4.
route DELETE 3ffe::/32 — удалить маршрут для IPV6
Примеры использования команды ROUTE
route print — отобразить текущую таблицу маршрутов.
Пример отображаемой таблицы:
IPv4 таблица маршрута
===========================================================================
===========================================================================
IPv6 таблица маршрута
===========================================================================
Активные маршруты:
===========================================================================
Постоянные маршруты:
Отсутствует
Список интерфейсов — отображаются идентификаторы ( ID ), физические ( MAC ) адреса и названия сетевых адаптеров. В примере:
24 — идентификатор интерфейса
00 50 ba 5d 0c c4 — MAC-адрес сетевого адаптера
D-Link DFE-538TX 10/100 адаптер — название сетевого адаптера.
Маска сети ( Netmask ) — маска сети.
В Windows Vista / Windows 7 / 8 и более поздних версиях, для адресов, достижимых локально, в данной колонке отображается On-link.
Другими словами, значение On-link в колонке «Шлюз» означает, что шлюз не используется, адрес назначения достижим напрямую, без
маршрутизации.
Метрика ( metric ) — значение метрики (1-9999). Метрика представляет собой числовое значение, позволяющее оптимизировать доставку пакета
получателю, если конечная точка маршрута может быть достижима по нескольким разным маршрутам. Чем меньше значение метрики, тем выше приоритет маршрута.
route print 192.* — отобразить таблицу маршрутов только для адресов, начинающихся с 192.
route add 0.0.0.0 mask 0.0.0.0 192.168.1.1 — установить в качестве шлюза по умолчанию (основного шлюза) адрес 192.168.1.1
route -p add 10.0.0.0 mask 255.0.0.0 10.0.0.1 — добавить маршрут для подсети 10.0.0.0/255.0.0.0 и запомнить его в реестре . Это постоянный статический маршрут.
Если маршрут добавлен без использования параметра -p то он сохраняется только до перезагрузки системы (до перезапуска сетевого системного программного обеспечения). Если же, при добавлении маршрута искользовался данный параметр, то информация о маршруте записывается в реестр Windows (раздел HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes ) и будет использоваться постоянно при активации сетевых интерфейсов.
route delete 10.0.0.0 mask 255.0.0.0 — удалить маршрут для подсети 10.0.0.0/255.0.0.0 .
route delete 10.10.10.10 — удалить маршрут созданный предыдущей командой
route change 10.0.0.0 mask 255.0.0.0 10.10.10.1 — изменить адрес шлюза для существующего маршрута к сети 10.0.0.0/255.0.0.0 на значение 10.10.10.1 Допускается
использование данной команды только для изменения адреса шлюза и метрики.
route -f — очистить таблицу маршрутов. После перезагрузки системы, или при перезапуске сетевых подключений таблица маршрутов будет
восстановлена исходя из текущей сетевой конфигурации компьютера. При выполнении команды route -f из таблицы удаляются все маршруты, которые удовлетворяют условиям:
— не относятся к петлевому интерфейсу ( интерфейсу с IP 127.0.0.1 и маской -255.0.0.0)
— не являются маршрутами для многоадресной (multicast) рассылки (IP 224.0.0.1 маска 255.0.0.0)
— не являются узловыми маршрутами (когда маска равна 255.255.255.255) .
При обработке таблицы маршрутов, статические маршруты имеют высший приоритет, по сравнению с маршрутом, использующим для достижения конечной точки шлюз по умолчанию.
Весь список команд CMD Windows
Вам также может быть интересно
Литейный пр., д. 26, Лит. А
+7 (812) 403-06-99

ООО «ИТГЛОБАЛКОМ ЛАБС»
Литейный пр., д. 26, Лит. А
+7 (812) 403-06-99

ООО «ИТГЛОБАЛКОМ ЛАБС»
Как выполнить Traceroute по порту
По умолчанию первый UDP-пакет отправляется на порт 34434 и на каждом узле увеличивается на 1: 34434 на первом, 34435 на втором и так далее. При помощи ключа -p порт можно указать вручную. Команда будет выглядеть следующим образом:
В Windows трассировку с указанием порта стандартными средствами выполнить нельзя, так как Traceroute в cmd отсутствует, а Tracert не умеет работать с портами.
Как использовать Traceroute и Tracert?
В основном пользователи могут использовать команду Traceroute или Tracert через обычную командную строку. Однако точный метод его запуска зависит от операционной системы компьютера.
Давайте посмотрим, как запустить команду Traceroute или Tracert в Windows, Linux и macOS.
Tracert – Windows
- Перейдите в меню Пуск.
- Выберите Выполнить.
- Введите cmd и нажмите ОК. Это откроет командную строку.
- Введите команду tracert и затем впишите имя хоста или IP-адрес назначения. Пример: tracert www.nic.ru
- Нажмите Enter.
Traceroute – Linux
- Откройте приложение Терминал. Это можно сделать при помощи сочетания клавиш CTRL + Shift + T.
- Впишите команду traceroute вместе с именем хоста или IP-адресом. Пример: traceroute www.nic.ru
- Нажмите Enter.
Traceroute – MacOS
Раньше это действие можно было выполнить через встроенное приложение Сетевая утилита, но на данный момент она не поддерживается компанией Apple. Поэтому:
- Запустите приложение Терминал.
- Введите команду traceroute и имя хоста или IP-адрес назначения. Пример: traceroute www.nic.ru
- Нажмите Enter.
Также можно добавить дополнительные параметры в команду Traceroute или Tracert, чтобы сделать ваши результаты более точными. Вот некоторые расширенные параметры трассировки:
Расширенная диагностика с помощью программы MTR
Трассирование посредством программы MTR дает более полное представление о проблеме, особенно когда она плавающая, поскольку выполняется непрерывно. То есть, если утилиты tracert / traceroute отправляют определенное количество пакетов, то MTR будет проводить диагностику столько времени, сколько потребуется.
- Распакуйте архив и запустите файл WinMTR.exe.
- Вверху в поле «Host» введите имя сервера, домен или IP-адрес.
- Нажмите «Start».
Теперь подождите около минуты, пока данные будут собраны. Если проблема непостоянная — дождитесь, пока она появится, соберите данные около минуты и остановите диагностику. Скриншот с результатом отправьте в поддержку.
Для Linux есть аналог программы MTR, его можно установить из пакетного менеджера операционной системы.
Диагностика разрешения имен (nslookup, dig)
Способы выяснения какой DNS-сервер использует наш сервер различаются в зависимости от используемой версии и дистрибутива ОС Linux. Например, если ОС используется Network Manager для управления сетевыми интерфейсами (CentOS, RedHat и др.), может помочь вывод команды nmcli:


Используемый сервер также будет указан в настройках интерфейса, в разделе DNS Servers. В более старых версиях Ubuntu потребуется проверить содержимое файлов /etc/resolve.conf и /etc/network/interfaces. Если сервер не указан, воспользуйтесь статьей для ОС Ubuntu 18.04 или CentOS, чтобы скорректировать настройки.
Проверить работу сервиса разрешения имен нам помогут утилиты nslookup или dig. Функционально они почти идентичны: G-вывод утилиты dig содержит больше диагностической информации и гибко регулируется, но это далеко не всегда нужно. Поэтому используйте ту утилиту, которая удобна в конкретной ситуации. Если эти команды недоступны, потребуется доставить пакеты на CentOS/RedHat:
yum install bind-utils
sudo apt install dnsutils
После успешной установки сделаем тестовые запросы:


Аналогичный запрос утилитой nslookup выдает более компактный вывод, но вся нужная сейчас информация в нем присутствует.

nslookup ya.ru 8.8.8.8

Если имена разрешаются публичным DNS-сервером корректно, а установленным по умолчанию в ОС нет, вероятно, есть проблема в работе этого DNS-сервера. Временным решением данной проблемы может быть использование публичного DNS-сервера в качестве сервера для разрешения имен в операционной системе. В том случае, если разрешение имен не работает ни через локальный, ни через публичный DNS сервер — стоит проверить не блокируют ли правила файрвола отправку на удаленный порт 53 TCP/UDP пакетов (именно на этом порту DNS-серверы принимают запросы).
Часто используемые параметры:
- nslookup имя сервер — разрешить доменное имя, используя альтернативный сервер;
- nslookup –type=тип имя — получить запись указанного типа для доменного имени (например, nslookup -type=mx ya.ru – получить MX-записи для домена ya.ru);
- dig @сервер имя — разрешить доменное имя, используя альтернативный сервер;
- dig имя тип — получить запись указанного типа для доменного имени (например, dig ya.ru mx — получить MX-записи для домена ya.ru).
Как обычно, полный набор опций и параметров для указанных утилит можно найти во встроенной справке операционной системы, используя команду man.
Диагностика с помощью команд
Чтобы выполнить трассировку в Windows с помощью команды tracert:
- Нажмите Win+R, либо «Выполнить».
- В открывшееся окошко, введите команду «cmd».
- Нажмите «ОК».
- В командную строку впишите tracert и через пробел – нужный сервер, домен или IP-адрес.
- Нажмите «Enter».


В нашем примере запрос прошел через 13 транзитных узлов, чтобы дойти до целевого – yandex.ru.
В Linux трассировка делается по такому же принципу, но с применением команды traceroute.
Диагностика сетевой связности (ping, arp, traceroute)

Теперь проверим, указан ли шлюз по умолчанию. Команды ip route или route покажут имеющиеся маршруты:

В таблице маршрутизации мы видим, что имеется маршрут по умолчанию (обозначается либо ключевым словом default, либо адресом 0.0.0.0). Все пакеты, предназначенные для внешних сетей, должны направляться на указанный в маршруте адрес через обозначенный сетевой интерфейс.
Синтаксис команды ping IP/имя опции:

В данном случае видим, что на оба сетевых пакета, отправленных на адрес нашего шлюза по умолчанию, получены ответы, потерь нет. Это значит, что на уровне локальной сети со связностью все в порядке. Помимо количества полученных/потерянных сетевых пакетов мы можем увидеть время, которое было затрачено на прохождение запроса и ответа – параметр RTT (Round Trip Time). Этот параметр может быть очень важен при диагностике проблем, связанных с нестабильностью связи и скоростью соединения.
Часто используемые параметры:
- ping –c количество — указать количество пакетов, которое будет отправлено адресату (по умолчанию пакеты отправляются до тех пор, пока пользователь не прервет выполнение команды. Этот режим можно использовать, чтобы проверить стабильность сетевого соединения. Если параметр RTT будет сильно изменяться в ходе проверки, значит где-то на протяжении маршрута есть проблема);
- ping –s количество — указать размер пакета в байтах. По умолчанию проверка производится малыми пакетами. Чтобы проверить работу сетевых устройств с пакетами большего размера, можно использовать этот параметр;
- ping –I интерфейс — указать сетевой интерфейс, с которого будет отправлен запрос (актуально при наличии нескольких сетевых интерфейсов и необходимости проверить прохождение пакетов по конкретному сетевому маршруту).
В случае, если при использовании команды ping пакеты от шлюза (или другого хоста, находящегося в одной локальной сети с сервером-отправителем) в ответ не приходят, стоит проверить сетевую связность на уровне Ethernet. Здесь для коммуникации между устройствами используются так называемые MAC-адреса сетевых интерфейсов. За разрешение Ethernet-адресов отвечает протокол ARP (Address Resolution Protocol) и с помощью одноименной утилиты мы можем проверить корректность работы на этом уровне. Запустим команду arp –n и проверим результат:

Часто используемые параметры:
- arp –n — вывод содержимого локального arp-кэша в числовом формате. Без этой опции будет предпринята попытка определить символические имена хостов;
- arp –d адрес — удаление указанного адреса из кэша. Это может быть полезно для проверки корректности разрешения адреса. Чтобы убедиться, что в настоящий момент времени адрес разрешается корректно, можно удалить его из кэша и снова запустить ping. Если все работает правильно, адрес снова появится в кэше.
Если все предыдущие шаги завершены корректно, проверяем работу маршрутизатора — запускаем ping до сервера за пределами нашей сети, например, 8.8.8.8 (DNS-сервис от Google). Если все работает корректно, получаем результат:

В случае проблем на этом шаге, нам может помочь утилита traceroute, которая используя ту же логику запросов и ответов помогает увидеть маршрут, по которому движутся сетевые пакеты. Запускаем traceroute 8.8.8.8 –n и изучаем вывод программы:

Первым маршрутизатором на пути пакета должен быть наш локальный шлюз по умолчанию. Если дальше него пакет не уходит, возможно проблема в конфигурации маршрутизатора и нужно разбираться с ним. Если пакеты теряются на дальнейших шагах, возможно, есть проблема в промежуточной сети. А, возможно, промежуточные маршрутизаторы не отсылают ответные пакеты. В этом случае можно переключиться на использование другого протокола в traceroute.
Часто используемые опции:
- traceroute –n — вывод результата в числовом формате вместо символических имен промежуточных узлов;
- traceroute –I — использование ICMP-протокола при отслеживании маршрута. По умолчанию используются UDP-датаграммы;
- traceroute –s адрес— указать адрес источника для исходящего сетевого пакета;
- traceroute –i интерфейс— указать сетевой интерфейс, с которого будут отправляться пакеты.
Всё о трассировке
Что такое трассировка?
.png)
Трассировка или точнее распределённая трассировка – это возможность отслеживать запросы по мере их прохождения через распределённые системы путём сбора данных о том, как они передаются от одной службы к другой.
Данные трассировки помогают понять поток запросов и определить, где в системе возникают сбои или проблемы с производительностью и почему.
Например, запрос может пройти через несколько служб и пройти туда и обратно через различные микрослужбы, чтобы достичь завершения.
Хотя трассировки существуют уже давно, тенденция к распределённым архитектурам, микросервисам и контейнеризации сделала их важной частью большой системы наблюдения. Ведь наличие механизма, позволяющего понять поток данных, необходимо для обслуживания серверов и устранения неполадок.
Трассировка, наряду с журналами и метриками, занимает важное место в системе. В то время как журналы предоставляют сведения о конкретных событиях, таких как обращение к базе данных и запись в файл или сообщение об ошибке, трассировка соединяет цепочку связанных событий.
Одна трассировка маршрута даёт представление о:
- каждом шаге, через который прошёл запрос;
- количестве времени, затраченном на каждое действие;
- общем времени, которое понадобилось на его обработку.
В то время, как журналы предоставляют подробные сведения об активности, выполняемой каждой службой в процессе, ведение журнала трассировки обеспечивает полную запись цепочки событий, инициированных первоначальным запросом.
Эта информация бесценна для отладки сложных проблем и оптимизации вашей системы.
Как использовать Traceroute и Tracert
Если у вас кириллический домен
Кириллические домены необходимо вводить в формате Punycode. Для перевода домена в Punycode воспользуйтесь сервисом.
Выполним команду Traceroute в Linux на примере Ubuntu 20.04:
Откройте терминал при помощи комбинации клавиш CTRL + Shift + T или введите в поиске слово «Терминал».
Введите команду
traceroute domain.name. Вместоdomain.nameукажите домен:

Вывод команды будет содержать:
- порядковый номер маршрутизатора (узла),
- имя узла,
- IP-адрес узла,
- круговую задержку (время, потраченное на отправку запроса и получение ответа).
Команда Traceroute в Windows 10 отсутствует, поэтому следует воспользоваться Tracert:
Нажмите комбинацию клавиш Win + R.
Введите cmd и нажмите Enter.

Вывод команды tracert будет выглядеть следующим образом:
- порядковый номер маршрутизатора (узла),
- круговая задержка (время, потраченное на отправку запроса и получение ответа),
- имя узла,
- IP-адрес узла.
Найдите в Spotlight утилиту Network Utility (Сетевая утилита) и запустите её.

- порядковый номер узла,
- имя узла,
- IP-адрес узла,
- круговую задержку (время, потраченное на отправку запроса и получение ответа).
Если нужно отправить вывод команды в службу поддержки, сделайте скриншот или скопируйте текст.
Разница между Traceroute и Tracert
Принцип работы у Traceroute и Tracert один, однако разница между ними состоит не только в операционных системах.
Напоминаем, что команда Tracert обслуживает Windows, а Traceroute работает на Linux и MacOS.
- Tracert, в отличие от своего Linux-двойника, реализован на основе протокола ICMP, а не UDP.
- Tracert отправляет эхо-запрос ICMP (ICMP Echo Request) с TTL=1.
- Первый маршрутизатор проверяет адрес назначения, чтобы выяснить был ли отправлен запрос именно ему.
- Узнав, что цель пакета – другой хост, маршрутизатор отбрасывает его, и TTL становится равным 0.
- Затем маршрутизатор 1 отправляет ICMP-сообщение с указанием информации о себе и причине проблемы источнику пакета: «Time-To-Live Exceeded» или «Time Exceeded in transit».
- Благодаря этому сообщению Tracert записывает маршрутизатор 1 как первый транзитный участок или, как его ещё называют, «хоп, прыжок».
Процесс передачи пакета между промежуточными маршрутизаторами продолжится, пока переменная (TTL ICMP-запроса), не станет равна количеству «прыжков» между узлом-отправителем и узлом-получателем, и пакет не будет получен хостом назначения или количество сетевых переходов не превысит максимальное значение для Tracert – 30.
- Когда целевой хост проверит IP-адрес назначения и узнает, что запрос был направлен именно ему, он отправит эхо-ответ ICMP (ICMP Echo Request), что даст утилите понять, что процесс передачи завершён.
В чём ещё отличие Traceroute от Tracert? В Traceroute схема схожая, практически идентичная.
Целевому хосту направляется фрагментированный UDP-запрос. Таким образом, отправляется сразу несколько пакетов с TTL: TTL=1, TTL=2 и TTL=3.
Вот только раз эта утилита не отправляет эхо-запрос ICMP, как она понимает, что трассировка подошла к концу?
Всё просто: в каждом пакете содержатся данные о порте отправителя (Source) и порте получателя (Destination). Destination порт по умолчанию закрытый (34434), поэтому утилита Traceroute сразу понимает, что процесс передачи данных завершён, когда получает ответ с сообщением о недоступности порта «Destination port unreachable» (Хост/Порт недостижим). Иными словами, запрос достиг целевого хоста.
Как работает Traceroute и Tracert?
- По протоколу UDP (User Datagram Protocol – «протокол пользовательских датаграмм») Traceroute отправляет последовательность IP-пакетов. Всего таких пакетов по умолчанию может быть 3.
- Первый пакет имеет время жизни (также известное как TTL (Time To Live) или лимит переходов), равное 1, второй пакет имеет TTL=2 и так далее.
- Каждый раз, когда пакет передается новому маршрутизатору, TTL уменьшается на 1. Это сделано для предотвращения проблем с зацикливанием между серверами. Если бы не было TTL, пакет мог бы бесконечно долго перебрасываться между серверами.
.jpg)
Когда время жизни достигает 0, пакет отбрасывается, а маршрутизатор возвращает сообщение об ошибке. Отправляя пакеты таким образом, Traceroute гарантирует, что каждый маршрутизатор на пути отклонит пакет и отправит ответ.
Как работают Tracert и Traceroute
Когда вы пытаетесь открыть сайт, браузер отправляет сообщение (запрос) серверу, на котором этот сайт находится. Сообщение на своём пути проходит через маршрутизаторы. Они решают, куда дальше передать сообщение, чтобы гарантированно его доставить адресату. В трассировке маршрутизаторы ещё называют хопами (хоп — прыжок) или узлами. Количество узлов, через которые на своём пути пройдёт запрос, можно узнать при помощи утилит Tracert и Traceroute. Узлы, которые не являются целевыми для запроса, называют транзитными.
Утилита Traceroute формирует UDP-датаграмму (сообщение, которое нужно доставить целевому серверу), упаковывает её в IP-пакет и передаёт первому транзитному узлу. В заголовке такого IP-пакета есть поле TTL (Time To Live) — время жизни пакета. Оно определяет количество хопов, через которые пакет может пройти. На каждом узле TTL уменьшается на единицу. Если на пути к удалённому адресату время жизни пакета станет равно 0, маршрутизатор отбросит пакет и отправит источнику ICMP-сообщение об ошибке «Time Exceeded» (время истекло).
Этот принцип лежит в основе работы утилит Tracert и Traceroute, однако между ними есть отличия. Рассмотрим каждую утилиту отдельно.
Утилита Traceroute вместо ICMP-запроса отправляет 3 UDP-пакета на определенный порт целевого хоста и ожидает ответа о недоступности этого порта. Первый пакет отправляется с TTL=1, второй с TTL=2 и так далее, пока запрос не попадёт адресату. Отличие от Tracert в том, как Traceroute понимает, что трассировка завершена. Так как вместо ICMP-запроса он отправляет UDP-запрос, в каждом запросе есть порт отправителя (Sourсe) и порт получателя (Destination). По умолчанию запрос отправляется на закрытый порт 34434. Когда запрос попадёт на хост назначения, этот хост отправит ответ о недоступности порта «Destination port unreachable» (порт назначения недоступен). Это значит, что адресат получил запрос. Traceroute воспримет этот ответ как завершение трассировки.
Как установить Traceroute на Linux
В Unix-подобных системах программа может быть не установлена. Ниже мы покажем, как установить Traceroute на некоторых операционных системах.
Как установить Traceroute в Debian/Ubuntu
Запустите терминал и введите команду
sudo apt-get updateдля обновления данных о репозиториях.Введите команду
sudo apt-get install traceroute.
Как установить Traceroute в Centos 7,8
Запустите терминал и введите команду
sudo yum updateдля обновления данных о репозиториях.Введите команду
sudo yum install traceroute.
Как использовать Traceroute по ICMP
И UDP и ICMP-протоколы используются командой Traceroute. UDP используется по умолчанию. Чтобы воспользоваться ICMP, добавьте в команду ключ -I:
traceroute -I domain.name
Для чего это нужно? Оборудование может быть настроено на то, чтобы не отвечать на подобные запросы. Если вы увидите в выводе символы * * *, это может значить, что маршрутизатор отклонил пакет и не отправил ответ. Звёздочки в выводе не означают, что у узла проблемы. Соединения может фильтровать Firewall, который стоит перед узлом. Это делается специально, чтобы снизить нагрузку. Пример такого вывода команды:

В этом случае попробуйте воспользоваться ключом -I:

Ключ -I требует root-привилегий. Если команда не выполняется, добавьте в начало sudo:
sudo traceroute -I domain.name
Трассировка используется для диагностики проблем сети. Её может запросить ваш хостинг- или интернет-провайдер. В этом случае предоставьте скриншот или текст вывода команды.
Если сайт работает, а трассировка до него не доходит, значит запросы фильтруются на пути к цели. Отсутствие трассировки не означает наличие проблемы.
Как работает трассировка?
Монолитное приложение разрабатывается как единый функциональный модуль, в то время как приложение с микросервисной архитектурой разбивается на модульные службы, каждая из которых выполняет основную функцию приложения и часто управляется специальной командой.
Микросервисы используются для создания многих современных приложений, поскольку они упрощают тестирование и развёртывание быстрых обновлений, а также предотвращают возникновение единой точки отказа.
Но устранение неполадок с микрослужбами может оказаться сложной задачей, поскольку они часто работают на базе сложной серверной архитектуры, а запросы могут включать в себя последовательности вызовов нескольких служб.
Используя трассировку, разработчики могут визуализировать весь путь запроса – от интерфейса к серверу – и точно определить любые сбои производительности, которые возникают на этом пути.
Платформы трассировки начинают собирать данные в момент подачи запроса. Например, когда пользователь отправляет форму на веб-сайте. Это создаёт уникальный идентификатор трассировки.
Этот процесс позволяет идентифицировать каждый запрос, вызов и процесс и соответствующим образом расставлять приоритеты в своих усилиях по устранению неполадок.
Для получения результатов трассировки в том числе используются команды Traceroute и Tracert.
Принцип работы системных утилит tracert и traceroute
Когда пользователь открывает какой-либо сайт, браузер обращается с запросом к серверу, на котором этот сайт расположен. Запрос идет через маршрутизаторы, которые называют узлами или хопами (hop – прыжок). Команды tracert и traceroute позволяют узнать, через сколько узлов пройдет запрос, пока достигнет целевого адресата.
Утилиты создают пакет, предназначенный для целевого узла и отправляют через маршрутизаторы – транзитные, то есть нецелевые узлы. В заголовке передаваемого пакета есть специальное поле TTL, переводится как «время жизни».
Это поле определяет количество узлов, проходимых пакетом. На каждом узле от заданного количества TTL отнимается одна жизнь. Если в процессе маршрута значение TTL станет равно 0, маршрутизатор отбросит пакет и вернет отправителю сообщение об ошибке «Time Exceeded».
Как читать результаты Tracert
После выполнения команды Tracert или Traceroute система представит результаты в виде множества строк. Отчёт может несколько отличаться в зависимости от вашей операционной системы, но обычно он содержит одну и ту же информацию.
Стандартные результаты Tracert или Traceroute включают в себя несколько строк, описывающих каждый переход, который проходит пакет для достижения хоста назначения. Каждая строка разделена на столбцы с различной информацией.
Давайте рассмотрим каждый столбец и его детали.
Число хопов – первый столбец количество сделанных “прыжков”.
Если время трассировки истекает на определенном узле, это может означать, что в данном месте возникла проблема или что маршрут неверен, что не позволяет пакету достичь пункта назначения. В результатах это представлено как:
Заключение
Команда Traceroute и Tracert – это полезный и простой в использовании инструмент диагностики сети. Как правило, это ещё и первый способ устранения неполадок с подключением.
В этой статье вы узнали, чем эта утилита может отличаться в зависимости от вашей операционной системы, как использовать команду и читать полученные результаты.

