Для чего нужна трассировка
Что такое трассировка маршрута в 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».
Трассировка маршрута: зачем она нужна?
Представьте себе ситуацию: вы сидите в интернете, никого не трогаете, и тут ваш любимый сайт перестает грузиться. Интернет упал, думаете вы. Но оказывается, что остальные сайты грузятся нормально. Как определить, что случилось? Вам поможет трассировка маршрута.
Наверное, всем известно, что любой сайт находится на сервере — специальном компьютере. Когда мы вводим адрес сайта в адресную строку браузера и нажимаем на кнопку «Перейти», мы тем самым отправляем запрос к серверу. По пути к сайту наш запрос проходит несколько промежуточных узлов связи, и если с ними все в порядке — то сайт отображается в браузере.
Если же сайт не грузится, значит, наш запрос не дошел из-за проблемы на каком-то из узлов связи (промежуточных компьютеров или маршрутизаторов). Проблема может быть у вас самих (например, проблема с кабелем; хотя при этом не будут грузиться и остальные сайты), у вашего интернет-провайдера или на стороне хостера сайта. Определить, на каком именно участке канала связи теряется ваш запрос, поможет трассировка маршрута.
Трассировка маршрута выполняется при помощи служебной программы Traceroute/Tracert. Эта программа входит в комплект поставки практически всех современных сетевых ОС (операционных систем, поддерживающих работу в компьютерных сетях). В ОС Microsoft Windows эта программа называется tracert, а в Linux и Mac OS X — traceroute.
Принцип действия этой программы схож с принципом действия программы ping. Traceroute отправляет на сервер данные и при этом фиксирует все промежуточные маршрутизаторы, через которые проходят эти данные на пути к серверу (целевому узлу). Если при доставке данных до одного из узлов происходит проблема, программа определяет участок сети, на котором возникли неполадки.
Как производится трассировка маршрута в Windows? Программа tracert, как и программа ping, запускается из командной строки. На всякий случай напоминаем, как войти в командную строку в Windows. Есть три основных способа:
В открывшемся окне набираем команду tracert имя_сайта (например, tracert yandex.ru) и нажимаем на клавишу Enter. Вместо адреса сайта можно ввести его IP адрес (если он вам, конечно, известен). Введя адрес, мы тем самым установили маршрут до конечного узла. В окне командной строки в реальном времени выводятся результаты трассировки: название и IP адрес промежуточных узлов, время отклика в миллисекундах.
Как использовать эти данные для решения проблемы? Время отклика показывает загруженность канала. Но даже если время отклика большое, сайт будет грузиться — пусть и с трудом. А вот если вместо времени отклика вы видите надпись «Превышен интервал ожидания для запроса», это значит, что на данном узле связи происходит потеря данных, а значит, проблема именно в нем.
Итак, трассировка маршрута помогает определить проблемный узел. Если данные проходят нормально и «стопорятся» на самом пункте назначения, то проблема действительно с сайтом. Если трассировка маршрута прекращается на середине пути, то проблема в одном из промежуточных маршрутизаторов. Если прохождение пакетов прекращается в пределах сети вашего провайдера — то и проблему нужно решать «на местном уровне».
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.
Трассировка: что это такое, для чего нужна и как правильно пользоваться?
Всем привет! Как вы уже поняли, сегодня я постараюсь подробно, но максимально кратко рассказать, что такое отслеживание маршрутов в локальных и глобальных сетях. Я также расскажу, в чем разница между измерением треков в Windows и Linux. Некоторые думают, что когда вы вводите примерно одни и те же команды, инженер получит ту же информацию, но на самом деле это не совсем так — подробнее об этом позже. Если есть вопросы или дополнения, пишите в комментариях.
Определение
Трассировка — это, по сути, тест, при котором пользователь может увидеть путь, по которому пакет данных идет к целевому серверу. То есть через какие узлы он проходит и с какой задержкой. Например, с помощью стандартной команды «Ping» вы получите информацию о времени ответа или времени отправки и получения пакета. И когда вы проследите, вы увидите, через какие IP-узлы этот же пакет проходит на конечный сервер.
Эта утилита часто используется инженерами или системными администраторами для выявления слабых мест в сети. В общем, штуковина пригодится практически всем. Далее я расскажу, как отслеживать сайт или выделенный игровой сервер, а также как им пользоваться в целом.
Windows
В «windows» эту функцию выполняет системный модуль или утилита «Tracert». Как вы понимаете, он находится в папке «System32», как и другие подобные прошивки. Для начала вам обычно нужно использовать командную строку. Утилита хорошо работает как с доменными именами, так и с IP-адресами, включая IPv4 и IPv6. Кроме того, преимуществом является то, что его не нужно устанавливать и он входит в стандартный пакет Windows во всех версиях: XP, 7, 8, 8.2 и 10.
А теперь попробуем его использовать. Для этого вам нужно запустить командную строку. В Windows 7 перейдите в «Пуск» — «Все программы» — откройте папку «Стандартные», затем щелкните правой кнопкой мыши командную строку и откройте ее с правами администратора.
ПРИМЕЧАНИЕ! Его также можно открыть с помощью «Win + R» и команды «CMD».
В Windows 10 щелкните правой кнопкой мыши «Пуск» и выберите консоль с правами администратора.
Так что все делается довольно просто: сначала записываем команду «tracert», потом через пробел записываем IP-адрес сервера. В качестве примера я использовал известный DNS-сервер:
Кроме того, вы можете использовать не только IP, но и доменное имя, состоящее из букв. Запустим тест на Яндексе на примере:
Здесь мы видим вид на несколько шагов. Каждый шаг — это прохождение пакета от одного узла к другому. Смотрите также время прохождения, которое указывается в миллисекундах. Затем вы увидите имя хоста и IP-адрес, которые указаны в скобках. Если узел не отвечает или время ожидания превышено, вы увидите звездочку (*) в столбце времени (*).
Теперь позвольте мне рассказать вам о проблеме с этим тестом. Проблема в том, что команда не показывает некоторые узлы, то есть переключатели, которые работают со вторым уровнем модели OSI. А все из-за того, что у них нет представления интерфейса подключенных устройств в виде IP. То есть переключение происходит на втором уровне, где нет IP-адресов, а связь осуществляется с использованием таблицы MAC-адресов. И понятно, что таких узлов в таблице нет.
Более подробно также рекомендую прочитать про модель OSI и переключатели.
Следовательно, для этой команды все параметры, которые работают со вторым уровнем модели OSI, просто невидимы. Tracert использует протокол управляющих сообщений Интернета (ICMP), который передает данные только в IP-пакете со значением TTL. TTL — время жить для пакета.
Первоначально, когда пакет отправляется на первый узел, значение TTL равно единице. А при отслеживании одновременно отправляются три пакета — поэтому мы видим три столбца времени. Если все пакеты вернутся, мы рассчитываем увидеть время во всех трех столбцах. Затем TTL увеличивается на один, и на следующий узел отправляются еще три пакета. И так до конца, пока последний запрос не достигнет конечного узла.
ПРИМЕЧАНИЕ! Если вы видите звездочку, но пакет все еще проходит через этот узел, скорее всего, на этом маршрутизаторе или сервере есть настройка, которая не обрабатывает запросы ICMP. Они очень часто используются для DDoS-атак, поэтому их обработка иногда отключается.
Как и у любой утилиты, есть список дополнительных параметров, которые могут немного модифицировать тест. Для звонка необходимо ввести:
Команда очень полезна не только для работы и тестирования работающих сетей, но и для выявления проблем с Интернетом. Я помню, что мой друг постоянно пользовался высоким откликом в Counter-Strike, но все еще не мог понять, почему — в конце концов, у меня в моем доме по соседству было на порядок меньше пингов. Во время трассировки он увидел серьезную стагнацию пакетов на первом узле (провайдере). В результате он обратился к оператору, и они поменяли старый переключатель, который был там, который был неправильным со времен Российской Империи.
Linux
Итак, в Windows мы уже выяснили, что трассировку выполняет утилита tracert.exe. В Linux эта утилита носит другое название: «traceroute» — и делает это тоже, но немного по-другому.
Вспомним, как работает tracert на примере изображения ниже:
И проблема в том, что «tracert» не может делать запросы через порт, что делает его немного тесноватым. Traceroute работает на основе совершенно другого протокола: UDP. Фактически протокол UDP делает запрос к портам. И конец трассировки, когда пакет достигает конечного узла, происходит, когда на каждом проходе, когда номер порта увеличивается, он закрывается на целевом сервере.
Так же запускаем программу через консоль. У него тоже есть свои параметры.
Кстати, при трассировке можно использовать не UDP, а протокол ICMP, для этого нужно добавить параметр «-I».
Но что, если вам нужно выполнить трассировку UDP и использование портов в Windows? Для этого вам потребуется прошивка стороннего производителя: «tcptrace». Для трассировки пути TCP (и UDP) вы можете использовать «tcptraceroute».