Для большинства поставщиков управляемых услуг (MSP), системных администраторов и технических специалистов, команды Traceroute и Tracert являются первыми сигналами для устранения неполадок, связанных с задержкой сети или проблемами с подключением. Но что это?
- Что такое трассировка. Для чего нужна трассировка узлов
- Общая информация
- Что такое Traceroute и Tracert
- Mtr и mtr-gtk (консольная и графическая версия)
- Оглавление
- Трассировка в Windows
- Как использовать Traceroute и Tracert?
- Программы для трассировки
- Проверяем трассу tracert
- Всё о трассировке
- Принцип работы системных утилит tracert и traceroute
- CMD Windows – ищем и проверяем
- Разница между Traceroute и Tracert
- Как работает Traceroute и Tracert?
- Tcptraceroute
- Как работает трассировка?
- Диагностика с помощью команд
- Принципы работы трассировки
- Трассировка программой ping
- Методы трассировки в traceroute
- Как ускорить трассировку. Как отключить обратное преобразование IP в имена хостов при трассировке
- Трассировка IPv6
- Изменение порта
- Как начать трассировку с определённого узла. Как уменьшить или увеличить число узлов для трассировки
- Выбор интерфейса для трассировки
- Как показать к какой автономной системе принадлежит узел при трассировке
- Опции traceroute
- Трассировка сети в Nmap
- Lft
- Расширенная диагностика с помощью программы MTR
- Tracepath
- Связанные статьи
- Как читать результаты Tracert
- Заключение
Что такое трассировка. Для чего нужна трассировка узлов
Трассировка маршрута пакета до сетевого хоста показывает все промежуточные узлы, через которые проходит пакет, пока доберётся до указанной цели. То есть с помощью трассировки можно узнать, по каким узлам, с какими IP адресами, передаётся пакет прежде чем быть доставленным до точки назначения.
Трассировка может применяться для выявления связанных с работой компьютерной сети проблем, а также для исследования сети (определения структуры сети, поиска промежуточных сетевых узлов).
Общая информация
Трассировка – это проверка доставки пакетов данных по маршруту до удаленного сервера. Такой способ диагностики позволяет выявить проблемный участок сети, где возникают потери сетевых пакетов. Делается это всегда в тот момент, когда наблюдаются проблемы.
Трассировку можно выполнять с помощью команд traceroute (для Linux) и tracert (для Windows). Более информативный способ – посредством специального программного обеспечения, например, MTR.
При наличии проблем в доступности сервера или сайта трассировку нужно выполнять именно с проблемного устройства – онлайн сервисы в этом случае не подойдут.
Само понятие трассировки разнится. Кто-то утверждает, что это полученные данные, в то время, как traceroute – это программа, помогающая определить следование (маршрутизацию) данных в сетях IP/TCP.
Проще говоря, мы будем делать с вами трассу и пинговать сервер из оболочки WIndows.
Что такое Traceroute и Tracert
Traceroute или Tracert – это утилита, служащая для диагностики сети. Она отслеживает пути, по которым пакеты данных проходят от источника к хосту назначения, что позволяет администраторам оперативно решить проблемы с подключением.
В Windows эта команда называется Tracert, а в Linux и MacOS – Traceroute.
Traceroute и Tracert в основном работают одинаково – они предоставляют информацию о пути пакета данных из одной точки сети на конкретный IP-сервер. Когда данные передаются между двумя точками, они должны проходить через несколько устройств (например, маршрутизаторы).
В то время как команда Ping может сообщить, есть ли проблема, Traceroute поможет вам точно определить, где именно она образовалась.
Представьте, что вы посещаете веб-сайт, и его страницы долго загружаются. В этом случае вы можете использовать Traceroute, чтобы определить, где происходят самые длительные задержки, чтобы добраться до источника самого сбоя.
В данной статье рассмотрим что такое трассировка, как её сделать на разных устройствах и что делать с результатом.
Что такое трассировка и MVNO
Рассмотрим случай, когда сайт может быть недоступен с одного интернет провайдера, а с других провайдеров данной проблемы не наблюдается.
Как правило, при обращении к сайту, вы можете наблюдать подобную ошибку (рис.1).
Перед началом следует сделать отступление и рассказать про MVNO.
MVNO или по другому виртуальные операторы — это компании, арендующие оборудование другого провайдера. Они предоставляют услуги мобильной связи и интернета под своими флагами, используя вышки других компаний.
По состоянию на 2022 год в России действует несколько виртуальных операторов, которые сами себя позиционируют как полноценных операторов. Эти фирмы объединяет то, что раньше у них была собственная инфраструктура, но позже они перешли на использование оборудования других компаний:
На сети Мегафон: YOTA, NetByNet;
На сети Tele2: Тинькофф мобайл, Сбермобайл, Ростелеком, TTK Mobile, Danycom;
На сети МТС: МГТС.
Если сайт недоступен с одного из данных провайдеров, первое, что необходимо сделать, проверить работает ли сайт с другого главного провайдера (помните про MVNO). Далее необходимо реализовать трассировку с интернета, где наблюдается недоступность сайта. Как это сделать, мы расскажем ниже.
Трассировка — это команда, которая показывает, через какие узлы информация проходит в интернете, когда вы открываете сайт в браузере. С помощью трассировки иногда можно определить, почему медленно открывается сайт, или открывается «через раз» или совсем не доступен.
Команду трассировки необходимо выполнять с того устройства, где наблюдается недоступность сайта.
Трассировка на Windows
Для примера возьмем условный сайт site1.ru для которого мы хотим сделать трассировку.
Чтобы выполнить трассировку на устройстве с Windows, нажимаем на сочетание клавиш Windows + R, затем вводим команду cmd и нажимаем на Enter или OK (рис.2).
Либо в поиске вводим «Командная строка» и выбираем приложение с таким же названием (рис. 2a)
Появится окно командной строки, в нём нам нужно ввести команду:
Вместо site1.ru нужно указать ваш домен, например: tracert myshop.ru
Для трассировки IP адреса (если это необходимо, например 127.0.0.1) укажите команду: tracert 127.0.0.1
Для кириллического домена, его нужно сначала перевести в PUNY код любым конвертером (например через reg.ru/web-tools/punycode) затем полученный код вставить в команду, вот так: tracert xn--1-7sb1a4ah.xn--p1ai
Получится вот так (рис.3)
Нажимаем Enter и ждем завершения выполнения команды, примерно ~20 секунд.
Пример результата выполнения команды трассировки (рис.4):
В зелёной рамке на рис. 4 показан результат выполнения команды. Далее смотрите секцию ниже, в которой рассказывается, что делать с полученным результатом.
Трассировка на MacOS
Для того чтобы выполнить трассировку на MacOS, необходимо запустить приложение «Терминал».
Для этого нажмите значок Launchpad в панели Dock (рис. 5).
Введите «Терминал» в поле поиска (рис. 6)
Затем нажмите на значок Терминала.
Вместо site1.ru нужно указать ваш домен, например: traceroute myshop.ru
Для трассировки IP адреса (если это необходимо, например 127.0.0.1) укажите команду: traceroute 127.0.0.1
Для кириллического домена, его нужно сначала перевести в PUNY код любым конвертером (например через reg.ru/web-tools/punycode) затем полученный код вставить в команду, вот так: traceroute xn--1-7sb1a4ah.xn--p1ai
Далее нажимаем Enter и наблюдаем за выполнением команды (~ 1 минуту), получаем результат (рис.8)
На рис. 8 показан результат выполнения команды.
Трассировка на устройстве с iOS (iPhone/iPad).
Мы рассмотрели применение трассировки на компьютере. Что же касается мобильного трафика. Самый простой способ это раздать интернет через телефон на ноутбук и выполнить трассировку, или же воспользоваться бесплатными приложениями.
Рассмотрим пример трассировки на устройстве iOS установив бесплатное приложение «IP Tools: Network Insights».
Выглядит оно вот так (рис. 9)
Открыв приложение, выбираем пункт «Traceroure», затем на следующем экране вводим нужный нам домен и нажимаем Start (рис. 10)
Результат выполнения команды будет отображён ниже.
Готово, далее можно сделать скриншот и поделится результатом.
Трассировка на устройстве с Android
Также как на устройство iOS, чтобы выполнить трассировку на Android, необходимо установить приложение. Для примера мы взяли два бесплатных и популярных приложения:
Рассмотрим процесс трассировки на примере приложения «Ping & Net».
После установки, вводим в поле нужный нам домен и выбираем опцию «Traceroute» (рис.11).
В открывшемся окне оставляем опции как есть, и нажимаем ОК.
В новом окне появится результат выполнения команды.
Что делать с результатом?
После того как завершится трассировка, необходимо сделать скриншот согласно инструкции как поделиться скриншотом и отправить в поддержку.
Также необходимо обратиться в поддержку интернет провайдера с уточнением причины недоступности сайта с их стороны, возможно ip находится в черном списке и необходимо его удалить из списка для корректной работы сайта, либо какой-то локальный сбой на стороне регионального интернет провайдера. Результат трассировки будет хорошим подспорьем для технических специалистов поддержи интернет провайдера.
Дополнительно возможной причиной недоступности сайта может быть обновление NS записей, т.е. когда Вы привязали домен к магазину, указали на стороне регистратора домена NS записи, необходимо время для их обновления примерно от 2х до 72х часов. Если же после 72х часов сайт все равно будет недоступен, то в этом случае необходимо выполнить действия выше.
Готово. Мы рассмотрели, как произвести трассировку сайта в случае его недоступности.
Тэги: трассировка, недоступность сайта, интернет провайдер, интернет, мегафон, Yota, NetByNet, tracert, traceroute, mac трассировка
Mtr и mtr-gtk (консольная и графическая версия)
Программа mtr совмещает в себе функциональность программа traceroute и ping в едином инструменте диагностики сети. То есть эта программа показывает маршрут до указанного узла и непрерывно пингует каждые хоп и при этом собирает общую статистику потерь — на основе этих данных можно определить проблемный узел, на котором теряются пакеты.

