Traceroute — это служебная компьютерная программа, предназначенная для определения маршрутов следования данных в сетях TCP/IP. Traceroute может использовать разные протоколы передачи данных в зависимости от операционной системы устройства. Такими протоколами могут быть UDP, TCP, ICMP или GRE. Компьютеры с установленной операционной системой Windows используют ICMP-протокол, при этом операционные системы Linux и маршрутизаторы Cisco — протокол UDP.
Traceroute входит в поставку большинства современных сетевых операционных систем. В системах Microsoft Windows эта программа носит название tracert, а в системах GNU/Linux, Cisco IOS и Mac OS — traceroute.
Рассмотрим пример работы программы в операционной системе Windows. Программа tracert выполняет отправку данных указанному узлу сети, при этом отображая сведения о всех промежуточных маршрутизаторах, через которые прошли данные на пути к целевому узлу. В случае проблем при доставке данных до какого-либо узла программа позволяет определить, на каком именно участке сети возникли неполадки. Необходимо отметить, что программа работает только в направлении от источника пакетов и является весьма грубым инструментом для выявления неполадок в сети. В силу особенностей работы протоколов маршрутизации в сети Интернет, обратные маршруты часто не совпадают с прямыми, причём это справедливо для всех промежуточных узлов в трейсе. Поэтому ICMP ответ от каждого промежуточного узла может идти своим собственным маршрутом, затеряться или прийти с большой задержкой, хотя в реальности с пакетами, которые адресованы конечному узлу, этого не происходит. Кроме того, на промежуточных маршрутизаторах часто стоит ограничение числа ответов ICMP в единицу времени, что приводит к появлению ложных потерь.
- Содержание
- Принцип работы traceroute [ править | править код ]
- Пример в Windows [ править | править код ]
- Пример в Linux [ править | править код ]
- Проблемы с firewall-ами [ править | править код ]
- Команда tracert в Windows. Зачем нужна и как пользоваться сетевой утилитой tracert?
- Назначение команды tracert или как определить маршрут прохождения пакета до узла
- Параметры команды tracert в Windows
- Команда трассировки в CMD (в командной строке)
- Как сделать трассировку до сервера?
- Трассировка маршрута в Linux
Содержание
Принцип работы traceroute [ править | править код ]
Для определения промежуточных маршрутизаторов traceroute отправляет целевому узлу серию ICMP-пакетов (по умолчанию 3 пакета), с каждым шагом увеличивая значение поля TTL («время жизни») на 1. Это поле обычно указывает максимальное количество маршрутизаторов, которое может быть пройдено пакетом. Первая серия пакетов отправляется с TTL, равным 1, и поэтому первый же маршрутизатор возвращает обратно ICMP-сообщение «time exceeded in transit», указывающее на невозможность доставки данных. Traceroute фиксирует адрес маршрутизатора, а также время между отправкой пакета и получением ответа (эти сведения выводятся на монитор компьютера). Затем traceroute повторяет отправку серии пакетов, но уже с TTL, равным 2, что заставляет первый маршрутизатор уменьшить TTL пакетов на единицу и направить их ко второму маршрутизатору. Второй маршрутизатор, получив пакеты с TTL=1, так же возвращает «time exceeded in transit».
Процесс повторяется до тех пор, пока пакет не достигнет целевого узла. При получении ответа от этого узла процесс трассировки считается завершённым.
На оконечном хосте IP-датаграмма с TTL = 1 не отбрасывается и не вызывает ICMP-сообщения типа срок истёк, а должна быть отдана приложению. Достижение пункта назначения определяется следующим образом: отсылаемые traceroute датаграммы содержат UDP-пакет с заведомо неиспользуемым номером порта на адресуемом хосте. Номер порта будет равен 33434 + (максимальное количество транзитных участков до узла) — 1. В пункте назначения UDP-модуль, получая подобные датаграммы, возвращает ICMP-сообщения об ошибке «порт недоступен». Таким образом, чтобы узнать о завершении работы, программе traceroute достаточно обнаружить, что поступило ICMP-сообщение об ошибке этого типа.
Пример в Windows [ править | править код ]
Запуск программы производится из командной строки. Для этого вы должны войти в неё. Для операционных систем семейства Windows существует несколько способов запуска командной строки:
- Пуск — Выполнить — В графе «Открыть» написать «cmd» и нажать Ок.
- Сочетание клавиш Win (кнопка с логотипом Windows) + R (должны быть нажаты одновременно) — В графе «Открыть» написать «cmd» и нажать Ок.
- Пуск — Все программы (или просто «Программы», зависит от версии операционной системы) — Стандартные — Командная строка.
В открывшемся окне написать:
Где tracert — обращение к программе, а example.net — любое доменное имя или IPv4 адрес.
Пример в Linux [ править | править код ]
В UNIX/Linux системах существуют режимы, в которых запуск программы возможен только от имени суперпользователя root (администратора). К числу этих режимов относится важный режим трассировки с помощью ICMP (ключ -I ).
Во всех остальных случаях, traceroute может работать от имени обычного рядового пользователя. При этом, параметры по умолчанию различаются от дистрибутива к дистрибутиву, хотя в справке традиционно пишется ключ -U (UDP) в качестве такового. В отдельных RedHat-based дистрибутивах фактически в качестве умолчания используется -I , поэтому в случае, если команда из следующего примера выдаст сообщение о недостатке прав, попробуйте явно указать ключ -U .
Проблемы с firewall-ами [ править | править код ]
Часто встречается заблуждение, что traceroute, как и ping, работает только по протоколу ICMP. В связи с этим начинающие администраторы, разрешив в файерволе протокол ICMP, получают рабочий ping и нерабочий traceroute. Для исправления такой ситуации необходимо дополнительно разрешить в файерволе UDP-пакеты на порты выше 33434 (в некоторых источниках указано, что достаточно указать диапазон портов от 33434 до 33534).
Команда tracert в Windows. Зачем нужна и как пользоваться сетевой утилитой tracert?
- 01.07.2018
- Команды и утилиты Windows, Компьютерные сети, Полезные программы, Сетевые утилиты и программы
- Один комментарий
Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжим разбираться с полезными командами и утилитами командной строки Windows, на этот раз давайте разберемся с сетевой утилитой tracert, мы поговорим зачем нужна команда tracert и как ею пользоваться для диагностики компьютерной сети и устранению неполадок. Как мы увидим, утилиту tracert используют сетевые инженеры и системные администраторы для определения маршрута прохождения IP-пакета по сети, вы убедитесь, что этой утилитой довольно легко пользоваться, но не все умеют правильно оценивать результаты работы этой команды, о некоторых сложностях, которые могут возникнуть при интерпретации трассировка маршрута мы поговорим в самом конце этой публикации.
Если вам интересна тема компьютерных сетей, то в блоге уже практически закончена первая часть курса по основам компьютерных сетей, можете ознакомиться с ее содержимым. И вот здесь можно получить немного информации о самом курсе основанном на Cisco ICND1.
Назначение команды tracert или как определить маршрут прохождения пакета до узла
Tracert – это небольшая системная утилита вашей операционной системы, которая позволяет сделать трассировку маршрута до заданного узла в локальной сети или сети Интернет. В операционных системах Windows tracert – это стандартная утилита, которая устанавливается вместе с операционной системой, то есть вам не нужно ничего устанавливать, чтобы воспользоваться командной tracert. Исполняемый файл tracert.exe в Windows 10 находится по следующему пути: C:WindowsSystem32.
Команда tracert – это один из самых часто используемых инструментов для траблшутинга и сетевой диагностики, эта утилита дает нам возможность определить маршрут, по которому проходит пакет до заданного узла. Tracert может работать как с доменными имена или именами хостов, так и с IP-адресами (как с IPv4, так и с IPv6). Кроме того что tracert показывает маршрут от вашего компьютера до удаленного узла в сети, она еще и отображает время прохождения пакетов как до конечного узла, так и до транзитных или промежуточных узлов (время является одной из самых важных единиц измерения в компьютерных сетях). Давайте лучше посмотрим, как работает утилита tracert на простом примере без дополнительных параметров.
Трассировка маршрута при помощи команды Tracert до IP-адреса Яндекс
В данном случаем мы видим путь прохождения IP-пакета от моего ПК до сервера Яндекс, чтобы указать утилите tracert удаленный узел, мы воспользовались IP-адресом. Но эта команда может работать и с доменными именами, давайте посмотрим, сделав трассировку маршрута до сервера Google.
Трассировка маршрута при помощи утилиты tracert до сервера Google по доменному имени
Стоит сказать пару слов о выводе, который мы получили. Каждая строка вывода команды tracert пронумерована, каждая такая строка называется шагом, хопом или прыжком. По умолчанию tracert в Windows отправляет три запроса на каждый хоп и получает от этого хопа ответы, если ответ не получен, то в первых трех столбцах мы видим символ «*», если ответ получен, то в первых трех столбцах указывается время прохождения пакета, а в четвертом столбце Windows дает нам подсказку о причинах, по которым удаленный узел нам не ответил или его адрес, если узел ответил.
Хопы, которые мы видим в трассировке – это маршрутизаторы, серверы или L3 коммутаторы, на интерфейсах которых прописан IP-адрес (то есть устройства, которые определяют путь, по которому пойдет IP-пакет, другими словами – это устройства сетевого уровня моделей OSI 7 и TCP/IP), это важное уточнение для интернет-пользователей, всё дело в том, что витая пара или другой тип кабеля (про минусы использования коаксиального кабеля в Ethernet сетях можете почитать здесь), который приходит к вам в квартиру, подключен в L2 коммутатор, который никак не влияет на маршрут прохождения пакета, на нем нет IP-адресов (вернее есть один адрес, который использует тех. поддержка провайдера для управления этим коммутатором) и он не принимает решений по маршрутизации пакетов, таких коммутаторов между хопами может быть несколько десятков и мы их никак не увидим, так как для утилиты tracert они представляют собой что-то вроде кабеля, собственно как и для других утилит сетевой диагностики.
Для диагностики сетевых ресурсов утилита tracert использует специальный протокол, который называется ICMP (Internet Control Message Protocol — протокол межсетевых управляющих сообщений), есть еще команда traceroute (эта утилита обычно входит в стандартные дистрибутивы Linux, например, эта утилита присутствует в Linux Mint), которая по умолчанию использует протокол UDP, для ее использвания вам точно также потребуется эмулятор терминала. ICMP-сообщение, которое посылает наш компьютер, запаковывается в IP-пакет (здесь вы можете прочитать более подробно про инкапсуляцию данных в компьютерных сетях), у которого есть специальное значение TTL (time to live или время жизни), для понимания работы tracert это важно, поскольку эта команда при каждой отправке пакета увеличивает TTL на единицу, а первый отправленный пакет в сеть имеет значение, равное единице, при этом по умолчанию tracert отправляет три пакета с одним и тем же TTL, то есть в ответ мы должны получить три пакета от удаленного узла (самые основы взаимодействия двух узлов в компьютерной сети описаны здесь, для реализации схемы использовалась Cisco Packet Tracer).
Вернемся к примеру с трассировкой Яндекса, чтобы это лучше понять. Когда мы написали tracert 77.88.55.88, tracert сформировала IP-пакет, в котором в качестве узла назначения указала IP-адрес Яндекса и отправила его в сеть, а в качестве TTL этот пакет получил значение равное единице, далее tracert, не изменяя TTL отправила еще два пакета и получила три ответа от узла 192.168.0.1. После значение TTL было увеличено на единицу (значение стало равным двойке) и в сеть было отправлено еще три пакета (IP-адрес в этих пакетах не изменялся), следующий хоп отказался отвечать на ICMP-запросы и мы увидели три звездочки, после этого TTL был снова увеличен и мы увидели третий хоп, таким образом tracert будет увеличивать TTL до тех пор, пока не доберется до сервера Яндекс. С Гуглом ситуация аналогичная, только там мы использовали доменное имя, поэтому tracert пришлось выполнять дополнительные операции по выяснению IP-адреса, на котором этот домен висит.
При использовании утилиты tracert не стоит паниковать в тех ситуациях, когда вы видите звездочки вместо времени ответа удаленного узла, дело в том, что ICMP-протокол иногда используется для сетевых атак (например, DDoS) и некоторые сетевые инженеры и системные администраторы предпочитают настраивать свои устройства таким образом, чтобы они не отвечали на ICMP-запросы. Иногда бывает так, что конечный узел не отвечает на ICMP-запросы, но на самом деле он корректно работает и выполняет свои функции, для проверки доступности таких узлов вам не поможет команда Ping, так как она тоже использует ICMP, но может помочь команда traceroute или онлайн сервисы по проверки доступно сайтов и серверов в Интернете.
В качестве примера давайте сделаем трассировку до сайта microsoft.com, сервера этой компании не отвечают на ICMP-запросы. Трассировка показана на рисунке ниже.
Трассировка до сервера Microsoft, который не отвечает на ICMP-запросы
На момент проверки этого ресурса он был доступен, но результаты работы tracert нас немного обманывают, по ним видно, что мы якобы не можем добраться до сервера Майкрософт, поэтому для корректной диагностики удаленных ресурсов нужно иметь целый арсенал сетевых утилит, ну или как минимум браузер и умение гуглить. Еще по трассировки видно, что tracert в Windows по умолчанию использует максимальное значение TTL равное 30, протокол IPv4 позволяет задавать максимальное значение TTL 255, но на самом деле это очень много, чтобы остановить выполнение команды tracert воспользуйтесь сочетание клавиш ctrl+c.
Параметры команды tracert в Windows
Любая команда в командной строке Windows имеет небольшой справочник (команда help — справочник командной строки Windows), в котором указаны допустимые параметры, в том числе и команда tracert, чтобы увидеть эти параметры, в командной строке нужно написать: tracert /? или tracert /h.
Команда tracert используется многими пользователями практически так же часто, как и команда ping. С ее помощью можно проследить путь прохождения пакетов до заданной точки, то есть протрассировать маршрут пути пакета до конечного узла и выяснить, работоспособен ли он. Чем именно может быть полезна такая трассировка сети? С ее помощью вы сможете выяснить:
В результате выполнения команды можно узнать количество узлов, через которые проходит пакет на пути от вас до заданного конечного узла.
Если вы решили купить vps сервер на Linux, то обратите внимание, что здесь будет использоваться команда под названием traceroute.
Если при выполнении команды ping пакеты не доходят до нужного веб-узла, то при помощи команды tracert вы сможете узнать, на каком именно этапе происходит потеря. В итоге вы получите информацию о том, который из маршрутизаторов не отправляет пакет, не принимает его или же делает это слишком медленно.
Команда трассировки в CMD (в командной строке)
Во время выполнения этой команды последовательно опрашивается каждый из маршрутизаторов на пути к конечному хосту, при этом результат измеряется и отображается в отчете.
Только не стоит забывать, что задача любого маршрутизатора — передавать пакеты, а не отвечать на запросы команды tracert. Поэтому нет ничего удивительного в ситуации, когда конечный хост работает без потери пакетов, а трассировка сайта покажет потерю на определенном этапе. Это означает, что политика фильтрования некоторых брандмауэров, маршрутизаторов и прочих шлюзов безопасности настроена таким образом, что пересылаемые за счет команды пакеты просто игнорируются, и такой трафик запрещается к пересылке.
Как сделать трассировку до сервера?
Не знаете, как проверить трассировку до сервера? Тогда вам поможет приведенная ниже последовательность действий:
- Открывается командная строка
Сделать это можно по-разному:
- Если нужна команда трассировки в CMD, то командную строку можно вызвать, нажав сочетание клавиш Win+R, после чего набрав cmd и нажав клавишу Enter. Как вариант, вы можете нажать "Пуск" или клавишу Win, найти пункт "Выполнить", после чего набрать cmd и нажать клавишу Enter.
- Нажмите "Пуск" — "Программы" ("Все программы") — "Стандартные" — "Командная строка".
Независимо от способа открытия, в итоге вы получаете доступ к командной строке.
Вводится команда tracert в командной строке
Команда обладает следующим синтаксисом: tracert имя_узла, где имя_узла — имя трассируемого узла или хоста в сети. Также возможен вариант tracert IP_адрес, где IP_адрес — это IP адрес нужного вам хоста или узла. После ввода команды нажмите клавишу Enter.
После нажатия Enter запускается процесс выполнения команды. По его окончании вы получите отчет, в котором будут отображены все этапы прохождения пакета между узлами, а также время отклика каждого узла в миллисекундах. Ниже представлен пример того, как была проведена трассировка интернет-соединения с веб-ресурсом Yandex.ru.
Команда tracert определяет путь до хоста или узла, отправляя ICMP-сообщения. Именно они подразумеваются под так называемыми пакетами, хотя вернее было бы называть их эхо-запросами и эхо-ответами. При этом существуют определенные параметры команды tracert, которые не стоит изменять без четкого понимания преследуемой цели. Также существуют символы, которые используют протокол ICMP и отображаются в отчете. Давайте рассмотрим подробнее, какими они бывают и что означают:
- ! Этот символ в одной из строчек означает, что соответствующий порт недоступен.
- !N Данный символ означает недоступность сети.
- !H Появление этого символа означает недоступность нужного узла.
- !P Этот символ предупреждает об использовании недопустимого протокола.
- !F Появляется в тех случаях, когда превышена допустимая длина отправленного или принятого пакета.
- !X Данный символ появляется при обнаружении административного запрета на доступ к узлу, фильтру, прокси или любой другой точке.
- * Появление этого символа означает, что данный узел не откликается.
Трассировка маршрута в Linux
Стоит уточнить, что tracert в неизменном виде используется только в ОС Windows. Трассировка на Маке или Unix-системах выполняется при помощи другой команды, и в данном случае аналогом tracert для Linux и MAC является команда traceroute. И если в ОС Windows используется ICMP протокол, то упомянутые выше системы используют UDP протокол. Но синтаксис команды при этом остается таким же: traceroute имя_домена или traceroute IP_адрес, где имя_домена — имя нужного узла, а IP_адрес — IP адрес нужного узла.
Теперь вы знаете, как сделать трассировку до сервера, поэтому при необходимости можете самостоятельно проверить доступность того или иного узла, а также найти места потери пакетов. Если же у вас по каким-то причинам возникают проблемы при трассировке дешевого выделенного сервера или мощного VPS RigWEB — задайте вопрос специалистам техподдержки. Как можно подробнее опишите свою проблему, и наши сотрудники окажут вам любую консультативную помощь в рамках своей компетенции в течение 30 минут.
Пользуйтесь профессиональным хостингом, и время отклика ваших сайтов всегда будет минимальным!