Как сделать трассировку до сервера
Как сделать трассировку до сервера
Утилиты 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-пакет.
Что такое трассировка маршрута в 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».
Как сделать пинг и трассировку в OC Windows
Иногда возникает ситуация: сайт не открывается при обращении к своему имени. Чаще всего такое происходит после регистрации домена или изменений настроек DNS для домена.
В этом случае при обращении в Техническую поддержку у Вас могут попросить сделать пинг и/или трассировку до Вашего сайта и предоставить результаты. Эта процедура позволит посмотреть весь путь, который проходит сетевой пакет, прежде чем достигнет нашего сервера и, возможно, выявить место, где происходит сбой.
Для этого нам понадобится воспользоваться двумя утилитами, которые встроены в ОС Windows: ping и tracert.
Команда ping
Перед Вами должна открыться командная строка Windows. Для того, чтобы сделать пинг, необходимо набрать в ней команду:
где site.com — имя Вашего домена.
После ввода нажмите Enter и дождитесь выполнения команды.
Теперь полученный результат необходимо скопировать. Для этого щелкните правой кнопкой мыши в области консоли и в контекстном меню выберите пункт «Пометить«.
После этого мышью выделите необходимую область с текстом и нажмите Enter. Теперь результат скопирован в буфер обмена, и Вы можете вставить его, куда Вам необходимо. Например, отправить его сотруднику технической поддержки, вставив в поле ввода сообщения (Ctrl+V).
Команда tracert
Для того, чтобы сделать трассировку, Вам необходимо вместо команды ping ввести команду:
После чего надо нажать Enter, дождаться ее выполнения и таким же образом скопировать результат в буфер обмена.
Telnet и nslookup
Скорее всего, если попробовать выполнить команду telnet, то возникнет следующее сообщение:
Выбираем пункт Программы:
Нажимаем Включение или отключение компонентов Windows:
Ставим галочку напротив Клиент Telnet и нажимаем OK:
Возвращаемся к командной строке и вводим команду:
и нажимаем Enter:
Теперь выполним команду nslookup. Вместо beget.com подставляем домен Вашего сайта:
Как сделать трассировку маршрута до сайта, сервера?
Когда мы заходим на интернет-портал, компьютер отправляет запрос к серверу. По пути он проходит через маршрутизаторы. Если все в порядке — ресурс отображается у нас в браузере.
Если сайт не работает, запрос компьютера не дошел к серверу — потерялся на одном из промежуточных узлов связи или причина в чем-то другом (не работает сам сайт). Чтобы разобраться, где именно проблема, проведем трассировку маршрута.
При обращении в службу технической поддержки ресурса, обычно это первое, что просят сделать, если сайт не работает. Это связано с тем, что сайт может не работать из-за перебоев связи на отдельном узле, но в целом сайт работает и с ним все в порядке.
Как сделать трассировку маршрута до сервера, сайта в OC Windows
Запускаем командную строку через меню «Пуск – Все программы – Стандартные». Или нажимаем сочетание клавиш «Win + R», появляется окно системной утилиты «Запуск программы», вводим: «cmd» и нажимаем «ок».
В командной строке вводим: «tracert» и адрес ресурса, который нужно проверить. Нажимаем «ввод». В результате трассировки мы узнаем, какие промежуточные узлы проходит пакет и время отклика. На основе этой информации можно понять, где проблема: у Вас, у интернет-провайдера, на одном из промежуточных узлов или на сервере сайта. Звездочки означают, что один из маршрутизаторов не хочет отвечать.
Звездочки не всегда означают проблему — на сервере может стоять файрволл, который блокирует «лишние» пакеты, а «реальные» пропускает и в браузере страница корректно открывается.
В командной строке узнаем IP адрес для трассировки
Если по доменному имени трассировка не проходит, сделаем это по IP адресу. Узнаем его через команду «ping». Этот запрос показывает время, которое нужно пакету, чтобы дойти до сервера и вернуться обратно. Цифры в квадратных скобках, которые идут после домена в строке «Обмен пакетами с…», это и есть искомый IP. На скриншоте: 88.214.230.21.
CMS хостинг — подберите тарифный план, подходящий для системы управления Вашим сайтом!
Как скопировать результаты пинга и трассировки из командной строки?
Даже если трассировка по домену прошла успешно, стоит «пропинговать» сервер, чтобы увидеть, не теряются ли пакеты. Да и техподдержка может попросить статистику обмена данных вместе с отчетом о трассировке.
Вводим: tracert и IP адрес, нажимаем «ввод» и получаем отчет. Если данные нужны не лично вам, а для тех. поддержки, выделяем мышкой нужные строки и нажимаем «enter». Информация попадает в буфер обмена. Создаем текстовый файл и вставляем комбинацией клавиш Ctrl + V. Сохраняем и отправляем в техподдержку.
iPipe – надёжный хостинг-провайдер с опытом работы более 15 лет.
IT-блог о веб-технологиях, серверах, протоколах, базах данных, СУБД, SQL, компьютерных сетях, языках программирования и создание сайтов.
Команда tracert в Windows. Зачем нужна и как пользоваться сетевой утилитой tracert?
Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжим разбираться с полезными командами и утилитами командной строки Windows, на этот раз давайте разберемся с сетевой утилитой tracert, мы поговорим зачем нужна команда tracert и как ею пользоваться для диагностики компьютерной сети и устранению неполадок. Как мы увидим, утилиту tracert используют сетевые инженеры и системные администраторы для определения маршрута прохождения IP-пакета по сети, вы убедитесь, что этой утилитой довольно легко пользоваться, но не все умеют правильно оценивать результаты работы этой команды, о некоторых сложностях, которые могут возникнуть при интерпретации трассировка маршрута мы поговорим в самом конце этой публикации.
Если вам интересна тема компьютерных сетей, то в блоге уже практически закончена первая часть курса по основам компьютерных сетей, можете ознакомиться с ее содержимым. И вот здесь можно получить немного информации о самом курсе основанном на Cisco ICND1.
Назначение команды tracert или как определить маршрут прохождения пакета до узла
Tracert – это небольшая системная утилита вашей операционной системы, которая позволяет сделать трассировку маршрута до заданного узла в локальной сети или сети Интернет. В операционных системах Windows tracert – это стандартная утилита, которая устанавливается вместе с операционной системой, то есть вам не нужно ничего устанавливать, чтобы воспользоваться командной tracert. Исполняемый файл tracert.exe в Windows 10 находится по следующему пути: C:\Windows\System32.
Команда 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.
Как проверить PING и traceroute
Для начала, определимся с тем, что такое PING. Пинг — специальная утилита, способная проверить целостность соединения. Она основывается на TCP и IP узлах. Протоколы определяют подключение компьютера или сервера к общей сети. Команды, с помощью которых можно проверить IP-адрес и сделать трассировку маршрута, помогают узнать доступность сервера, а также его состояние в момент подключения.
Само понятие трассировки разнится. Кто-то утверждает, что это полученные данные, в то время, как traceroute – это программа, помогающая определить следование (маршрутизацию) данных в сетях IP/TCP.
Проще говоря, мы будем делать с вами трассу и пинговать сервер из оболочки WIndows.
CMD Windows – ищем и проверяем
Необходимо выполнить следующие действия, независимо от вашей версии ПО:
Любой из этих способов откроет черное окно, которое выглядит так:
После того, как вы узнали свой IP (достаточно в строке ввести ipconfig), также вам доступна команда PING.
Делаем всё, как на скриншотах.
После введенной IPCONFIG – не обязательно заглавными — вы получаете свой IP-адрес в графе IPv4. Его можно скопировать для удобства или запомнить, что более трудно. Многие просто переписывают на листок.
Командная строка всегда выдает по 4 пакета. Мы видим, что каждый пакет передает информацию в 32 бита за 3 миллисекунды каждый.
Все указано на скриншоте ниже.
Останавливается проверка с помощью нажатия Ctrl + C.
Вы узнали ваш IP-адрес. Теперь вам доступна информация о скорости соединения вашего компьютера с общей сетью.
Проверяем трассу tracert
Трассировка показывает нам скорость прохождения наших пакетов между маршрутизаторами, которые базируются в сети компьютера, который отправляет запросы к итоговому (конечному серверу).
Трасса часто помогает обнаружить проблему в серверной части. Большинство опытных специалистов при каждом изменении кода СУБД ежеминутно проверяют трассировку для определения проблемы и скорости прохождения данных.
Функция tracert – показывает полный сетевой маршрут до указанного места. Выглядит это так (в качестве примера был взял wikipedia.org):
Предназначение Traceroute и Tracert: кратко и понятно
Сегодня мы расскажем об известной служебной утилите, незаменимом инструменте системного администратора. Обычно это приложение служит для определения маршрута следования пакетов данных в сетях TCP/IP. Также эту утилиту используют для определения связности между сетями или для оценки скорости соединения в сети.
Поможем собрать 300 тыс. грн на снаряжение для 113-й бригады, которая воюет в Харьковской области (обновлено: осталось собрать 156 тыс. грн)
В зависимости от того, какую операционную систему вы используете, реализация Traceroute может задействовать для своей работы разные протоколы: UDP, TCP, ICMP или GRE. Так, для платформы Windows маршрут следования пакетов исследуется посредством протокола ICMP, а на платформе Linux или в маршрутизаторах Cisco используется протокол UDP.
1. Предназначение Traceroute и Tracert
Для мониторинга пакетной передачи в GNU/Linux, Cisco и macOS используется команда Traceroute, а в Windows — Tracert. Пакеты данных, которые передаются в сеть, проходят не сразу от получателя к пользователю, а идут через узлы — ноды. Поскольку эти хосты не являются целевыми, их еще называют транзитными узлами.
В дополнение к этому на промежуточных узлах стоит ограничение по количеству ответов на ICMP-запросы. По этой причине Tracert является неточным инструментом для выявления неполадок сети.
Между утилитами Tracert и Traceroute есть небольшое отличие и в механизме трассировки: Tracert выполняет трассировку без указания порта у хоста назначения, а Traceroute наоборот — использует порт.
2. Механизм работы трассировки сети
В начале трассировки Tracert посылает первый запрос с параметром TTL = 1. Первый хоп, получивший сообщение, не является целевым и уменьшает величину TTL на 1. Поскольку TTL при этом обнуляется, Tracert возвращает источнику ICMP-сообщение в котором содержится информация о причинах отбрасывания пакета.
Далее Tracert посылает новый запрос с TTL = 2 и первый маршрутизатор в этот раз снова уменьшает на единицу параметр TTL у транзитного пакета, после чего передает данные второму хопу. Тот анализирует поступившие данные, также уменьшает TTL на один и, если получил ноль, возвращает источнику ICMP-сообщение.
Далее Tracert увеличивает TTL до трех и процедура трассировки повторяется. Данная цепочка действий выполняется до тех пор, пока данные не попадут к целевому хосту. Этот узел вернет ICMP с сообщением «Echo Reply», что будет означать, что трассировка успешно завершена.
В отличие от Tracert, Traceroute посылает на хост назначения сразу несколько пакетов UDP с TTL = 1, 2 и так далее, пока данные не будут получены. Каждый пакет содержит данные о порте отправителя и порте получателя. По умолчанию порт получателя — закрытый (34434), поэтому когда обратно приходит ответ с сообщением о недоступности порта, утилита понимает, что процесс анализа маршрута передаваемых данных завершен.
Большая задержка между хопами не обязательно свидетельствует о проблемах с аппаратным обеспечением. Это может объясняться и большой длиной магистрали по которой передается трафик. Между некоторыми маршрутизаторами расстояние может составлять в тысячи километров, например, если передача идет на другой континент.
Звездочки, отображаемые при трассировке, могут означать одно из двух. Первое — проблемы на стороне маршрутизатора или магистрали. Второе — маршрутизатор функционирует нормально, однако его настройки выбраны таким образом, чтобы игнорировать ответы для трассировки.
Отключение ответа для трассировки может быть сделано из соображений безопасности, а также для того, чтобы снизить нагрузку на канал при отдельных разновидностях DDoS-атак.
3. Формат командной строки
Общий формат вызова утилиты выглядит следующим образом:
Параметры командной строки:
4. Пример трассировки
Рассмотрим пример трассировки. Для оценки доступности хоста, мы можем запустить утилиту для обмена пинг-пакетами и посмотреть какая будет задержка при соединении с удаленным хостом. При значении TTL = 1 нам ответит первый хост, при TTL = 2 мы получим отклик от второго сервера и так далее.
В целом, результат, который мы получим, будет кумулятивным по всем узлам маршрута и задержка в 200-300 миллисекунд нам ни о чем не скажет. Медлительность передачи данных может объясняться проблемами с каким-то одним маршрутизатором, определить который можно при помощи более подробной трассировки.
Первые три колонки, выводимых в консоли — это параметры отклика для трех пакетов, посылаемых для трассировки на каждый хоп. Как видим на картинке выше, для трассировки маршрута нам понадобилось семь хопов. Минимальный отклик последовал от первого узла — это домашний маршрутизатор и расстояние до него минимальное. По мере удаления от точки трассировки растет и задержка отклика.
5. Запуск в Linux
Наиболее важные аргументы для управления трассировкой в Linux:
6. Проблема с файрволами
7. Альтернативные инструменты
tracemap — программа, позволяющая выполнять трассировку пути для нескольких хостов одновременно. Информация, полученная в результате трассировки визуализируется в виде цветной диаграммы, на которой изображены узлы и топология сетевых подключений.
Сгенерированное изображение помогает наглядно увидеть как сгруппированы разнообразные интернет-ресурсы, насколько они физически далеко друг от друга отстоят. Диаграмма также может быть полезна при построении филиальной сети как дополнительный источник информации при выборе провайдера (аплинка).
Трассировка сети может быть реализована и виде публичного веб-сервиса. Например, с помощью онлайновой трассировки на сервисе https://ping-admin.ru/free_traceroute/ можно проверять задержки отклика хостов для различных географических мест — стран и городов. Данный сервис может опрашивать хосты протоколами UDP, ICMP и TCP.
Заключение
Теперь, когда вы разобрались с принципами трассировки и изучили возможности Tracert и Traceroute, вы можете изучить свою сеть и выявить неисправности ее узлов. Механизм анализирования пути сетевых пакетов очень прост и может быть задействован на любой операционной системе, включая Android и iOS.
Для закрепления рекомендуем посмотреть это тематическое видео:
Traceroute и Tracert: для чего предназначены утилиты и как ими правильно пользоваться?
Если с вашим каналом связи постоянно возникают проблемы, при этом сотрудники службы поддержки провайдера часто пожимают плачами, говоря, что на своей стороне они не видят проблем – выход есть! Утилита tracert может помочь разобраться – на каком узле может быть проблема.
Назначение команды
«Tracert» – это набор функций в Windows, разрешающих выполнять трассировку маршрута до указанного узла сети (локальной и глобальной). Утилита интегрирована в ОС и ее можно запустить через «CMD» или «PowerShell». Исполняемый файл «tracertpt.exe» находится в системном разделе папки System32.
Команда «tracert» достаточно частый гость во время сетевой диагностики и troubleshooting. С ее помощью определяется маршрут, по которому следует пакет до выставленного узла. Преимущество программы: работа с доменными именами, IPv4 и IPv6. Кроме определения маршрута, программа выявляет и демонстрирует время прохождения пакетов до транзитных, промежуточных и конечных узлов.
С помощью команды можно узнать:
Основные моменты работы и анализ
Чтобы провести трассировку пакетов данных от собственного ПК до сервера, введите его IP-адрес после основной команды.
Как видно на примере, введя команду, а затем IP-адрес, было определено, что это айпишник Яндекс сервера. Также были выявлены транзитные узлы, через которые приходится пройти пакету, чтобы попасть к конечному серверу «yandex.ru».
Примечательно, что команда понимает и доменные имена, выявляя их IP-адреса автоматически.
Когда вводится команда для трассировки маршрута, каждая пронумерованная строка называется шагом, прыжком (jump) или хопом.
Джампы, которые наблюдаются при работе утилиты, это роутеры, серверы или коммутаторы L3 провайдера. Важно отметить, что провайдеры могут использовать для подключения множества абонентов коммутаторы L2, которые обрабатывают и регистрирует МАС–адреса поступающих фреймов, осуществляют физическую адресацию и управляют потоком данных.
Таких коммутаторов в инфраструктуре сети провайдера могут быть десятки. Их не регистрирует «ТрасеРТ» из-за того, что L2 коммутаторы не используют IP-адреса. Пакет не задерживается на них и не фиксирует эти устройства, воспринимая их не более чем обычный кабель витой пары или оптоволокна.
СОВЕТ! Буква L обозначает уровень, на котором работает коммутирующее устройство – советую почитать про уровни модели OSI.
Делая запрос, утилита отправляет три запроса (TTL) на каждый шаг, получая от шага ответы. При отсутствии ответа, может указываться «*» в трех столбцах. В последнем столбце можно получить небольшую подсказку, с чем связано получение символа «*». Превышение интервала будет указано в случае, если ожидание превысило показатель в 4 секунды.
Звездочки не всегда значат, что порт неисправен или недоступен. Вероятно, они настроены таким образом, что не могут ответить на запрос ICMP-сообщением из-за того, такие настройки часто используются для защиты интернет ресурсов от DDoS-атак.
При получении пакета первые три столбца содержат данные RTT и знаменуют количество мс, за которые пакет прошел от узла к узлу. Четвертый столбец указывает IP-адрес (или доменное имя конечного адресата) тех узлов, что ответили.
Оправляемые пакеты
Диагностика сети происходит благодаря посылаемым пакетам. Утилита «Tracet» в Windows работает с протоколом ICMP. Еще, есть команда traceroute – она входит в дистрибутивы Linux и присутствует в качестве функций однотипных приложений, например, Linux Mint. Последняя использует UDP-протокол для посылания по узлам сети.
Также, наличие перл-библиотеки, graphviz и подтянутого скрипта разрешает после выполнения основного программного запроса вывести узлы трассировки в графическую tracemap.
При этом файл сохранится в «tracemap.png» и будет похож на карту, представленную ниже.
ICMP-сообщение запаковывается в IP-пакет перед самой отправкой. У такого сообщения есть собственное время жизни (TTL – time to live). При каждой отправке пакета TTL увеличивается на 1. Первый отправленный в сети пакет равен 1. Команда в качестве дефолтных настроек посылает 3 пакета с одинаковым TTL чтобы в качестве ответа от узла были получены также 3 пакета.
Дефолтное значение TTL, используемое трассировкой равно 30. Однако, IPv4 протокол способен на максимальный TTL в 255 единиц. Опытным путем было определено, что TTL в районе 30 шагов будет достаточно, чтобы добраться до конечных узлов определяемых веб-ресурсов.
Ключи для команды
Как сделать трассировку к сайту?
Как сделать трассировку сайта
Сегодня я расскажу, как сделать трассировку к сайту, т.е. выполнить команду tracert в командной строке Windows. Для чего это вам может понадобиться?
Обычно трассировка используется техническими специалистами для выявления проблем в сети. Например, у вас вдруг ни с того ни с сего в браузере перестал открываться какой-то конкретный сайт или открывается очень медленно. Вы с этой проблемой обращаетесь на форум своего интернет-провайдера. Там вас почти наверняка сразу попросят сделать трассировку до этого сайта и выложить результат.
Выполняется трассировка с помощью команды tracert. Данная команда позволяет узнать путь прохождения запроса к серверу, на котором расположен сайт, и выявить на каком пункте маршрута есть проблемы с передачей.
Как же сделать эту трассировку?
Заходим на своем компьютере в “Пуск” – “Выполнить” (или можно нажать на клавиатуре одновременно клавиши Win+R). Набираем команду cmd и жмем “ОК”:В открывшемся черном окне пишем команду tracert и через пробел название интересующего нас сайта (вместо имени сайта можно использовать его IP-адрес):
После этого нажимаем клавишу Enter на клавиатуре.
Командой tracert мы инициируем отправку пакетов данных конкретному получателю (сайту). Отправленные пакеты проходят через все промежуточные узлы между вашим компьютером и получателем (обычно это маршрутизаторы разных провайдеров в зависимости от местоположения сайта). Таким образом, с помощью трассировки определяется маршрут до нужного вам сайта или IP, и время отклика каждого промежуточного узла в миллисекундах. Чем время отклика меньше, тем быстрее осуществляется передача пакетов на этом участке маршрута (т.е. данные проходят без помех).
Если в процессе трассировки в какой-либо строке вы видите звездочки – это означает, что превышен интервал ожидания для запроса, а это равноценно потере пакетов на данном участке маршрута. Т.е. в этом месте цепочки имеется проблема. Если пакеты не выходят за пределы сети вашего провайдера – проблема в нем.
Как видите, в моем случае трассировка далеко не прошла – остановка произошла где-то на оборудовании провайдера:
Как пользоваться командами ping и tracert
В статье мы расскажем, для чего нужны утилиты ping и tracert, как запустить эти утилиты, а также приведем примеры команды ping для диагностики сети.
Ping и tracert — это утилиты для проверки целостности соединений в сетях и определения маршрутов следования данных на основе TCP/IP. Без этих утилит не обойтись не только при администрировании серверов (или целой сети), но и в условиях «домашней» диагностики.
Команда ping
Команда ping — один из базовых инструментов для работы с сетью. С помощью ping можно проверить сервер и его доступность с любого компьютера, а также соединение между устройствами.
Если вы задавались вопросом «Как я могу узнать мой IP адрес и порт?», то мы дадим вам ответ: командой пинг можно как узнать порт компьютера, так и определить его IP.
Также с помощью команды ping можно выполнить такие диагностические задачи, как:
измерить время взаимодействия между двумя хостами;
проверить IP-адрес конкретного хоста в локальной и глобальной сети;
автоматически проверить сетевое устройство (например, когда ping является частью bash-скрипта);
проверить пинг до сервера и др.
Как пользоваться ping
Если у вас Windows
Откройте меню «Пуск», кликните по пункту Выполнить или нажмите сочетание клавиш Win + R.
В поиске введите команду «cmd» и кликните Enter.
В окне терминала введите команду:
Если у вас Linux
1. Откройте терминал. Для этого:
в Unity (Ubuntu): перейдите в «Главное меню» и введите слово «Терминал» в поисковой строке или наберите сочетание клавиш Ctrl+Alt+T;
в Xfce (Xubuntu): перейдите в «Главное меню» — «Приложения», затем выберите «Система» — «Терминал»;
в KDE (Kubuntu): перейдите в «Главное меню» — «Приложения», затем выберите «Система» — «Терминал».
2. В окне терминала введите команду:
Если у вас кириллический домен
Для Windows и Linux кириллические домены нужно вводить в формате Punycode. Перевести домен в формат Punycode можно через сервис. Сконвертируйте имя кириллического домена и вставьте его в окно терминала следующим образом: ping xn--2-8sble8ahe.xn--p1ai
Если у вас MacOS
В Spotlight выберите и запустите сетевую утилиту Network Utility.
В открывшемся окне перейдите на нужную вкладку.
На вкладке Ping введите имя домена (или IP-адрес) и кликните Отследить:
Готово, вы запустили утилиту ping.
Команда tracert
Команда tracert – самый популярный инструмент сетевой диагностики. С помощью tracert можно проверить путь запроса к серверу и выявить проблемы, связанные с доступностью удаленного сервера. Сообщения отправляются с эхо-запросом по протоколу ICMP, и после каждой передачи выводится сообщение с эхо-ответом.
Командой tracert можно проверить:
маршрут от локального компьютера до удаленного узла;
количество узлов в сети;
время прохождения пакета до конечного, транзитного и промежуточного узлов;
точку потери пакета;
пинг порта через командную строку.
Как запустить tracert
Если у вас Windows
Откройте меню «Пуск», кликните по пункту Выполнить или нажмите сочетание клавиш Win + R.
В поиске введите команду «cmd» и кликните Enter.
В открывшемся окне терминала введите команду:
Если у вас Linux
1. Откройте терминал. Для этого:
в Unity (Ubuntu): перейдите в «Главное меню» и введите слово «Терминал» в поисковой строке или нажмитесочетание клавиш Ctrl+Alt+T;
в Xfce (Xubuntu): перейдите в «Главное меню» — «Приложения», затем выберите «Система» — «Терминал»;
в KDE (Kubuntu): перейдите в «Главное меню» — «Приложения», затем выберите «Система» — «Терминал».
2. В окне терминала введите команду:
Если у вас MacOS
В Spotlight выберите и запустите сетевую утилиту Network Utility.
В открывшемся окне перейдите на нужную вкладку.
На вкладке Traceroute введите имя домена (или IP-адрес) и кликните Отследить:
Готово, вы запустили утилиту tracert.
Если у вас установлена ОС Windows и вы хотите упростить диагностику подключения, скачайте утилиту WinMTR. Как пользоваться WinMTR, читайте на тематических блогах.
Источники информации:
- http://wifigid.ru/poleznoe-i-interesnoe/trassirovka
- http://beget.com/ru/kb/how-to/troubleshooting/kak-sdelat-ping-i-trassirovku-v-oc-windows
- http://ipipe.ru/info/kak-sdelat-trassirovku
- http://zametkinapolyah.ru/zametki-o-poleznyx-programmax/komanda-tracert-v-windows.html
- http://master-server.pro/blog/ping-traceroute
- http://highload.today/traceroute-tracert/
- http://wifigid.ru/raznye-sovety-dlya-windows/tracert
- http://blogsisadmina.ru/instrumenty-sisadmina/kak-sdelat-trassirovku-k-sajtu.html
- http://2domains.ru/support/hosting/ping-and-tracert