Данная программа поддерживает несколько методов трассировки.
Также она поддерживает разные форматы вывода для сохранения результатов, например, опция -C, —csv для сохранения результатов в формате CSV (обратите внимание, что на самом в качестве разделителя используется не запятая, а точка с запятой), а также опция -j, —json для сохранения в формате вывода JSON.
С помощью опции -n, —no-dns можно отключить преобразование IP в имена хостов.
Опцией -b, —show-ips можно включить отображение и имён хостов, и IP адресов.
Опцией -y n, —ipinfo n можно настроить вывод дополнительной информации о каждом IP хопа. В качестве n нужно указать цифру, которая означает:
У меня при любых значениях -y всегда показывается только номер автономной системы. К счастью, между различными видами можно переключаться по кругу используя кнопку y:

Опция -z, —aslookup отображает номер Автономной Системы (AS) для каждого хопа.
Опция -m указывать максимальное число хопов (максимальное значение time-to-live) которое будет обрабатываться при трассировке. По умолчанию равно 30.
Опция -U ЧИСЛО устанавливает максимум незнакомых хостов. По умолчанию равно 5. Видимо, после достижения этого значения дальнейшая трассировка будет остановлена.
-P ПОРТ, —port ПОРТ
Номер целевого порта для TCP/SCTP/UDP трассировок.
-L ЛОКАЛЬНЫЙ_ПОРТ, —localport ЛОКАЛЬНЫЙ_ПОРТ
Номер исходного порта для UDP трассировок.
Во время работы программы доступны интерактивные команды. Если нажать на d, то можно переключаться между различными отображениями:


