Traceroute (Linux, Windows, Mac): использование утилиты для работы

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

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

Предположим, вы запустили на своем компьютере браузер и ввели адрес веб-ресурса, содержимое которого собираетесь просмотреть. Браузер посылает запрос, который идет от маршрутизатора к маршрутизатору и так до тех пор, пока он не достигнет узла назначения. На сленге системных администраторов каждый маршрутизатор Traceroute (Linux, Windows, Mac): использование утилиты для работыTraceroute (Linux, Windows, Mac): использование утилиты для работыили любой промежуточный пункт назначения называется «хопом» Traceroute (Linux, Windows, Mac): использование утилиты для работыTraceroute (Linux, Windows, Mac): использование утилиты для работыот слова hop — прыжок.Такая утилита-трассировщик работает только в одном направлении — от источника к получателю, обратная трассировка может не совпадать с прямой и идти совершенно по иному маршруту, это нормально и не должно удивлять. Кроме того, ICMP-ответ может прийти с опозданием или вообще потеряться Traceroute (Linux, Windows, Mac): использование утилиты для работыTraceroute (Linux, Windows, Mac): использование утилиты для работыпоэтому в настройках утилиты как правило указывается несколько попыток.

В дополнение к этому на промежуточных узлах стоит ограничение по количеству ответов на ICMP-запросы. По этой причине Tracert является неточным инструментом для выявления неполадок сети.

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

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

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

tracert [-d] [-h глубина трассировки] [-j перечень узлов] [-w таймаут] [-R] [-S адрес источника эхо-запроса] [-4] [-6] конечное_Имя

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

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

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

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

Запуск в Linux

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

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

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

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

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

tracepath — утилита, которая отслеживает путь передачи пакета от источника к пункту назначения, может использоваться как альтернатива traceroute для IPv6.

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

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

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

Windows

В «окнах» данную функцию выполняет системный модуль или утилита «Tracert». Как вы понимаете она расположена в папке «System32», как и другие подобные микропрограммы. Для запуска обычно нужно использовать командную строку. Утилита спокойно работает как с доменными именами, так и с IP адресами, в том числе IPv4 и IPv6.

:/>  Наши лаборатории

А теперь давайте попробуем её использоваться. Для этого вам нужно запустить командную строку. В Windows 7 переходим в «Пуск» – «Все программы» – открываем папку «Стандартные», а после этого нажимаем правой кнопкой по командной строке и открываем с правами администратора.

ПРИМЕЧАНИЕ! Также можно открыть через R и команду «CMD».

В Windows 10 достаточно нажать правой кнопкой по «Пуску» и далее выбрать консоль с админ правами.

Далее все делается достаточно просто – сначала прописываем команду «tracert», а потом через пробел выписываем IP адрес сервера. Я в качестве примера использовал один известный DNS серверов:

tracert 8.8.8.8

Плюс ещё в том, что можно использовать не только IP, но также и доменное имя, которое состоит из букв. Давайте для примера проведем тест с Яндексом:

Бонус!

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

Для ОС семейства Windows такую оптимизацию проводит утилита Winmtr. Она не нуждается в установке и готова к использованию сразу после распаковки из архива.

Как работает tracert и traceroute |

Применение данных утил позволяет проследить маршрут до удаленного хоста, определить время круговой задержки (RTT-round-trip delay time), IP-адрес и в некоторых случаях доменное имя промежуточного маршрутизатора. В основе их работы лежат ICMP-сообщения об ошибках.

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

Значение времени жизни (TTL) первого отправляемого пакета устанавливается равным 1. Когда протокол IP первого маршрутизатора принимает этот пакет, то он в соответствии со своим алгоритмом уменьшает TTL на единицу и получает 0. Маршрутизатор отбрасывает пакет с нулевым временем жизни и возвращает узлу-источнику ICMP-сообщение об ошибке истечения времени дейтаграммы (ICMP-сообщение тип 11 код 0). Это сообщение содержит имя маршрутизатора и его IP-адрес. Когда это ICMP-сообщение прибывает к отправителю, тот по значению таймера узнает время оборота пакета(RTT), а также (из ICMP-сообщения) имя и IP-адрес промежуточного маршрутизатора. Затем посылается следующий IP-пакет, но теперь со значением TTL равным 2. Этот пакет уже доходит до второго маршрутизатора, но опять там «умирает» о чем аналогичным, же образом сообщается узлу отправителю. И так до тех пор, пока не достигнет конечного узла. На основании данных ответов строится трассировка. Например:

