Что такое трассировка. для чего нужна трассировка узлов
Трассировка маршрута пакета до сетевого хоста показывает все промежуточные узлы, через которые проходит пакет, пока доберётся до указанной цели. То есть с помощью трассировки можно узнать, по каким узлам, с какими IP адресами, передаётся пакет прежде чем быть доставленным до точки назначения.
Трассировка может применяться для выявления связанных с работой компьютерной сети проблем, а также для исследования сети (определения структуры сети, поиска промежуточных сетевых узлов).
Что такое трассировка для чего нужна и как сделать трассировку сайта
Далеко не секрет, что любой сайт размещается на определенном сервере и вводя в адресной строке установленного браузера адрес необходимого сайта, а затем нажимая кнопку «перейти», пользователь отправляет запрос на сервер. По пути до сайта, запрос проходит через промежуточные узлы связи. Если они функционируют нормально, то происходит загрузка ресурса в браузере.
Когда загрузка сайта не происходит, значит, отправленный запрос не смог дойти по причине проблем на одном из узлов связи. Понять, какой участок канала связи вызывает потерю запроса, поможет осуществление трассировки маршрута.
Дальше я расскажу, как сделать трассировку маршрута в ОС Windows. Для этого нам понадобится воспользоваться служебной программой Tracert, которая, аналогично программе ping, запускается командной строкой. Чтоб в нее попасть, можно использовать один из трех предлагаемых мной способов:
1. Жмем кнопку «Пуск» и выбираем далее «Выполнить», а в поле с текстом «Открыть» набираем на клавиатуре cmd, после чего — «ОК» либо используем клавишу Enter.
2. Воспользоваться комбинацией клавиш вида Win R, которая открывает окно как в первом способе. Дальше все действия одинаковы.
3. Жмем «Пуск», далее «Все программы» (либо просто «Программы» в более старых версий ОС), переходим к пункту «Стандартные» и выбираем «Командная строка».
Откроется окошко с черным фоном, где нужно набрать команду в виде tracert название_сайта (в качестве примера: tracert yahoo.com) и подтверждаем ввод клавишей Enter. Если известен IP-адрес ресурса, то вместо названия домена, можно вводить его. Вводя адрес, устанавливается маршрут к конечному узлу. Окно командной строки выводит результаты сделанной трассировки в реальном времени: IP-адреса и названия промежуточных узлов, а также время отклика, отображаемое в миллисекундах.
В случае, если имена каких-либо промежуточных узлов не интересны, то трассировку маршрута необходимо выполнять с добавлением параметра –d, что позволяет скрыть имена маршрутизаторов. Вот так выглядит пример запроса: tracert -d yahoo.com.
Время отклика характеризует загруженность выделенного канала. При большом времени отклика, загрузка сайта будет идти, но весьма трудно. Но если появляется надпись с предупреждением о превышении интервала ожидания запроса, то на конкретном узле наблюдается потеря данных. Следовательно, этот узел – проблемный.
Таким образом, трассировка маршрута позволяет определить проблемы на узлах. Если поступление данных происходит нормально, а теряются они уже в узле назначения, то проблема именно с сайтом. При обрыве трассировки на середине маршрута – проблема с промежуточным маршрутизатором. Если пакеты теряются в сети провайдера, которым вы пользуетесь, то такая проблема решается уже непосредственно с ним.
Default
Метод по умолчанию — используется если не указан другой, либо можно указать явно опцией -M default. Это традиционный, древний метод трассировки маршрута.
Пакетами зондирования являются udp датаграммы с так называемым “unlikely” (маловероятным) портом назначения. Первым “unlikely” портом зондирования является 33434 затем для каждого следующего зонда он увеличивается на единицу. Поскольку ожидается, что порт не используется, то хост назначения обычно возвращает конечный ответ “icmp unreach port”. Номер порта можно поменять (об этом ниже).
Данный метод могут выполнять непривилегированные пользователи.
Mtr и mtr-gtk (консольная и графическая версия)
Программа mtr совмещает в себе функциональность программа traceroute и ping в едином инструменте диагностики сети. То есть эта программа показывает маршрут до указанного узла и непрерывно пингует каждые хоп и при этом собирает общую статистику потерь — на основе этих данных можно определить проблемный узел, на котором теряются пакеты.
Пример запуска:
mtr suip.biz
Пример вывода:
Данная программа поддерживает несколько методов трассировки.
Также она поддерживает разные форматы вывода для сохранения результатов, например, опция -C, –csv для сохранения результатов в формате CSV (обратите внимание, что на самом в качестве разделителя используется не запятая, а точка с запятой), а также опция -j, –json для сохранения в формате вывода JSON.
С помощью опции -n, –no-dns можно отключить преобразование IP в имена хостов.
Опцией -b, –show-ips можно включить отображение и имён хостов, и IP адресов.
Опцией -y n, –ipinfo n можно настроить вывод дополнительной информации о каждом IP хопа. В качестве n нужно указать цифру, которая означает:
0 Показывать номер автономной системы (AS) (эквивалент -z) 1 Показывать префикс IP 2 Показать код страны на основе AS 3 Показать RIR (ripencc, arin, ...) 4 Показать дату выделения IP префикса
У меня при любых значениях -y всегда показывается только номер автономной системы. К счастью, между различными видами можно переключаться по кругу используя кнопку y:
Опция -z, –aslookup отображает номер Автономной Системы (AS) для каждого хопа.
Опция -f NUM используется для установки номера первого TTL. По умолчанию равно 1.
Опция -m указывать максимальное число хопов (максимальное значение time-to-live) которое будет обрабатываться при трассировке. По умолчанию равно 30.
Опция -U ЧИСЛО устанавливает максимум незнакомых хостов. По умолчанию равно 5. Видимо, после достижения этого значения дальнейшая трассировка будет остановлена.
Tcpconn
Начальная реализация tcp метода просто использующего вызов connect(2), который открывает полную tcp сессию. Не рекомендуется для нормального использование, поскольку всегда влияет на приложение прослушивающее порт на хосте назначения.
Для задействования этого метода используйте опцию -M tcpconn.
Tcptraceroute
В программе tcptraceroute используются пакеты только одного протокола TCP. В заголовках этих пакетов опциями можно установить разные флаги. В программе traceroute также можно устанавливать флаги протокола TCP, причём возможностей для настройки больше.
Tracepath
Программа tracepath схожа с traceroute, но использует только одну технику трассировки: UDP, для которой можно указать свой порт. Из-за выбранной техники, программа не требует повышенных привилегий.
Пример запуска:
tracepath suip.biz
Пример вывода:
1?: [LOCALHOST] pmtu 1500 1: _gateway 1.247ms 1: _gateway 1.031ms 2: 10.20.48.1 9.097ms 3: 10.246.245.241 14.034ms 4: 10.185.252.194 14.379ms 5: 10.185.252.29 11.530ms asymm 4 6: 58-97-121-237.static.asianet.co.th 13.849ms asymm 5 7: 171-102-247-184.static.asianet.co.th 15.737ms asymm 6 8: 171-102-250-1.static.asianet.co.th 64.185ms asymm 7 9: 171-102-254-232.static.asianet.co.th 14.962ms asymm 8 10: 171-102-250-156.static.asianet.co.th 13.509ms asymm 9 11: 122.155.226.89 18.793ms 12: 61.19.9.66 58.829ms 13: no reply 14: 87.226.181.87 399.972ms asymm 23 15: 81.177.108.86 263.969ms asymm 14 16: j37-ae9-3001.marosnet.net 307.140ms 17: suip.biz 304.644ms reached Resume: pmtu 1500 hops 17 back 17
В первой колонке рядом с номера узла может стоять знак вопроса — он означает, что в присланном ответе отсутствует номер TTL и программа пытается его предположить.
Вместо звёздочек, если IP не узнан, пишется no reply.
В последнем столбце может быть цифра и слово asymm. Слово asymm означает, что маршрут является ассиметричным — то есть от нас до этого узла пакет идёт по одному пути, а от этого узла к нам пакет проходит по другому пути. Цифра означает возможное количество хопов от этого узла до нас — но информация не является надёжной.
У tracepath не очень много опций:
Использовать только IPv4
Использовать только IPv6
Не печатать имя хоста, а печатать цифровое значение IP.
Печатать и имя хоста и IP адрес в цифровом виде.
Установить начальную длину пакета вместо 65535 для tracepath или 128000 для tracepath6.
Установить максимальное число хопов (или максимум TTL) — то есть количество максимально «простукиваемых» узлов. По умолчанию 30.
Установить начальный порт назначения.
Udplite
Использует для зондов датаграммы udplite (с постоянным портом назначения, по умолчанию 53). Для активации этого метода укажите опцию -M udplite или -UL.
Этот метод не требует повышенных прав.
Опции:
coverage=ЧИСЛО
Устанавливает покрытие отправки udplite на ЧИСЛО.
Бонус!
Ну, а чтобы вам было совсем уж комфортно, мы тут подобрали утилиты, с которыми можно делать трассировку и пинг промежуточных узлов одним простым движением без запуска пятнадцати различных окон.
Для ОС семейства Windows такую оптимизацию проводит утилита Winmtr. Она не нуждается в установке и готова к использованию сразу после распаковки из архива.
Виды трассировки
Имеется несколько видов трассировки. В основном они различаются отправляемым пакетом — это может быть пакет транспортного протокола TCP или UDP, либо протокола межсетевых управляющих сообщений ICMP, либо сырой IP пакет.
Иногда из-за файерволов или настройки сетевых узлов не удаётся получить IP адрес узла. В этом случае можно попробовать использовать другой метод, который может дать результаты.
Это можно проиллюстрировать на следующих двух примерах трассировки до одного и того же хоста:
Выбор интерфейса для трассировки
По умолчанию пакеты отправляются с того интерфейса, для которого настроен маршрут по умолчанию. Но следующей опцией можно сделать так, что traceroute будет отправлять пакеты с указанного в строке команды интерфейса:
-i ИНТЕРФЕЙС, --interface=ИНТЕРФЕЙС
Изменение порта
Поменять порт назначения можно с помощью опции:
-p ПОРТ, --port=ПОРТ
Для UDP трассировки указанный порт будет использовать в качестве базового (номер порта назначения будет увеличиваться для каждого зонда).
Для ICMP трассировки указанное число будет использоваться в качестве начальное значение ICMP последовательности (также увеличенное для каждого зонда).
Для TCP и других указанный порт будет использоваться в качестве постоянного порта назначения к которому нужно подключиться.
Обычно это не требуется, но также можно указать и порт источника, это делается опцией:
--sport=ПОРТ
Эта опция подразумевает -N 1 -w 5 . Обычно исходные порты (если это примениму к выбранному методу трассировки) выбираются системой.
Как начать трассировку с определённого узла. как уменьшить или увеличить число узлов для трассировки
С помощью опции -f можно указать номер узла, с которого следует начать трассировку. По умолчание значение равно 1.
С помощью опции -m можно указать максимальное число хопов для трассировки, по умолчанию установлено на 30.
Как показать к какой автономной системе принадлежит узел при трассировке
Каждый IP адрес привязан к Автономной системе (AS). С помощью опции -A вы можете включить запрос номера AS для каждого узла по пути трассировки, например:
sudo traceroute -A -n suip.biz
Пример вывода:
1 192.168.1.1 [AS198949] 1.102 ms 1.708 ms 2.720 ms 2 10.20.48.1 [*] 7.121 ms 7.168 ms 11.242 ms 3 10.246.245.241 [*] 15.368 ms 15.812 ms 15.788 ms 4 10.185.252.29 [*] 16.243 ms 16.213 ms 16.181 ms 5 58.97.121.237 [AS38082/AS7470] 16.802 ms 16.776 ms 16.976 ms 6 171.102.247.244 [AS38082/AS7470] 17.405 ms 171.102.247.114 [AS38082/AS7470] 16.320 ms 171.102.247.74 [AS38082/AS7470] 21.324 ms 7 171.102.250.1 [AS38082/AS7470] 20.946 ms 20.521 ms 21.542 ms 8 171.102.254.232 [AS38082/AS7470] 21.896 ms 22.789 ms 23.755 ms 9 171.102.250.156 [AS38082/AS7470] 23.431 ms 23.036 ms 24.393 ms 10 122.155.224.197 [as4651] 26.448 ms 122.155.226.85 [as4651] 25.531 ms 122.155.226.89 [as4651] 26.770 ms 11 61.19.9.66 [AS4651/AS3549] 76.868 ms 77.298 ms 56.532 ms 12 * * * 13 87.226.181.87 [AS12389] 306.596 ms 306.452 ms 87.226.183.87 [AS12389] 306.332 ms 14 81.177.108.86 [AS12389] 307.373 ms 307.322 ms 307.328 ms 15 94.142.138.40 [AS48666] 307.290 ms 307.268 ms 307.211 ms 16 185.117.153.79 [AS48666] 307.185 ms 307.181 ms 306.512 ms
Как можно видеть, автономная система не определена для локальных IP 10.*.*.* – что вполне логично, так как эти адреса никому не назначены. Что касается адреса 192.168.1.1 и автономной единицы AS198949, то это какая-то ошибка.
Как можно увидеть из вывода предыдущей команды, первые четыре узла имеют локальный IP адреса. Узлы с 5 по 9 принадлежат одной автономной системе AS38082/AS7470. Предпоследние два узла принадлежат одной автономной системе AS12389 и последние два узла также принадлежат одной автономной системе AS48666 — интернет-провайдеру, на котором размещён сайт suip.biz.
Как пользоваться traceroute
Для запуска трассировки достаточно указать IP или сайт, до которого вы хотите проследить маршрут:
traceroute IP_или_ДОМЕН
Если вас интересуют ближайшие узлы (локальная сеть, например), то в качестве конечного пункта можно выбрать любой сайт.
Как сделать трассировку?
инструкции аналогичны, но вместо команды tracert имя_вашего_сайта нужно использовать команду traceroute -I имя_вашего_сайта для использования ICMP ECHO вместо UDP датаграмм.
Как ускорить трассировку. как отключить обратное преобразование ip в имена хостов при трассировке
Чуть выше описаны принципы работы трассировки — отправка пакетов с постоянно увеличивающимся сроком жизни. На самом деле — все пакеты (с TTL 1, с TTL 2, с TTL 3 и т. д.) можно отправить одновременно. И именно так это и происходит — по умолчанию отправляются 16 пакетов за раз (количество можно изменить опцией -N). Это делается для ускорения трассировки.
Поэтому в действительности трассировка выполняется очень быстро. Те 1-2 секунды, которые как нам кажется определяются узлы сети, на самом деле тратятся на получение имён хостов для IP. С помощью опции -n это можно отключить.
Используя программу time можно замерить время выполнения программы с опцией -n и без неё:
На чьей стороне ошибка?
Итак, обрыв повторился. Но на этот раз запущенный пинг промежуточных узлов поможет «обличить» виновника. Тут все просто – с какого узла вам начало выдавать «Превышен интервал ожидания», тот и слабое звено.
Кто виноват – ясно, теперь нужно понять, что делать в конкретных ситуациях.
1. Последний узел. Если последний узел сначала пинговался нормально (некоторые Windows-машины вообще не отвечают на пинг, это задается в настройках брандмауэра)…
…а после обрыва начал показывать «Превышен интервал ожидания», обрыв происходит на вашем сервере.
В этом случае зайдите в панель управления, запустите консоль и войдите в операционную систему, чтобы разобраться, почему сервер не работает. Если окажется, что операционная система зависла, перезагрузите сервер.
2. Любые узлы, кроме последнего. В этом случае обращайтесь одновременно в техподдержку и облачного, и интернет-провайдера. При этом обязательно укажите, как изначально выглядела трассировка маршрута, и составьте перечень узлов с указанием, на каких из них пинг во время обрыва прервался, а на каких нет. Будьте внимательны, это важная информация, не ошибитесь.
3. Все узлы одновременно. Если все окна с пингом начали показывать «Превышен интервал ожидания», проблема в вашем компьютере или сети, к которой он подключен.
Опции traceroute
У команды traceroute имеются и другие опции которые могут вам пригодиться. Вы можете ознакомиться с ними в справочной странице данной программы:
man traceroute
Принципы работы трассировки
Пересылаемые сетевые пакеты состоят из двух областей: заголовки и данные. В заголовках находится разная информация, например, IP адреса пункта отправки и пункта назначения, порты отправки и назначения, тип пакета, контрольная сумма пакета и прочее. Среди полей заголовка, у IP протокола есть такое поле как time to live (TTL) — время жизни пакета.
Это счётчик с числом, которое уменьшается на единицу каждый раз, когда пакет проходит новый узел. Этот счётчик сделан для того, чтобы проблемный пакет (например, при ошибке, повлекшей закольцованный маршрут) не путешествовал по сети бесконечно. То есть любой пакет пройдя определённое количество узлов в конце-концов достигнет точки назначения или будет отброшен одним из узлов сети, когда закончится «время жизни».
Когда счётчик TTL становится равным нулю, очередной шлюз просто не пересылает этот пакет дальше. Но при этом шлюз на тот IP адрес, откуда пришёл пакет с истёкшим временем жизни, отправляет по протоколу ICMP ответ TIME_EXCEEDED (время жизни кончилось).
Так вот, суть трассировки в том, что отправляется один пакет с временем жизни (TTL) установленным на единицу — первый шлюз уменьшает значение на единицу, смотрит, что счётчик стал равен нулю, никуда не отправляет этот пакет, зато нам отправляет ответ, что пакет «умер».
Мы и так знаем, что пакет умер — из этого ответа нас интересует только IP адрес шлюза, где с пакетом случилось это несчастье. Затем отправляется пакет со счётчиком установленным на 2 — пакет проходит первый шлюз (его IP мы уже знаем), но несчастье (счётчик достигает нуля) с ним случается уже на втором шлюзе — мы получаем ICMP ответ с IP этого шлюза. Затем отправляется следующий пакет и т. д., пока не будут определены все узлы до нужного нам сетевого хоста.
Программы для трассировки
Имеется много разных утилит для трассировки, некоторые из них поддерживают различные методы трассировки. Примеры таких программ:
- traceroute
- tracepath
- mtr и mtr-gtk (соответственно, консольная и графическая версия)
- lft
- tcptraceroute
Ещё определять узлы маршрута пакета можно с помощью Nmap (несколькими способами) и даже с помощью ping!
В этой статье я рассмотрю все перечисленные выше программы. Начнём знакомство с traceroute, поскольку в ней реализовано больше всего методов сканирования.
Трассировка ipv6
С помощью опций -4 и -6 можно явно указать желаемый протокол.
Например:
Трассировка в windows
В Windows для трассировки сети имеется встроенная команда tracert. У неё практически отсутствуют опции. Для запуска команды достаточно указать имя удалённого хоста:
tracert suip.biz
Если вам недостаточно такой функциональности, то вы можете установить Nmap в Windows.
Трассировка сайта — webasyst
Трассировка показывает, с какой скоростью информация проходит через серверы в интернете, когда вы открываете сайт в браузере. С помощью трассировки иногда можно определить, почему медленно открывается сайт.
Чтобы выполнить трассировку, откройте терминал командной строки.
Если вы работаете в Windows, выберите в меню «Пуск» пункт «Выполнить», в текстовом поле наберите команду cmd и нажмите «Enter».
В терминале наберите команду для своей операционной системы и нажмите «Enter».
Пример:
tracert webasyst.ru
Пример результата трассировки:
В правом столбце перечислены адреса серверов. Слева — время прохождение информации через них. Если вместо обозначения времени напротив адреса сервера стоит звёздочка (*) или вопросительный знак (?), значит, информация через этот сервер передаётся с затруднениями.
Подробнее о трассировке серверов в «Википедии».
Трассировка может не срабатывать для кириллических доменов. В этом случае используйте Punycode-версию домена. Её можно получить, например, на сайте проверитьинтернет.рф.
Пример команды трассировки сервера сайта проверитьинтернет.рф:
tracert xn--b1agaana9abcjldeyce6n.xn--p1ai
Трассировка сети в 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
Пример вывода:
Заключение
Трассировка может быть полезной для изучения структуры сети (например, сети вашего Интернет-провайдера), а также для исправления проблем с передачей данных (например, для определения узла, дальше которого пакеты не проходят).
Самой богатой по функционалу для трассировки сети является программа traceroute. Другие программы также или содержат интересные опции или могут использоваться в качестве альтернатив, если ничего другое не доступно или если запуск traceroute прав суперпользователя.