Кнопкой r можно сбросить статистику.
Кнопкой o можно поменять порядок полей. Кстати, опцией -o можно установить, какие поля вы хотите отображать и их последовательность. Подробности смотрите по:
Оглавление
1. Что такое трассировка. Для чего нужна трассировка узлов
2. Принципы работы трассировки
4. Программы для трассировки
5.1 Как пользоваться traceroute
5.2 Методы трассировки в traceroute
5.3 Как ускорить трассировку. Как отключить обратное преобразование IP в имена хостов при трассировке
5.6 Как начать трассировку с определённого узла. Как уменьшить или увеличить число узлов для трассировки
5.7 Выбор интерфейса для трассировки
5.8 Как показать к какой автономной системе принадлежит узел при трассировке
7. mtr и mtr-gtk (консольная и графическая версия)
10. Трассировка сети в Nmap
11. Трассировка программой ping
12. Трассировка в Windows
Трассировка в Windows
В Windows для трассировки сети имеется встроенная команда tracert. У неё практически отсутствуют опции. Для запуска команды достаточно указать имя удалённого хоста:

Если вам недостаточно такой функциональности, то вы можете установить Nmap в Windows.
Как использовать Traceroute и Tracert?
В основном пользователи могут использовать команду Traceroute или Tracert через обычную командную строку. Однако точный метод его запуска зависит от операционной системы компьютера.
Давайте посмотрим, как запустить команду Traceroute или Tracert в Windows, Linux и macOS.
Tracert – Windows
- Перейдите в меню Пуск.
- Выберите Выполнить.
- Введите cmd и нажмите ОК. Это откроет командную строку.
- Нажмите Enter.
Traceroute – Linux
- Откройте приложение Терминал. Это можно сделать при помощи сочетания клавиш CTRL + Shift + T.
- Нажмите Enter.
Traceroute – MacOS
Раньше это действие можно было выполнить через встроенное приложение Сетевая утилита, но на данный момент она не поддерживается компанией Apple. Поэтому:
- Запустите приложение Терминал.
- Нажмите Enter.
Также можно добавить дополнительные параметры в команду Traceroute или Tracert, чтобы сделать ваши результаты более точными. Вот некоторые расширенные параметры трассировки:
Программы для трассировки
Имеется много разных утилит для трассировки, некоторые из них поддерживают различные методы трассировки. Примеры таких программ:
- traceroute
- tracepath
- mtr и mtr-gtk (соответственно, консольная и графическая версия)
- lft
- tcptraceroute
Ещё определять узлы маршрута пакета можно с помощью Nmap (несколькими способами) и даже с помощью ping!
В этой статье я рассмотрю все перечисленные выше программы. Начнём знакомство с traceroute, поскольку в ней реализовано больше всего методов сканирования.
Проверяем трассу tracert
Трассировка показывает нам скорость прохождения наших пакетов между маршрутизаторами, которые базируются в сети компьютера, который отправляет запросы к итоговому (конечному серверу).
Трасса часто помогает обнаружить проблему в серверной части. Большинство опытных специалистов при каждом изменении кода СУБД ежеминутно проверяют трассировку для определения проблемы и скорости прохождения данных.
Функция tracert – показывает полный сетевой маршрут до указанного места. Выглядит это так (в качестве примера был взял wikipedia.org):