Трассировка маршрута к rt.ru [109.207.14.4] с максимальным числом прыжков 30:
1 3 ms 1 ms 2 ms net235-72.ufa.ertelecom.ru [212.33.234.72]
2 2 ms 2 ms 1 ms bb2.bsr02.ufa.ertelecom.ru [212.33.234.109]
3 2 ms 1 ms 1 ms lag-10-438.bbr01.samara.ertelecom.ru [212.33.233.111]
4 18 ms 18 ms 18 ms 46.61.227.202
5 19 ms 19 ms 18 ms 46.61.227.201
6 19 ms 19 ms 19 ms so-0-0-0.m10-ar2.msk.ip.rostelecom.ru [87.226.139.74]
7 19 ms 19 ms 19 ms 109.207.0.226
8 19 ms 19 ms 19 ms www.rt.ru [109.207.14.4]
Трассировка завершена.

Из данной трассы мы видим, что хост www.rt.ru доступен с числом прыжков(хопов) — 8, его ip 109.207.14.4, и время круговой задержки до данного ресурса составляет 19ms.

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

Принцип идентичный, за одним исключением. Утила по умолчанию, посылает в сторону заданного хоста UDP-датаграммы на какой-то произвольный порт, обычно — на «высокий», скорее всего не занятый другим сервисом (например 12500, 30678) или на зарезервированный (например 0), в свежих версиях порт по умолчанию — 33434. Сначала посылается серия из 3-х таких пакетов с TTL=1, по приходу ответов замеряется время прохождения и  определяется доменное имя транзитного узла. Затем, как сказано выше, посылаются очередные серии пакетов с TTL=2 и т.д. В конце мы получаем от конечного хоста отклик «Порт недоступен» (PORT_UNREACHABLE), что означает завершение трассировки.

:/>  Определения типов хэшей при помощи скрипта hash-Identifier для расшифровки паролей

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

traceroute to rt.ru (109.207.14.4), 30 hops max, 40 byte packets
 1 * * *
 2 bb1.bsr02.ufa.ertelecom.ru (212.33.234.101) 13.059 ms 13.222 ms 13.597 ms
 3 lag-10-438.bbr01.samara.ertelecom.ru (212.33.233.111) 0.360 ms 0.382 ms 0.612 ms
 4 46.61.227.202 (46.61.227.202) 17.484 ms 17.511 ms 17.512 ms
 5 46.61.227.201 (46.61.227.201) 17.803 ms 17.791 ms 17.778 ms
 6 so-0-0-0.m10-ar2.msk.ip.rostelecom.ru (87.226.139.74) 18.179 ms 18.211 ms 17.988 ms
 7 109.207.0.226 (109.207.0.226) 18.213 ms 18.697 ms 18.288 ms
 8 * * *
^C

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

$ traceroute -I rt.ru
traceroute to rt.ru (109.207.14.4), 30 hops max, 40 byte packets
 1 net233-86.ufa.ertelecom.ru (212.33.233.86) 162.924 ms 163.654 ms 163.666 ms
 2 bb1.bsr02.ufa.ertelecom.ru (212.33.234.101) 8.095 ms 38.117 ms 50.262 ms
 3 lag-10-438.bbr01.samara.ertelecom.ru (212.33.233.111) 0.382 ms 0.407 ms 0.417 ms
 4 46.61.227.202 (46.61.227.202) 17.592 ms 17.623 ms 17.613 ms
 5 46.61.227.201 (46.61.227.201) 17.597 ms 17.609 ms 17.613 ms
 6 so-0-0-0.m10-ar2.msk.ip.rostelecom.ru (87.226.139.74) 17.943 ms 17.924 ms 18.001 ms
 7 109.207.0.226 (109.207.0.226) 18.092 ms 18.026 ms 18.010 ms
 8 www.rt.ru (109.207.14.4) 18.205 ms 18.301 ms 18.308 ms

