что такое трассировка маршрута
Трассировка маршрута сети (команда tracert)
Для диагностики и поиска проблем в сети системные администраторы часто применяют такой удобный инструмент, как трассировка маршрута. Она позволяет определить все узлы (маршрутизаторы, серверы, компьютеры), через которые проходит трафик по дороге к точке назначения. Если связь с каким-либо удалённым хостом рвётся или вообще пропадает, то трассировка маршрута сети позволит быстро найти участок, на котором появились проблемы как в локальной сети, так и в глобальной паутине Интернет.
Для выполнения этой процедуры в каждой современной операционной системе есть соответствующий инструмент.
Трассировка в Windows 10
Для проведения трассировки сети в Windows 10 необходимо нажать комбинацию клавиш Win+R и в окне «Выполнить» набрать команду «cmd». Этим Вы откроете командную строку Виндовс, в которой надо ввести команду:
Для примера возьмём сайт google.ru
Трассировка в Linux
Внимание! Использовать трассировку маршрута в сети для оценки качества последней мили (абонентской линии ADSL,FTTB или PON) нельзя, так как эта системная программа никоим образом оценить качество линии не может и не умеет.
Что такое трассировка маршрута в Windows (tracert) и Linux (traceroute): разбор Бородача
Всем привет! Как вы уже поняли, сегодня я подробно, но максимально кратко попробую рассказать про то – что же такое трассировка маршрута в локальных и глобальных сетях. Также расскажу, в чем отличие измерения трассировки в Windows и Linux. Некоторые думают, что при вводе примерно одинаковых команд инженер будет получать одну и ту же информацию, но на деле это не совсем так – об этом поподробнее чуть ниже. Если у вас будут какие-то вопросы и дополнения, то пишите в комментариях.
Определение
Трассировка – по сути это тестирование, при котором пользователь может увидеть, по какому пути проходит пакет данных до конечного сервера. То есть через какие узлы он проходит и с какой задержкой. Например, при стандартной команде «Ping» вы получите информацию о времени отклика или время отправки и приема пакета. А при трассировке вы увидите через какие IP узлов проходит этот самый пакет до конечного сервера.
Часто данной утилитой пользуются инженеры или системные администраторы, чтобы выявить слабые стороны сети. В общем, штуковина полезная почти для всех. Далее я расскажу, как сделать трассировку до сайта или до выделенного игрового сервера, а также как вообще ею пользоваться.
Windows
В «окнах» данную функцию выполняет системный модуль или утилита «Tracert». Как вы понимаете она расположена в папке «System32», как и другие подобные микропрограммы. Для запуска обычно нужно использовать командную строку. Утилита спокойно работает как с доменными именами, так и с IP адресами, в том числе IPv4 и IPv6. Также плюс в том, что её не нужно устанавливать и она идет в стандартном пакете Windows на всех версиях: XP, 7, 8, 8.2 и 10.
А теперь давайте попробуем её использоваться. Для этого вам нужно запустить командную строку. В Windows 7 переходим в «Пуск» – «Все программы» – открываем папку «Стандартные», а после этого нажимаем правой кнопкой по командной строке и открываем с правами администратора.
ПРИМЕЧАНИЕ! Также можно открыть через + R и команду «CMD».
В Windows 10 достаточно нажать правой кнопкой по «Пуску» и далее выбрать консоль с админ правами.
Далее все делается достаточно просто – сначала прописываем команду «tracert», а потом через пробел выписываем IP адрес сервера. Я в качестве примера использовал один известный DNS серверов:
Плюс ещё в том, что можно использовать не только IP, но также и доменное имя, которое состоит из букв. Давайте для примера проведем тест с Яндексом:
tracert yandex.ru
Тут мы видим вид нескольких шагов. Каждый шаг – это прохождение пакета от одного узла к другому. Так же вы видите время прохождения, которое пишется в миллисекундах. Далее вы видите название узла и IP адрес, который указан в скобках. Если же узел не сможет ответить или время ожидания будет превышено, то в столбце времени вы увидите звёздочку (*).
А теперь давайте я расскажу про проблему данного тестирования. Проблема состоит в том, что команда не показывает некоторые узлы, а именно коммутаторы, которые работают со вторым уровнем модели OSI. А все из-за того, что у них нет интерфейсного представления подключенных устройств в IP виде. То есть коммутация происходит на втором уровне, где нет IP адресов, а связь идет с помощью таблицы MAC-адресов. И понятно дело, что в таблице такие узлы не отображаются.
Более подробно советую также почитать про модель OSI и про коммутаторы.
В итоге для данной команды все коммутаторы, работающие со вторым уровнем модели OSI – просто невидимы. «Tracert» использует ICMP (Internet Control Message Protocol) протокол, которые передает данные только в IP пакете, со значением TTL. TTL – это время жизни пакета.
Изначально при отправке пакета на первый узел значение TTL равно единице. И при трассировке отправляется сразу три пакета – именно поэтому мы видим три столбца времени. Если все пакеты приходят обратно, то мы видим время по всем трем столбцам. Далее TTL увеличивается на единицу, и отправляется ещё три пакета на следующий узел. И так до победного конца, пока последний запрос не достигнет конечного узла.
ПРИМЕЧАНИЕ! Если вы видите звездочку, но пакет все равно идет через данный узел, то скорее всего на данном маршрутизаторе или сервере есть настройка, которая не обрабатывает ICMP запросы. Очень часто их используют для DDoS атак – поэтому их обработку иногда отключают.
Как у любой утилиты тут есть список дополнительных параметров, которые могут немного изменить тестирования. Для вызова нужно ввести:
Команда очень полезная не только для работы и тестирования рабочих сетей, но даже для выявления проблем с интернетом. Помню у моего друга постоянно был высокий отклик в «Counter-Strike», но он все никак не мог понять почему – ведь у меня в соседнем доме был пинг на порядок меньше. При трассировке он увидел, что на первом (провайдерском) узле есть сильный застой пакетов. В итоге он обратился к оператору, и им поменяли старый коммутатор, который стоял там, неверное ещё с эпохи Российской Империи.
Linux
Итак, в Windows мы уже разобрались, что трассировку выполняет утилита «tracert.exe». В Linux утилита имеет другое название: «traceroute», – и также выполняет данную функцию, но немного по-другому.
Вспомним немного как работает tracert на примере нижней картинки:
А проблем в том, что у «tracert» нет возможности сделать запрос с портом, что делает его немного узконаправленным. «Traceroute» работает на основе совершенно другого протокола – UDP. По сути UDP протокол делает запрос именно по портам. А окончание трассировки при достижении пакетом конечного узла происходит в том случае, когда при каждом шаге при увеличении номера порта он становится закрытым на конечном сервере.
Запускаем программу аналогично через консоль. Также у неё есть свои параметры.
Кстати, есть возможность при трассировке использовать не UDP, а ICMP протокол, для этого нужно дописать параметр «-I».
Но что делать, если надо на Windows сделать трассировку по UDP протоколу и использование портов? Для этого нужно будет использовать стороннюю микропрограмму: «tcptrace». Для трассировки маршрута по TCP (и UDP) можно использовать «tcptraceroute».
Трассировка
Cодержание
Функциональность
Если будет введена команда traceroute, утилита инициирует отправку пакетов, используя ICMP, включая TTL. Это позволит трассировщику определить время, необходимое для перехода к первому маршрутизатору. Если предельное значение времени будет увеличено, пакет будет повторно отправлен на второй маршрутизатор по пути к пункту назначения и вернет сообщение о превышении времени и т.д. и т.д. Если значение времени будет увеличено, то пакет будет повторно отправлен, чтобы он достиг второго маршрутизатора по пути к пункту назначения. Traceroute помогает пользователям определить, когда пакет достиг места назначения, путем включения номера порта, который находится за пределами нормального диапазона. Когда он будет получен, будет возвращено недоступное сообщение порта. Это позволит трассировщику измерить длительность последнего прыжка. С прогрессом, который будет достигнут при трассировке, записи будут отображаться пользователям прыгать прыжком. [4]
На выходе Traceroute отобразится IP-адрес пункта назначения и максимальное количество прыжков, которые он пройдет, прежде чем полностью покинет трассу. Затем на экране отобразится имя, IP-адрес и время отклика, требуемое для каждого перехода.
Эти следы продолжатся до целевого домена, будут перечислять все прыжки прямо по пути сюда. Если нет ответа от прыжка, на экране появится звездочка (*), после чего будет выполнена попытка еще одного прыжка. Если это будет сделано успешно, отобразится время отклика прыжка. Наконец, будет также отображен целевой домен с IP-адресом. [3:1]
Сопутствующие условия
Объективы трассировки
Существует три цели этого инструмента трассировки, который дает представление о проблеме пользователя в сети:
Трассировщик покажет предел того, сколько строк хмеля он будет отображать, а именно 30 хмелей, это считается максимальным числом. [2:1]
Ниже приведен список символов с описанием, которые появятся в выводе команды traceroute:
Командный символ трассировки | Описание |
---|---|
Nn msec | Обратный ход (в миллисекундах) для указанного количества зондов. |
* | Зонд выключен. |
A | Административно запрещено |
Q | Успокоительное средство для источника |
I | Пользовательский прерванный тест |
U | Порт недоступен |
H | Хост недоступен |
N | Сеть недоступна |
P | Протокол недоступен |
T | Таймаут |
? | Неизвестный тип пакета |
Однако, помимо всего этого, у трассировки есть ограничения. Traceroute обнаруживает пути не на уровне маршрутизатора, а на уровне интерфейса. Это может также указывать на путь, которого на самом деле не существует для того, чтобы минимизировать проблему, есть Париж-трассировка, которая служит модификацией трассировки. Это помогает поддерживать идентификатор потока зондов, чтобы избежать балансировки.
История
Страница руководства пользователя Traceroute говорит о том, что оригинальная программа Traceroute была написана Ван Джейкобсоном по предложению Стива Диринга, особенно убедительные предложения или исправления от Филиппа Вуда, Тима Сивер и Кена Адельмана. Майк Мас, автор программы PING, утверждает, что traceroute был написан с помощью поддержки ядра ICMP, которую он кодировал ранее, чтобы включить сырые ICMP сокеты, когда он впервые написал программу PING.
Общий вопрос
Если есть два пакета, которые будут отбрасываться, то это из соображений безопасности. В прошлом хакеры регулярно использовали трассировку, чтобы определить, как информация перемещается в компьютерной сети компании, а затем сосредоточить свои атаки на определенных компьютерных устройствах. Чтобы устранить эту угрозу безопасности, сети не должны позволять другим пользователям выполнять трассировку.
Главная страница
Другие языки
Cодержание
Функциональность
Если будет введена команда traceroute, утилита инициирует отправку пакетов, используя ICMP, включая TTL. Это позволит трассировщику определить время, необходимое для перехода к первому маршрутизатору. Если предельное значение времени будет увеличено, пакет будет повторно отправлен на второй маршрутизатор по пути к пункту назначения и вернет сообщение о превышении времени и т.д. и т.д. Если значение времени будет увеличено, то пакет будет повторно отправлен, чтобы он достиг второго маршрутизатора по пути к пункту назначения. Traceroute помогает пользователям определить, когда пакет достиг места назначения, путем включения номера порта, который находится за пределами нормального диапазона. Когда он будет получен, будет возвращено недоступное сообщение порта. Это позволит трассировщику измерить длительность последнего прыжка. С прогрессом, который будет достигнут при трассировке, записи будут отображаться пользователям прыгать прыжком. [4]
На выходе Traceroute отобразится IP-адрес пункта назначения и максимальное количество прыжков, которые он пройдет, прежде чем полностью покинет трассу. Затем на экране отобразится имя, IP-адрес и время отклика, требуемое для каждого перехода.
Эти следы продолжатся до целевого домена, будут перечислять все прыжки прямо по пути сюда. Если нет ответа от прыжка, на экране появится звездочка (*), после чего будет выполнена попытка еще одного прыжка. Если это будет сделано успешно, отобразится время отклика прыжка. Наконец, будет также отображен целевой домен с IP-адресом. [3:1]
Сопутствующие условия
Объективы трассировки
Существует три цели этого инструмента трассировки, который дает представление о проблеме пользователя в сети:
Трассировщик покажет предел того, сколько строк хмеля он будет отображать, а именно 30 хмелей, это считается максимальным числом. [2:1]
Ниже приведен список символов с описанием, которые появятся в выводе команды traceroute:
Командный символ трассировки | Описание |
---|---|
Nn msec | Обратный ход (в миллисекундах) для указанного количества зондов. |
* | Зонд выключен. |
A | Административно запрещено |
Q | Успокоительное средство для источника |
I | Пользовательский прерванный тест |
U | Порт недоступен |
H | Хост недоступен |
N | Сеть недоступна |
P | Протокол недоступен |
T | Таймаут |
? | Неизвестный тип пакета |
Однако, помимо всего этого, у трассировки есть ограничения. Traceroute обнаруживает пути не на уровне маршрутизатора, а на уровне интерфейса. Это может также указывать на путь, которого на самом деле не существует для того, чтобы минимизировать проблему, есть Париж-трассировка, которая служит модификацией трассировки. Это помогает поддерживать идентификатор потока зондов, чтобы избежать балансировки.
История
Страница руководства пользователя Traceroute говорит о том, что оригинальная программа Traceroute была написана Ван Джейкобсоном по предложению Стива Диринга, особенно убедительные предложения или исправления от Филиппа Вуда, Тима Сивер и Кена Адельмана. Майк Мас, автор программы PING, утверждает, что traceroute был написан с помощью поддержки ядра ICMP, которую он кодировал ранее, чтобы включить сырые ICMP сокеты, когда он впервые написал программу PING.
Общий вопрос
Если есть два пакета, которые будут отбрасываться, то это из соображений безопасности. В прошлом хакеры регулярно использовали трассировку, чтобы определить, как информация перемещается в компьютерной сети компании, а затем сосредоточить свои атаки на определенных компьютерных устройствах. Чтобы устранить эту угрозу безопасности, сети не должны позволять другим пользователям выполнять трассировку.
Как проверить ping и трассировку через командную строку
В сети интернет, в частности, на форумах, в случае возникновения проблемы с подключением к какому-либо узлу (серверу), рекомендуют проверить пинг или выполнить трассировку маршрута и таким образом проверить доступность сервера.
Но что такое пинг и что такое трассировка? Пинг (ping) – это инструмент (утилита) для проверки целостности соединения в сетях на основе TCP/IP. Трассировка (traceroute или tracert команда) – это программа для определения маршрутов следования данных в сетях TCP/IP.
Однако не всегда можно встретить информацию о том, как именно выполняется эта проверка: как пинговать или как сделать трассу.
Содержание
Проверка пинга
Для проверки пинга используется одноименная команда ping, которую необходимо вводить в командной строке. Запустить командную строку можно следующими способами:
В данной ОС существует множество терминалов, поэтому для этих целей можно использовать любой из установленных на ПК. Обычно стандартный терминал можно запустить сочетанием клавиш CTRL+ALT+T.
Итак, чтобы пропинговать определенный сервер, необходимо выполнить команду:
Например, для пинга адреса 11.222.33.44 необходимо выполнить команду:
Ниже приведён пример результатов выполнения пинга одного из IP адресов.
Как видно из результатов, было передано и получено 4 пакета размером 32 байта. Время обмена одним пакетом составило 47 милисекунд.
Стоит отметить, что в Windows по умолчанию выполняется отправка только 4 пакетов. В Linux обмен пакетами продолжается до тех пор, пока пользователь самостоятельно не остановит процесс сочетанием клавиш CTRL+C. Чтобы запустить ping аналогичным образом в Windows, необходимо использовать параметр -t. Например:
Остановка обмена пакетами выполняется тем же сочетанием клавиш – CTRL+C.
Установка количества отправляемых пакетов
Чтобы задать максимальное количество отправляемых пакетов, необходимо использовать команду следующего вида:
Изменение размера отправляемых пакетов
Чтобы выполнить ping с использованием пакетов определенного размера (в байтах), необходимо использовать следующую команду:
В данном случае производилась отправка пакетов размером в 64 байта.
Проверка трассировки
Трассировка маршрута может показать скорость прохождения пакетов между маршрутизаторами, которые соединяют ПК, с которого идут запросы, и конечный сервер.
Для выполнения трассировки используется следующая команда:
Стоит отметить, что по умолчанию при трассировке также выполняется DNS-запрос на разрешение IP адреса в доменное имя для каждого проходящего маршрутизатора. Эту опцию можно отключить, таким образом, сократив время получения результатов трассировки.
Чтобы активировать эту опцию необходимо использовать следующий вид команды:
Утилиты Traceroute и Tracert
Traceroute — это утилита, которая позволяет проследить маршрут следования данных до удалённого адресата в сетях TCP/IP. В Linux используется команда Traceroute, а в Windows — Tracert. При помощи этих команд можно увидеть путь пакета данных от вашего компьютера до целевого сервера или сайта.
Как работают Tracert и Traceroute
Когда вы пытаетесь открыть сайт, браузер отправляет сообщение (запрос) серверу, на котором этот сайт находится. Сообщение на своём пути проходит через маршрутизаторы. Они решают, куда дальше передать сообщение, чтобы гарантированно его доставить адресату. В трассировке маршрутизаторы ещё называют хопами (хоп — прыжок) или узлами. Количество узлов, через которые на своём пути пройдёт запрос, можно узнать при помощи утилит Tracert и Traceroute. Узлы, которые не являются целевыми для запроса, называют транзитными.
Утилита Traceroute формирует UDP-датаграмму (сообщение, которое нужно доставить целевому серверу), упаковывает её в IP-пакет и передаёт первому транзитному узлу. В заголовке такого IP-пакета есть поле TTL (Time To Live) — время жизни пакета. Оно определяет количество хопов, через которые пакет может пройти. На каждом узле TTL уменьшается на единицу. Если на пути к удалённому адресату время жизни пакета станет равно 0, маршрутизатор отбросит пакет и отправит источнику ICMP-сообщение об ошибке «Time Exceeded» (время истекло).
Этот принцип лежит в основе работы утилит Tracert и Traceroute, однако между ними есть отличия. Рассмотрим каждую утилиту отдельно.
Tracert отправляет на хост назначения ICPM-запрос «Echo Request» с TTL=1. Первый маршрутизатор, который получит запрос, проверяет, кому он предназначен. Если маршрутизатор не является целевым хостом, он уменьшает TTL на 1, отбрасывает пакет и отправляет ICMP-сообщение источнику, так как время жизни теперь равно 0. В этом сообщении маршрутизатор указывает информацию о себе и причину дропа пакета. Получив сообщение, Tracert запоминает этот маршрутизатор как первый хоп (прыжок) и отправляет следующий пакет, но уже с TTL=2. Первый хоп успешно обрабатывает новый пакет, уменьшает время его жизни на 1 и передаёт дальше. Следующий маршрутизатор тоже выполняет проверку хоста назначения и, если пакет предназначен не ему, уменьшает TTL, отбрасывает пакет и отправляет ICMP-сообщение источнику. Tracert запоминает второй хоп, снова увеличивает TTL на 1 и отправляет следующий пакет. Эти действия будут повторяться до тех пор, пока пакет не достигнет целевого хоста. Когда запрос попадёт к целевому хосту, этот хост в ответ направит ICMP «Echo Reply». Источник воспримет это как завершение трассировки.
Утилита Traceroute вместо ICMP-запроса отправляет 3 UDP-пакета на определенный порт целевого хоста и ожидает ответа о недоступности этого порта. Первый пакет отправляется с TTL=1, второй с TTL=2 и так далее, пока запрос не попадёт адресату. Отличие от Tracert в том, как Traceroute понимает, что трассировка завершена. Так как вместо ICMP-запроса он отправляет UDP-запрос, в каждом запросе есть порт отправителя (Sourсe) и порт получателя (Destination). По умолчанию запрос отправляется на закрытый порт 34434. Когда запрос попадёт на хост назначения, этот хост отправит ответ о недоступности порта «Destination port unreachable» (порт назначения недоступен). Это значит, что адресат получил запрос. Traceroute воспримет этот ответ как завершение трассировки.
Если Tracert работает по протоколу ICMP, то какой протокол используется командой Traceroute? По умолчанию используется протокол UDP, но traceroute может отправить и ICMP-запрос «Echo Request», как Tracert. Такой способ пригодится, если хоп не отвечает на UDP-пакет.