Как мы видим, команда «tracert» — помогает нам увидеть количество промежуточных маршрутизаторов, а также конечное время, которое нам приходится выжидать.
Всё о трассировке
Что такое трассировка?
.png)
Трассировка или точнее распределённая трассировка – это возможность отслеживать запросы по мере их прохождения через распределённые системы путём сбора данных о том, как они передаются от одной службы к другой.
Данные трассировки помогают понять поток запросов и определить, где в системе возникают сбои или проблемы с производительностью и почему.
Например, запрос может пройти через несколько служб и пройти туда и обратно через различные микрослужбы, чтобы достичь завершения.
Хотя трассировки существуют уже давно, тенденция к распределённым архитектурам, микросервисам и контейнеризации сделала их важной частью большой системы наблюдения. Ведь наличие механизма, позволяющего понять поток данных, необходимо для обслуживания серверов и устранения неполадок.
Трассировка, наряду с журналами и метриками, занимает важное место в системе. В то время как журналы предоставляют сведения о конкретных событиях, таких как обращение к базе данных и запись в файл или сообщение об ошибке, трассировка соединяет цепочку связанных событий.
Одна трассировка маршрута даёт представление о:
- каждом шаге, через который прошёл запрос;
- количестве времени, затраченном на каждое действие;
- общем времени, которое понадобилось на его обработку.
В то время, как журналы предоставляют подробные сведения об активности, выполняемой каждой службой в процессе, ведение журнала трассировки обеспечивает полную запись цепочки событий, инициированных первоначальным запросом.
Эта информация бесценна для отладки сложных проблем и оптимизации вашей системы.
Принцип работы системных утилит tracert и traceroute
Когда пользователь открывает какой-либо сайт, браузер обращается с запросом к серверу, на котором этот сайт расположен. Запрос идет через маршрутизаторы, которые называют узлами или хопами (hop – прыжок). Команды tracert и traceroute позволяют узнать, через сколько узлов пройдет запрос, пока достигнет целевого адресата.
Утилиты создают пакет, предназначенный для целевого узла и отправляют через маршрутизаторы – транзитные, то есть нецелевые узлы. В заголовке передаваемого пакета есть специальное поле TTL, переводится как «время жизни».
Это поле определяет количество узлов, проходимых пакетом. На каждом узле от заданного количества TTL отнимается одна жизнь. Если в процессе маршрута значение TTL станет равно 0, маршрутизатор отбросит пакет и вернет отправителю сообщение об ошибке «Time Exceeded».
CMD Windows – ищем и проверяем
Необходимо выполнить следующие действия, независимо от вашей версии ПО:
- Пуск — Все программы — Стандартные — Командная строка;
- В окне поиска — вводите тоже самое;
- Открываете панель управления — выполнить — и вводим команду cmd.
Любой из этих способов откроет черное окно, которое выглядит так:

После того, как вы узнали свой IP (достаточно в строке ввести ipconfig), также вам доступна команда PING.Делаем всё, как на скриншотах.

Командная строка всегда выдает по 4 пакета. Мы видим, что каждый пакет передает информацию в 32 бита за 3 миллисекунды каждый.Все указано на скриншоте ниже.