Заключение.

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

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

Как вы знаете, приложение запускается и выполняется в командной строке Windows. Чаще всего оно используется без дополнительных параметров. Команда трассировки маршрута к нужному веб-ресурсу выглядит так:

На чьей стороне ошибка?

Итак, обрыв повторился. Но на этот раз запущенный пинг промежуточных узлов поможет «обличить» виновника. Тут все просто – с какого узла вам начало выдавать «Превышен интервал ожидания», тот и слабое звено.

Кто виноват – ясно, теперь нужно понять, что делать в конкретных ситуациях.

1. Последний узел. Если последний узел сначала пинговался нормально (некоторые Windows-машины вообще не отвечают на пинг, это задается в настройках брандмауэра)…

…а после обрыва начал показывать «Превышен интервал ожидания», обрыв происходит на вашем сервере.

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

2. Любые узлы, кроме последнего. В этом случае обращайтесь одновременно в техподдержку и облачного, и интернет-провайдера. При этом обязательно укажите, как изначально выглядела трассировка маршрута, и составьте перечень узлов с указанием, на каких из них пинг во время обрыва прервался, а на каких нет. Будьте внимательны, это важная информация, не ошибитесь.

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

Параметры tracert

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

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

:/>  Какое оптимальное количество мегапикселей должно быть в фотоаппарате

Пинг промежуточных узлов

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

Теперь по порядку.

1. Запустите команду cmd: Win R > пропишите cmd > ОК.

2. В открывшейся командной строке введите ping -t Х.Х.Х.Х (где Х.Х.Х.Х – это адрес одного из промежуточных узлов, которые мы узнали при трассировке) и нажмите Enter.

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

Полезно!Если вам нужно постоянно отслеживать качество соединения, для Windows можно воспользоваться удобной программой PingPlotter.

Итак, пингуем – в десяти отдельных окнах командной строки вводим команды с IP-адресами узлов, которые мы выявили при трассировке. В нашем случае будут такие команды:

ping -t 10.1.1.1ping -t 193.151.89.254ping -t 85.195.75.129ping -t 213.248.79.29ping -t 62.115.139.50ping -t 62.115.120.8ping -t 62.115.153.215ping -t 108.170.251.129ping -t 66.249.94.135ping -t 216.58.208.46

Если в каком-нибудь из окон вы с первых же секунд видите «Превышен интервал ожидания», не спешите кричать: «Попался!». Если следующие узлы пингуются нормально, значит, этот просто закрыт настройками. В нашем случае, например, предпоследний узел (66.249.94.135) сразу же говорит, что интервал превышен, но с пингом десятого узла никаких проблем нет.

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

Расшифровка логов трассировки winmtr

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

Давайте для начала разберемся с расшифровкой пунктов программы, они подчеркнуты на изображении красными линиями:

Расшифровка логов трассировки WinMTR

Host — доменное имя сайта или IP-адрес ресурса;

Hostname — IP-адрес или доменное имя маршрутизатора;

Nr — номер маршрутизатора;

Loss % — количество потерянных ответов в процентном соотношении от определенного маршрутизатора;

Sent — количество запросов, которые были отправлены определенному маршрутизатору;

Recv — количество полученных ответов от маршрутизатора;

Best — наименьшее время задержки;

Avrg — среднее время задержки;

Worst — наибольшее время задержки;

Last — время задержки пакета, который бил получен самым последним.

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

С уважением, Артём Санников

Сайт: msconfig.ru

Метки: WinMTR, Диагностика, Сеть, Трассировка.

Трассировка маршрута

Во время трассировки происходит отправка пакетов данных между локальным компьютером и сервером. Это помогает проследить путь прохождения запроса к серверу и определить, на каком этапе происходит обрыв. Выполнить трассировку довольно легко.

1. Запустите команду cmd: Win R > пропишите cmd > ОК.

2. В открывшейся командной строке введите tracert Х.Х.Х.Х (где Х.Х.Х.Х – это IP-адрес сервера или домен) и нажмите Enter.

Заключение

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

Оставьте комментарий

Adblock
detector