Также вы можете изменить количество бит, и тогда ваша команда будет выглядеть так: ping -l (количество байт) 22.11.33.444 (к примеру)
В отличие от Windows, на Linux ручная проверка айпи не прекращается до тех пор, пока вы сами не остановите этот процесс. В Виндовс такую операцию сделать также можно с помощью команды добавочной команды «-T», и выглядит это так: ping -t какой-нибудь IP (к примеру)
Разница между Traceroute и Tracert
Принцип работы у Traceroute и Tracert один, однако разница между ними состоит не только в операционных системах.
Напоминаем, что команда Tracert обслуживает Windows, а Traceroute работает на Linux и MacOS.
- Tracert, в отличие от своего Linux-двойника, реализован на основе протокола ICMP, а не UDP.
- Первый маршрутизатор проверяет адрес назначения, чтобы выяснить был ли отправлен запрос именно ему.
- Затем маршрутизатор 1 отправляет ICMP-сообщение с указанием информации о себе и причине проблемы источнику пакета: «Time-To-Live Exceeded» или «Time Exceeded in transit».
- Благодаря этому сообщению Tracert записывает маршрутизатор 1 как первый транзитный участок или, как его ещё называют, «хоп, прыжок».
Процесс передачи пакета между промежуточными маршрутизаторами продолжится, пока переменная (TTL ICMP-запроса), не станет равна количеству «прыжков» между узлом-отправителем и узлом-получателем, и пакет не будет получен хостом назначения или количество сетевых переходов не превысит максимальное значение для Tracert – 30.
В чём ещё отличие Traceroute от Tracert? В Traceroute схема схожая, практически идентичная.
Целевому хосту направляется фрагментированный UDP-запрос. Таким образом, отправляется сразу несколько пакетов с TTL: TTL=1, TTL=2 и TTL=3.
Вот только раз эта утилита не отправляет эхо-запрос ICMP, как она понимает, что трассировка подошла к концу?
Всё просто: в каждом пакете содержатся данные о порте отправителя (Source) и порте получателя (Destination). Destination порт по умолчанию закрытый (34434), поэтому утилита Traceroute сразу понимает, что процесс передачи данных завершён, когда получает ответ с сообщением о недоступности порта «Destination port unreachable» (Хост/Порт недостижим). Иными словами, запрос достиг целевого хоста.
Как работает Traceroute и Tracert?
- Первый пакет имеет время жизни (также известное как TTL (Time To Live) или лимит переходов), равное 1, второй пакет имеет TTL=2 и так далее.
- Каждый раз, когда пакет передается новому маршрутизатору, TTL уменьшается на 1. Это сделано для предотвращения проблем с зацикливанием между серверами. Если бы не было TTL, пакет мог бы бесконечно долго перебрасываться между серверами.
.jpg)
Когда время жизни достигает 0, пакет отбрасывается, а маршрутизатор возвращает сообщение об ошибке. Отправляя пакеты таким образом, Traceroute гарантирует, что каждый маршрутизатор на пути отклонит пакет и отправит ответ.
Tcptraceroute
В программе tcptraceroute используются пакеты только одного протокола TCP. В заголовках этих пакетов опциями можно установить разные флаги. В программе traceroute также можно устанавливать флаги протокола TCP, причём возможностей для настройки больше.
Как работает трассировка?
Монолитное приложение разрабатывается как единый функциональный модуль, в то время как приложение с микросервисной архитектурой разбивается на модульные службы, каждая из которых выполняет основную функцию приложения и часто управляется специальной командой.
Микросервисы используются для создания многих современных приложений, поскольку они упрощают тестирование и развёртывание быстрых обновлений, а также предотвращают возникновение единой точки отказа.
Но устранение неполадок с микрослужбами может оказаться сложной задачей, поскольку они часто работают на базе сложной серверной архитектуры, а запросы могут включать в себя последовательности вызовов нескольких служб.
Используя трассировку, разработчики могут визуализировать весь путь запроса – от интерфейса к серверу – и точно определить любые сбои производительности, которые возникают на этом пути.
Платформы трассировки начинают собирать данные в момент подачи запроса. Например, когда пользователь отправляет форму на веб-сайте. Это создаёт уникальный идентификатор трассировки.
Этот процесс позволяет идентифицировать каждый запрос, вызов и процесс и соответствующим образом расставлять приоритеты в своих усилиях по устранению неполадок.
Для получения результатов трассировки в том числе используются команды Traceroute и Tracert.
Диагностика с помощью команд
Чтобы выполнить трассировку в Windows с помощью команды tracert:
- Нажмите Win+R, либо «Выполнить».
- В открывшееся окошко, введите команду «cmd».
- Нажмите «ОК».
- Нажмите «Enter».


В нашем примере запрос прошел через 13 транзитных узлов, чтобы дойти до целевого – yandex.ru.
В Linux трассировка делается по такому же принципу, но с применением команды traceroute.
Принципы работы трассировки
Пересылаемые сетевые пакеты состоят из двух областей: заголовки и данные. В заголовках находится разная информация, например, IP адреса пункта отправки и пункта назначения, порты отправки и назначения, тип пакета, контрольная сумма пакета и прочее. Среди полей заголовка, у IP протокола есть такое поле как time to live (TTL) — время жизни пакета. Это счётчик с числом, которое уменьшается на единицу каждый раз, когда пакет проходит новый узел. Этот счётчик сделан для того, чтобы проблемный пакет (например, при ошибке, повлекшей закольцованный маршрут) не путешествовал по сети бесконечно. То есть любой пакет пройдя определённое количество узлов в конце-концов достигнет точки назначения или будет отброшен одним из узлов сети, когда закончится «время жизни».
Когда счётчик TTL становится равным нулю, очередной шлюз просто не пересылает этот пакет дальше. Но при этом шлюз на тот IP адрес, откуда пришёл пакет с истёкшим временем жизни, отправляет по протоколу ICMP ответ TIME_EXCEEDED (время жизни кончилось). И этот ответ содержит IP адрес шлюза, где пакет закончил своё существование.
Так вот, суть трассировки в том, что отправляется один пакет с временем жизни (TTL) установленным на единицу — первый шлюз уменьшает значение на единицу, смотрит, что счётчик стал равен нулю, никуда не отправляет этот пакет, зато нам отправляет ответ, что пакет «умер». Мы и так знаем, что пакет умер — из этого ответа нас интересует только IP адрес шлюза, где с пакетом случилось это несчастье. Затем отправляется пакет со счётчиком установленным на 2 — пакет проходит первый шлюз (его IP мы уже знаем), но несчастье (счётчик достигает нуля) с ним случается уже на втором шлюзе — мы получаем ICMP ответ с IP этого шлюза. Затем отправляется следующий пакет и т. д., пока не будут определены все узлы до нужного нам сетевого хоста.
Трассировка программой ping
ping -R suip.biz

IP маршрута выводятся при каждом пинге. Если маршрут не меняется, то выводится надпись, что маршрут не изменился.

Несмотря на все ограничения опции RECORD_ROUTE, иногда она бывает единственным вариантом получить хоть какую-то информацию о маршруте, поскольку команда ping практически всегда присутствует и не требует повышенных привилегий для запуска.
Для запуска трассировки достаточно указать IP или сайт, до которого вы хотите проследить маршрут:
Если вас интересуют ближайшие узлы (локальная сеть, например), то в качестве конечного пункта можно выбрать любой сайт.
Методы трассировки в traceroute
У разных методов есть специфичные для них опции — они зависят от используемого протокола. Эти опции метода можно указать с помощью опции -O. Несколько опций разделяются запятой (или используйте в командной строке несколько -O). Каждый метод может иметь свои собственные особенные опции или может не иметь из вовсе.
Метод по умолчанию — используется если не указан другой, либо можно указать явно опцией -M default. Это традиционный, древний метод трассировки маршрута.
Пакетами зондирования являются udp датаграммы с так называемым «unlikely» (маловероятным) портом назначения. Первым «unlikely» портом зондирования является 33434 затем для каждого следующего зонда он увеличивается на единицу. Поскольку ожидается, что порт не используется, то хост назначения обычно возвращает конечный ответ «icmp unreach port». Номер порта можно поменять (об этом ниже).
Данный метод могут выполнять непривилегированные пользователи.
Этот метод разрешён для непривилегированных пользователей.
У этого метода имеется две специфичные опции
Использовать только сырые сокеты (традиционный способ).
По умолчанию этот методы пробуется первым (по причинам совместимости), затем новые сокеты dgram icmp в качестве резервного варианта.
Использовать только сокеты dgram icmp
Хорошо известный современный метод, предназначен для обхода файерволов. Для использования укажите опцию -M tcp либо короткий вариант -T. Использует постоянный порт назначения (по умолчанию это 80, http).
Этот метод использует хорошо известную «технику полуоткрытых соединений», благодаря которой приложения на компьютере назначения вовсе не видят наши пакеты для исследования (зонды). Обычно отправляется tcp syn. Для портов, которые не прослушиваются, мы получаем ответ tcp reset — и всё готово. Для активно прослушиваемых портов мы получаем tcp syn+ack, но отвечаем на это tcp reset (вместо ожидаемого tcp ack), таким образом удалённая tcp сессия сбрасывается, а прослушивающее порт приложение даже не получает уведомление.
Для метода tcp имеется несколько опций:
Устанавливает определённые tcp флаги для пакета зондирования, можно использовать любую их комбинацию.
Устанавливает поле флагов в tcp заголовке на точное ЧИСЛО.
Отправляет пакет syn с флагами tcp ECE и CWR (для Explicit Congestion Notification, rfc3168).
Использует соответствующую опцию tcp заголовка в исходящем пакете зондирвоания.
Использует настройки текущей sysctl (/proc/sys/net/*) для опций tcp заголовка для вышеприведённых опций и ecn. Всегда установлено на значение по умолчанию, если ничего не указано.
Использовать значение ЧИСЛО для опции tcp заголовка maxseg (когда syn).
Печатать tcp флаги финальных tcp ответов когда достигнут целевой хост. Помогает определить, прослушивает ли приложение порт и другие полезные вещи.
Опциями по умолчанию являются syn,sysctl.
Начальная реализация tcp метода просто использующего вызов connect(2), который открывает полную tcp сессию. Не рекомендуется для нормального использование, поскольку всегда влияет на приложение прослушивающее порт на хосте назначения.
Для задействования этого метода используйте опцию -M tcpconn.
Использует udp датаграммы с постоянным портом назначения (по умолчанию 53, dns). Также предназначена для обхода файерволов. Для использования этого метода трассировки укажите опцию -M udp или сокращённый вариант -U.
Обратите внимание, что в отличие от tcp метода, соответствующее приложение на хосте назначения всегда получает наши зонды (со случайными данными) что может смутить его. В большинстве случаев оно не ответит на наши пакеты, поэтому мы никогда не увидим последний хоп (узел) в пути трассировки. (К счастью, кажется что по крайней мере DNS серверы присылают какой-то ответ).
Этот метод не требует повышенных прав.
Использует для зондов датаграммы udplite (с постоянным портом назначения, по умолчанию 53). Для активации этого метода укажите опцию -M udplite или -UL.
Устанавливает покрытие отправки udplite на ЧИСЛО.
Использует для зондов пакеты DCCP Request (rfc4340). Этот метод можно задействовать опциями -M dccp или -D.
Устанавливает сервисный код DCCP на ЧИСЛО (по умолчанию это 1885957735).
Этим методом отправляются сырые пакеты указанного протокола. Для вызова этого метода используйте опцию -M raw или -P ПРОТОКОЛ.
Не используется специфичные для транспортных протоколов заголовки, только заголовки IP протокола.
Подразумевает -N 1 -w 5 .
Использовать IP ПРОТОКОЛ (по умолчанию 253).
Список протоколов, инкапсулируемых в IP на Википедии, в первоисточнике.
Как ускорить трассировку. Как отключить обратное преобразование IP в имена хостов при трассировке
Чуть выше описаны принципы работы трассировки — отправка пакетов с постоянно увеличивающимся сроком жизни. На самом деле — все пакеты (с TTL 1, с TTL 2, с TTL 3 и т. д.) можно отправить одновременно. И именно так это и происходит — по умолчанию отправляются 16 пакетов за раз (количество можно изменить опцией -N). Это делается для ускорения трассировки.
Поэтому в действительности трассировка выполняется очень быстро. Те 1-2 секунды, которые как нам кажется определяются узлы сети, на самом деле тратятся на получение имён хостов для IP. С помощью опции -n это можно отключить.
Используя программу time можно замерить время выполнения программы с опцией -n и без неё:
time traceroute -n google.com

time traceroute google.com
Время выполнения самой трассировки 0,206s, а время трассировка+определение имени хостов получилось 2,360s, то есть в 10 раз дольше.
Трассировка IPv6
По умолчанию программа получает IP для указанного для трассировки хоста и на основе полученного IP адреса автоматически определяет, какой протокол используется: IPv4 или IPv6. Если получены IP для обоих протоколов, то по умолчанию используется IPv4.
С помощью опций -4 и -6 можно явно указать желаемый протокол.
traceroute -6 -n google.com

Сеть, из которой делается трассировка с опцией -6, должна поддерживать IPv6, иначе ничего не получится.
Изменение порта
Поменять порт назначения можно с помощью опции:
-p ПОРТ, —port=ПОРТ
Для UDP трассировки указанный порт будет использовать в качестве базового (номер порта назначения будет увеличиваться для каждого зонда).
Для ICMP трассировки указанное число будет использоваться в качестве начальное значение ICMP последовательности (также увеличенное для каждого зонда).
Для TCP и других указанный порт будет использоваться в качестве постоянного порта назначения к которому нужно подключиться.
Обычно это не требуется, но также можно указать и порт источника, это делается опцией:
Эта опция подразумевает -N 1 -w 5 . Обычно исходные порты (если это примениму к выбранному методу трассировки) выбираются системой.
Как начать трассировку с определённого узла. Как уменьшить или увеличить число узлов для трассировки
С помощью опции -m можно указать максимальное число хопов для трассировки, по умолчанию установлено на 30.
Выбор интерфейса для трассировки
По умолчанию пакеты отправляются с того интерфейса, для которого настроен маршрут по умолчанию. Но следующей опцией можно сделать так, что traceroute будет отправлять пакеты с указанного в строке команды интерфейса:
-i ИНТЕРФЕЙС, —interface=ИНТЕРФЕЙС
Как показать к какой автономной системе принадлежит узел при трассировке
Каждый IP адрес привязан к Автономной системе (AS). С помощью опции -A вы можете включить запрос номера AS для каждого узла по пути трассировки, например:
sudo traceroute -A -n suip.biz

Как можно видеть, автономная система не определена для локальных IP 10.*.*.* — что вполне логично, так как эти адреса никому не назначены. Что касается адреса 192.168.1.1 и автономной единицы AS198949, то это какая-то ошибка.
Как можно увидеть из вывода предыдущей команды, первые четыре узла имеют локальный IP адреса. Узлы с 5 по 9 принадлежат одной автономной системе AS38082/AS7470. Предпоследние два узла принадлежат одной автономной системе AS12389 и последние два узла также принадлежат одной автономной системе AS48666 — интернет-провайдеру, на котором размещён сайт suip.biz.
Опции traceroute
У команды traceroute имеются и другие опции которые могут вам пригодиться. Вы можете ознакомиться с ними в справочной странице данной программы:
Трассировка сети в Nmap
В Nmap для трассировки есть опция —traceroute, пример трассировки до сайта suip.biz:
sudo nmap —traceroute suip.biz
Если вы не хотите сканировать порты, а хотите просто выполнить трассировку, то добавьте опцию -sn:
sudo nmap —traceroute -sn suip.biz
Кстати, это значительно сократить время до вывода результатов.
Бывает, что выводимые при трассировке программой nmap данные не являются полными. В этом случае попробуйте дополнительно добавить опцию -PE:
sudo nmap —traceroute -sn -PE suip.biz
В Nmap можно установить опции в заголовке пакета IP протокола. Среди этих опций имеется такая, которая сохраняет в заголовке пакета пройденный маршрут. Но у этого варианта есть ряд ограничений:
- всего 9 слотов
- некоторые устройства игнорируют эту опцию
- некоторые устройства вообще не пропускают пакеты с установленной этой опцией
Тем не менее иногда это работает, пример команды:
sudo nmap -sn —ip-options «R» -n —packet-trace suip.biz
Обратите внимание на строку:
В ней перечислены первые 9 узлов через которые прошёл пакет.
Lft
Программа lft имеет много опций трассировки и из описание следует, что программа пробует несколько комбинаций и автоматически выбирает лучшее решение. Честно говоря, я этого не заметил: результаты с ручным перебором разных методов трассировки позволяют подобрать наилучший вариант.
Программа хорошо документирована и при желании может использоваться в качестве альтернативы traceroute.
Расширенная диагностика с помощью программы MTR
Трассирование посредством программы MTR дает более полное представление о проблеме, особенно когда она плавающая, поскольку выполняется непрерывно. То есть, если утилиты tracert / traceroute отправляют определенное количество пакетов, то MTR будет проводить диагностику столько времени, сколько потребуется.
- Распакуйте архив и запустите файл WinMTR.exe.
- Нажмите «Start».
Теперь подождите около минуты, пока данные будут собраны. Если проблема непостоянная — дождитесь, пока она появится, соберите данные около минуты и остановите диагностику. Скриншот с результатом отправьте в поддержку.
Для Linux есть аналог программы MTR, его можно установить из пакетного менеджера операционной системы.
Tracepath
Программа tracepath схожа с traceroute, но использует только одну технику трассировки: UDP, для которой можно указать свой порт. Из-за выбранной техники, программа не требует повышенных привилегий.

В первой колонке рядом с номера узла может стоять знак вопроса — он означает, что в присланном ответе отсутствует номер TTL и программа пытается его предположить.
Вместо звёздочек, если IP не узнан, пишется no reply.
В последнем столбце может быть цифра и слово asymm. Слово asymm означает, что маршрут является ассиметричным — то есть от нас до этого узла пакет идёт по одному пути, а от этого узла к нам пакет проходит по другому пути. Цифра означает возможное количество хопов от этого узла до нас — но информация не является надёжной.
У tracepath не очень много опций:
Использовать только IPv4
Использовать только IPv6
Не печатать имя хоста, а печатать цифровое значение IP.
Печатать и имя хоста и IP адрес в цифровом виде.
Установить начальную длину пакета вместо 65535 для tracepath или 128000 для tracepath6.
Установить максимальное число хопов (или максимум TTL) — то есть количество максимально «простукиваемых» узлов. По умолчанию 30.
Установить начальный порт назначения.
Связанные статьи
Имеется несколько видов трассировки. В основном они различаются отправляемым пакетом — это может быть пакет транспортного протокола TCP или UDP, либо протокола межсетевых управляющих сообщений ICMP, либо сырой IP пакет.
Иногда из-за файерволов или настройки сетевых узлов не удаётся получить IP адрес узла. В этом случае можно попробовать использовать другой метод, который может дать результаты.
Это можно проиллюстрировать на следующих двух примерах трассировки до одного и того же хоста:

Звёздочки говорят о том, что мы не узнали часть узлов.
sudo traceroute -I hackware.ru

Благодаря изменению метода трассировки удалось узнать все промежуточные узлы. Другие методы могут дать отличные от показанных результаты.
Некоторые программы позволяют выбирать метод трассировки, менять номер порта, а также устанавливать значения некоторых полей в заголовке пакета.
Как читать результаты Tracert
После выполнения команды Tracert или Traceroute система представит результаты в виде множества строк. Отчёт может несколько отличаться в зависимости от вашей операционной системы, но обычно он содержит одну и ту же информацию.
Стандартные результаты Tracert или Traceroute включают в себя несколько строк, описывающих каждый переход, который проходит пакет для достижения хоста назначения. Каждая строка разделена на столбцы с различной информацией.
Давайте рассмотрим каждый столбец и его детали.
Число хопов – первый столбец количество сделанных “прыжков”.
Если время трассировки истекает на определенном узле, это может означать, что в данном месте возникла проблема или что маршрут неверен, что не позволяет пакету достичь пункта назначения. В результатах это представлено как:
Заключение
Трассировка может быть полезной для изучения структуры сети (например, сети вашего Интернет-провайдера), а также для исправления проблем с передачей данных (например, для определения узла, дальше которого пакеты не проходят).
Самой богатой по функционалу для трассировки сети является программа traceroute. Другие программы также или содержат интересные опции или могут использоваться в качестве альтернатив, если ничего другое не доступно или если запуск traceroute прав суперпользователя.
Команда Traceroute и Tracert – это полезный и простой в использовании инструмент диагностики сети. Как правило, это ещё и первый способ устранения неполадок с подключением.
В этой статье вы узнали, чем эта утилита может отличаться в зависимости от вашей операционной системы, как использовать команду и читать полученные результаты.

