Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжим разбираться с полезными командами и утилитами командной строки Windows, на этот раз давайте разберемся с сетевой утилитой tracert, мы поговорим зачем нужна команда tracert и как ею пользоваться для диагностики компьютерной сети и устранению неполадок. Как мы увидим, утилиту tracert используют сетевые инженеры и системные администраторы для определения маршрута прохождения IP-пакета по сети, вы убедитесь, что этой утилитой довольно легко пользоваться, но не все умеют правильно оценивать результаты работы этой команды, о некоторых сложностях, которые могут возникнуть при интерпретации трассировка маршрута мы поговорим в самом конце этой публикации.
Если вам интересна тема компьютерных сетей, то в блоге уже практически закончена первая часть курса по основам компьютерных сетей, можете ознакомиться с ее содержимым. И вот здесь можно получить немного информации о самом курсе основанном на Cisco ICND1.
Содержание статьи:
- 1 Назначение команды tracert или как определить маршрут прохождения пакета до узла
- 2 Параметры команды tracert в Windows
- 3 Примеры использования утилиты tracert для устранения проблем в сети
- 4 Несколько советов о том, как читать и интерпретировать выводы результатов работы команды tracert
- 5 Выводы
Назначение команды 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.
[php]
PS C:\WINDOWS\system32> tracert /?
Использование: tracert [-d] [-h максЧисло] [-j списокУзлов] [-w таймаут]
[-R] [-S адресИсточника] [-4] [-6] конечноеИмя
Параметры:
— d Без разрешения в имена узлов.
— h максЧисло Максимальное число прыжков при поиске узла.
— j списокУзлов Свободный выбор маршрута по списку узлов (только IPv4).
— w таймаут Таймаут каждого ответа в миллисекундах.
— R Трассировка пути (только IPv6).
— S адресИсточника Используемый адрес источника (только IPv6).
— 4 Принудительное использование IPv4.
— 6 Принудительное использование IPv6.
[/php]
Справка Windows дает подробные пояснения к параметрам команды, думаю, добавлять ничего не нужно, всё станет еще более очевидно, когда мы посмотрим примеры использования утилиты tracert с параметрами.
Примеры использования утилиты tracert для устранения проблем в сети
Как я уже говорил, утилита tracert может принимать несколько параметров, один из них мы уже рассмотрели – адрес удаленного узла в сети, этот параметр обязательный, давайте разберемся с другими параметрами этой утилиты и посмотрим, как их комбинировать и что можно в результате получить. Для начала посмотрим на параметр –d, на мой взгляд он самый непонятный, что означает это – без разрешения в имена узлов. Всё будет ясно, когда мы посмотрим на вывод команды tracert с параметром –d.
Как работает утилита tracert с параметром -d в Windows
Всё очевидно: «без разрешения в имена узлов» означает, что в выводе будут отсутствовать имена хостов, через которые проходит IP-пакет, это бывает удобно, некоторые провайдеры и дата-центры любят задавать длинные имена и вывод становится неудобно читать.
Мы уже делали трассировку до сервера Майкрософт, давайте теперь повторим ее, но ограничим количество хопов до 10 и не будем выводить имена хостов, для этого нужно будет скомбинировать параметры –d и –h. Для команды tracert в Windows последовательность параметров в данном случае не имеет значение.
Как ограничить количество хопов для tracert в Windows или параметр –h
Результата работы параметра –j, который дает возможность свободного выбора маршрута, я, к сожалению, вам не покажу, чтобы узнать больше о том, что дает параметр –j для команды tracert почитайте про опцию LSRR (Loose Source and Record Route), в противоположность есть опция строгой маршрутизации от источника (Strict Source and Record Route – SSRR). Команда tracert с параметром –j работает примерно так: tracert -j 10.10.10.1 20.20.20.20 30.31.44.1 google.com. После параметра –j идет список транзитных узлов, которых должно быть не больше 9 (меньше можно), а в конце адрес узла в сети, до которого вы хотите получить трассировку.
Еще одни полезным параметром утилиты tracert является параметр –w, он позволяет задать команде tracert максимальное время ожидания ICMP-ответа от удаленного узла, значение этому параметру задается в миллисекундах, по умолчанию в Windows это значение равно 4000 мс, это означает, что команда будет ждать ответа от удаленного узла не больше 4 секунд. Пример использование tracert с параметром –w: tracert –w 1000 8.8.8.8. В данном случае мы сказали команде, что не стоит ждать ответ дольше одной секунды.
К сожалению, у меня нет возможности продемонстрировать работу команды tracert с параметрами для протокола IPv6, сюда входят такие параметры как: -R для трассировки пути, -S для указания IPv6 адреса источника. Параметры -6 и -4 будут полезны, если в своей сети вы используете два протокола: IPv6 и IPv4. Но чтобы уж совсем не оставаться без примеров, обратите внимание на листинг ниже.
[php]
C:\Users\example>tracert -6 ipv6.google.com
Tracing route to ipv6.l.google.com [2a00:1450:8003::93]
over a maximum of 30 hops:
1 1 ms 1 ms <1 ms ipv6.myhome.example.org [2001:db8:100::1]
2 18 ms 18 ms 17 ms gw-392.dus-01.de.provider.net [2001:db8:200:187::1]
3 22 ms 17 ms 16 ms provider.gateway.example.com [2001:db8:200::1]
4 27 ms 26 ms 30 ms 2001:7f8:8::3b41:0:1
5 34 ms 30 ms 31 ms 2001:4860::1:0:60d
6 33 ms 33 ms 35 ms 2001:4860::1:0:fdd
7 42 ms 41 ms 39 ms 2001:4860::1:0:12
8 40 ms 40 ms 40 ms 2001:4860::2:0:66f
9 41 ms 50 ms 50 ms 2001:4860:0:1::2d
10 45 ms 40 ms 40 ms 2a00:1450:8003::93
[/php]
Здесь используется параметр -6 при трассировке узла ipv6.google.com. В общем-то с примерами использования утилиты tracert можно завершить, как видите, здесь нет ничего сложного. Гораздо сложнее интерпретировать и анализировать выводы этой команды.
Несколько советов о том, как читать и интерпретировать выводы результатов работы команды tracert
Во-первых, отмечу, что пользоваться командой tracert очень легко, на самом деле очень легко пользоваться любыми сетевыми утилитами, легко писать команды на сетевых устройствах, но понимать, как это всё работает, задача гораздо более сложная. Понимать выводы команды tracert тоже непросто, иногда даже невозможно их правильно интерпретировать.
Вы наверняка думает, что tracecrt позволяет вам правильно оценить задержку прохождения пакетов по сети, ведь так? Всё вроде бы очевидно, три раза отправили, три раза получили, взяли среднее арифметическое и получили среднее время, так? Нет, не так. У пакетов есть время распространения по сети, а у сетевых устройств есть такие факторы как сериализация и буферизация, они довольно сложные.
Когда вы используете tracert или traceroute не забывайте, что маршрутизатор, который будет отвечать на ваши запросы, обрабатывает эти запросы несколько иначе, чем полезный сетевой трафик, который проходит через него транзитом. Мы с вами делали трассировки до узлов Яндекса, Гугла и Майкрософта, мы получали определенные задержки на хопах, но при трассировке мы видим только маршрут «туда», обратный маршрут с вероятностью 90% будет отличаться, но у вас нет возможности сделать трассировку до себя с указанных серверов. То есть получается, что мы видим маршрут «туда», но получаем усредненное время, которое получается путем сложения времени, которое будет затрачено на то, чтобы добраться туда с временем, которое будет затрачено на то, чтобы добраться обратно другим маршрутом (еще раз повторю, что маршрут «обратно» не обязательно должен совпадать и очень часто не совпадет с маршрутом «обратно»), несовпадение маршрутов главным образом связано с коммерческой и юридической сферой взаимодействия провайдеров и других крупных игроков интернета.
Провайдеры используют протоколы динамической маршрутизации, у которых есть функция балансировки трафика, часто до одного и того же сервера можно добраться по нескольким маршрутам. Иногда, когда вы делаете трассировку, ваш первый пакет «туда» идет одним маршрутом, а ваш второй пакет «туда» пойдет другим маршрутом.
Команда tracert только на первый взгляд кажется простой, на самом деле это не так, я сейчас даже не говорю про простых пользователей, многие админы умеют пользоваться tracert на уровне обезьяны и не хотят это исправлять, иначе не объяснишь их восприятие звездочек в выводе («это потери, ужас, мрак, хостер, провайдер, дата-центр, за что я плачу тебе 100 рублей?» обычно именно такие ребята поднимают поросячий визг из-за своей некомпетентности в вопросе, потому что те кто может платить больше, позволяют себе нанимать более компетентных людей, хотя это и не всегда так), например, вот так:
[php]
1 * <1 мс <1 мс 192.168.0.1
[/php]
Если вы посчитали первый ответ потерей, то вам нужно изучать принцип работы tracert, а также помнить, что сетевое оборудование можно настраивать, в том числе и на работу с ICMP, а может это не потери, а роутер настроен таким образом, чтобы игнорировать часть запросов?
Tracert прекрасно справляется со своей задачей – она отображает путь, по которому проходит IP-пакет, а также время ответа транзитных роутеров/маршрутизаторов, но при помощи данной утилиты невозможно точно оценить потери и нельзя с уверенностью сказать – на каком участке сети потери происходят, чтобы оценить потери в компьютерной сети (здесь можно почитать про основные характеристики компьютерной сети), лучше воспользоваться стандартной утилитой Windows, которая называется pathping, либо более удобной программой WinMTR или mtr в операционных системах семейства Linux.
Выводы
Итак, мы разобрались с использованием команды tracert в Windows и ее параметрами, посмотрели примеры трассировок, которые нам выводила утилита tracert, но главное нужно сделать вывод о том, что утилита tracert не такая простая, как кажется на первый взгляд, и чтобы ее правильно использовать, нужно иметь представление о том, как вообще работают компьютерные сети.
К сожалению, об этом многие забывают, если вас это не убедило, то представьте, что вы пришли к доктору на обследование, который в совершенстве умеет пользоваться своими докторскими инструментами: он знает, что стетоскоп нужно вставлять в уши, прикладывать другой его конец к груди и спине пациента, говорит дышите, не дышите, но этот доктор совершенно не знает ничего о том, как работает человеческое тело, он не понимает, что он слышит в своём стетоскопе и в конце концов поставит неверный диагноз. Аналогичная ситуация и с командой tracert, которой проще пользоваться, чем стетоскопом.
От А до Я: как работают Tracert и Traceroute
Поскольку есть множество возможных причин неполадок в сети, наличие знаний и инструментов для их устранения поможет вам существенно сэкономить время.
Один из наиболее распространённых и удобных инструментов, которые используются для этой цели, – это Tracert или Traceroute. В этой статье мы рассмотрим, как работают эти команды, за что они отвечают и чем отличаются.
- Что такое Tracert и Traceroute
- Что такое трассировка
- Как работает трассировка
- Как работает Traceroute / Tracert
- В чём заключаются отличия Tracert от Traceroute
- Как использовать Tracert / Traceroute
- Утилита Tracert (Windows)
- Утилита Traceroute (Linux и macOS)
- Как расшифровать выводы Tracert и Traceroute
Что такое Tracert и Traceroute
Traceroute и Tracert – это сетевые утилиты, которые используются для определения маршрута (пути), по которому пакеты данных передаются от одной точки к другой в интернете или других IP-сетях. Они помогают пользователям и сетевым администраторам анализировать, как именно данные передаются от исходного компьютера к целевому устройству, и выявлять возможные проблемы в сетевой инфраструктуре.
Хотя у этих команд и разные названия, они выполняют аналогичные функции в зависимости от операционной системы – Tracert в Windows и Traceroute в Linux и MacOS. Они позволяют отслеживать маршрут, который данные проходят от отправителя к получателю. Это особенно важно в условиях сложных сетевых инфраструктур, где данные могут проходить через множество промежуточных устройств: например, маршрутизаторов, коммутаторов и файрволов.
Как мы уже упомянули, когда данные отправляют от одного узла сети к другому, они проходят через несколько промежуточных устройств. Traceroute и Tracert позволяют наблюдать за каждым этапом этого пути, предоставляя информацию о времени задержки при передаче данных (RTT), а также об именах и IP-адресах устройств.
В отличие от команды Ping, которая может лишь указать на наличие проблемы в сети, Traceroute и Tracert помогают точно определить, где именно возникла проблема. Они стали неоценимыми инструментами для администраторов сетей, потому что помогают им быстро локализовать и устранить неполадки.
Что такое трассировка
Трассировка (а точнее распределённая трассировка) представляет собой критически важный инструмент для анализа и управления сложными информационными системами, особенно когда дело доходит до микросервисных архитектур.
Она позволяет отслеживать жизненный цикл запроса в распределённой системе, начиная от момента его поступления и заканчивая завершением обработки. Это достигается за счёт сбора и анализа данных о том, как запрос перемещается и обрабатывается через различные службы, которые могут быть работать независимо друг от друга.
Если журналирование фиксирует конкретные события – например, доступ к базам данных или запись файлов, – то трассировка создаёт связанную картину всех событий в ходе обработки запроса. Трассировку можно сравнить с интерактивной картой, которая показывает путь вашего запроса через систему. Она объединяет фрагменты информации из журналов разных служб в цельную картину, позволяя пользователям лучше понять взаимосвязь между различными компонентами системы и выявить слабые места.
Каждый этап трассировки детально показывает, через какие этапы прошёл запрос, сколько времени заняло каждое действие и общее время, необходимое для обработки запроса. В то время как журналы предоставляют детали о действиях, выполняемых каждым сервисом, система трассировки предлагает полную карту всех событий, начиная с первоначального запроса.
Таким образом, трассировка не просто предоставляет данные о событиях в системе, она создаёт полный путеводитель по жизненному циклу запроса, который помогает разработчикам распознавать проблемы с производительностью и эффективно реагировать на них.
Как работает трассировка
Перед началом работы с трассировкой стоит разобраться в структуре монолитных или микросервисных приложений.
Монолитные приложения создаются как единая блочная структура, где все функции приложения тесно связаны и работают как одно целое. В отличие от них, микросервисные архитектуры состоят из отдельных, независимо функционирующих модулей или служб, каждая из которых отвечает за отдельную функцию в приложении и часто поддерживается отдельной командой разработчиков.
Микросервисные архитектуры стали основой многих современных приложений, поскольку они облегчают масштабирование, тестирование и быстрое внедрение обновлений. Эта модульность также помогает предотвратить возникновение единой точки отказа, повышая надёжность системы.
Однако диагностика проблем в микросервисных приложениях – это довольно трудная задача из-за их разнообразия и сложности взаимодействий между отдельными сервисами, а также множественных связей между службами, которые могут участвовать в обработке одного запроса.
Трассировка позволяет разработчикам визуализировать весь путь запроса от фронтенда к серверным процессам, тем самым точно локализуя места сбоев или узкие места в производительности. При отправке запроса пользователем, например, через веб-форму, система трассировки генерирует уникальный идентификатор, который присваивается запросу. Этот идентификатор помогает отслеживать каждый шаг обработки запроса, что значительно упрощает процесс устранения неполадок.
Для сбора данных о маршруте запросов в сети и используются такие инструменты, как Traceroute и Tracert. Эти утилиты позволяют выявлять маршруты прохождения данных в сети, что полезно не только для диагностики сетевых проблем, но и для анализа производительности сетевой инфраструктуры.
Как работает Traceroute / Tracert
- Утилита использует определённый протокол для отправки последовательности IP-пакетов (UPD или ICPM).
- По умолчанию количество пакетов ограничено и равно 3.
- Каждый следующий пакет отправляется с увеличением времени жизни TTL (Time To Live) на 1. Так, у первого пакета TTL=1, у второго – TTL=2 и так далее.
- При передаче от одного маршрутизатора к другому TTL каждого пакета уменьшается на 1, чтобы предотвратить возможное бесконечное перемещение пакета между маршрутизаторами.
- Когда TTL пакета достигает нуля, маршрутизатор уничтожает пакет и отправляет обратно сообщение об ошибке.
Этот путь помогает утилите определить каждый маршрутизатор на пути к назначению, поскольку каждый из них отклоняет пакет и отвечает на него.
В чём заключаются отличия Tracert от Traceroute
Хотя Tracert и Traceroute выполняют схожие функции, их реализация в различных операционных системах отличается по методам и протоколам.
Tracert
Tracert – это утилита, которая использует протокол ICMP (Internet Control Message Protocol) для отслеживания пути пакетов данных.
Процесс начинается с отправки ICMP-пакета с начальным TTL (Time to Live) равным 1. TTL – это условных счётчик на каждом маршрутизаторе, который уменьшается на единицу при каждом переходе пакета от одного устройства к другому.
Когда TTL достигает нуля, маршрутизатор, обработавший пакет, не отправляет его дальше, а возвращает исходному хосту сообщение ICMP «Time Exceeded», что позволяет Tracert зарегистрировать устройство как промежуточный пункт (хоп).
Этот процесс повторяется, увеличивая TTL на единицу за каждую итерацию, пока либо не будет достигнут конечный хост, либо не будет достигнут предел (как правило, в 30 или 64 прыжка). Когда пакет наконец достигает целевого хоста, он посылает сообщение Echo Reply, сообщая об успешном завершении трассировки.
Traceroute
На Unix-подобных системах (например, Linux и MacOS) используется утилита Traceroute, которая отличается использованием UDP (User Datagram Protocol) вместо ICMP для отправки пакетов.
Traceroute отправляет несколько UDP-пакетов с последовательно увеличивающимися значениями TTL (начиная с 1 и далее). Как и в случае с Tracert, каждый маршрутизатор уменьшает TTL на 1, и при достижении нуля отправляет обратно ICMP сообщение «Time Exceeded».
Ключевое отличие состоит в том, как Traceroute определяет достижение конечной цели: когда UDP-пакет достигает целевого хоста, последний обычно отвечает сообщением «Destination Port Unreachable» из-за того, что целевой порт (обычно редко используемый порт, например, 34434) закрыт. Это сообщение означает, что пакет достиг своего конечного пункта.
Как использовать Tracert / Traceroute
Утилита Tracert (Windows)
Общий синтаксис:
tracert [-d] [-h максимальное-число] [-j список-узлов] [-w таймаут] [-R] [-S адрес-источника] [-4] [-6] <доменное имя или IP-адрес>
- Нажмите клавишу Win, чтобы открыть меню «Пуск».
- Введите cmd в поисковой строке и выберите «Командная строка» в результатах поиска.
- В открывшемся окне командной строки введите tracert, затем добавьте доменное имя или IP-адрес цели. Например:
tracert www.sweb.ru
- Нажмите Enter, чтобы выполнить команду и начать трассировку.
Результат будет примерно следующим:
Вы также можете включить добавить к команде Tracert различные дополнительные параметры, которые помогут уточнить и улучшить результаты вашей трассировки.
Ниже приведены примеры некоторых параметров для этих команд:
Команда |
Описание |
---|---|
-h [количество-прыжков] |
Укажите максимальное количество прыжков при поиске узла. По умолчанию это значение равно 30. |
-n |
Исключает доменные имена из результатов Traceroute. |
-q [количество пакетов] |
По умолчанию команда Tracert отправляет 3 пакета. Этот параметр помогает изменить это число. |
-j [список-узлов] |
Позволяет выбрать маршрут по списку узлов (только для IPv4). |
-w wait_time |
Устанавливает максимальное время ожидание каждого ответа в миллисекундах. |
-p |
Задаёт порт назначения для запроса. |
-f |
Указывает, с какого TTL начать. По умолчанию значение равно 1. |
-4 |
Задаёт принудительное использование IPv4. |
-6 |
Задаёт принудительное использование IPv6. |
Утилита Traceroute (Linux и macOS)
Общий синтаксис:
traceroute [опции] <доменное имя или IP-адрес>
- Зажмите сочетание клавиш Ctrl + Shift + T, чтобы открыть терминал.
- Введите команду traceroute, затем добавьте доменное имя или IP-адрес цели. Например:
traceroute www.sweb.ru
- Для запуска процесса нажмите Enter.
Результат будет примерно следующим:
Вы также можете включить добавить к команде Traceroute различные дополнительные параметры, которые помогут уточнить и улучшить результаты вашей трассировки.
Ниже приведены примеры некоторых параметров для этих команд:
Параметр |
Описание |
---|---|
-I |
Команда Traceroute в Linux по умолчанию отправляет пакеты-пробы с использованием протокола UDP. Эта опция позволяет изменить их на пакеты ICMP. |
-n |
Исключает имена устройств из результатов Traceroute. |
-q [количество-пакетов] |
По умолчанию Traceroute отправляет три пакета. Вы можете изменить это количество, используя эту опцию и указав количество пакетов. |
-d |
Включает отладку на уровне сокетов. |
-m [максимальное-TTL] |
Задаёт максимальное количество прыжков для процесса трассировки. По умолчанию максимальное значение TTL составляет 30. |
-w [время-ожидания] |
Задаёт максимальное время ожидания для каждого ответа. |
-r |
Позволяет обойти обычные таблицы маршрутизации и направить IP-пакеты непосредственно хосту в прямо подключенной сети. |
-p |
Устанавливает порт назначения для запроса. По умолчанию используется порт 33434. |
-g [адрес-шлюза] |
Направляет исходящие пакеты на указанный шлюз, используя опцию маршрутизации по исходному IP. |
-e |
Показывает расширения ICMP (если они есть). |
— А |
Выполняет поиск пути AS в реестрах маршрутизации и выдаёт результаты непосредственно после соответствующих адресов. |
-M [название-модуля] |
Использует указанный модуль (встроенный или внешний) для трассировки. |
Как расшифровать выводы Tracert и Traceroute
После запуска команды Tracert или Traceroute, система отобразит результаты в форме строк. Отчёт может выглядеть по-разному в зависимости от используемой операционной системы, но обычно он содержит аналогичные данные.
Стандартный отчёт по результатам Tracert или Traceroute состоит из нескольких строк, где каждая строка соответствует одному прыжку (хопу) пакета к конечному хосту. Эти строки поделены на столбцы, в которых отображена различная информация.
Рассмотрим подробнее, что представляет собой каждый столбец и какие детали он содержит:
Номер прыжка |
Имя хоста/IP-адрес |
RTT1 |
RTT2 |
RTT3 |
---|---|---|---|---|
8 |
188.128.126.238 |
24.793 ms |
24.411 ms |
24.406 ms |
11 |
77.222.41.15 |
57.337 ms |
42.930 ms |
53.653 ms |
18 |
216.58.211.228 |
56.633 ms |
60.929 ms |
53.285 ms |
Где:
- Номер прыжка указывает, какой по счёту сделанный прыжок (хоп).
- Имя хоста/IP-адрес указывает IP-адрес или имя хоста устройства на определённом переходе.
- RTT – это время приёма-передачи. Благодаря ему можно узнать, сколько времени потребовалось каждому пакету, чтобы достичь определённого IP-адреса и вернуться обратно.
Если в процессе трассировки время ожидания на каком-то узле превышено, это может указывать на проблему в этой точке или на то, что маршрут выбран неправильно, из-за чего пакет не может достичь конечной цели.
В отчёте это отображается следующим образом:
Номер прыжка |
RTT1 |
RTT2 |
RTT3 |
|
---|---|---|---|---|
20 |
* |
* |
* |
Превышен интервал ожидания для запроса. |
Таким образом, утилиты Traceroute и Traceroute – это полезные инструменты для диагностики сети. Они могут отличаться в зависимости от операционной системы – Linux и macOS используют Traceroute, в то время как Windows работает с Tracert. Однако общая функциональность и представленная информация в отчёте схожи.
Надеемся, что эта статья помогла вам понять, что это за команды и как сделать трассировку.
Маршрутизация в Windows
Маршрутизация – это процесс передачи IP-трафика адресатам в сети, то есть процесс передачи пакетов от хоста-источника к хосту-адресату через промежуточные маршрутизаторы. Изучая эту статью предполагается что вы изучили материал основы компьютерных сетей.
Изучим как работает маршрутизация в Windows, что бы понять как она работает, а не просто прочитать и забыть, вам необходимо несколько виртуальных машин, а именно:
- ВМ с Windows XP.
- 2 ВМ с Windows Server 2003.
Учтите, что при настройке виртуальных машин, в настройках сети нужно указать «Внутренняя сеть» и задать одинаковое имя сети для всех машин.
Если вы не поленитесь и установите три виртуальные машины, а так же изучите этот материал до конца, то у вас будет практическое понимание работы сети в операционных системах семейства Windows.
Содержание:
- Таблица маршрутизации
- Статическая маршрутизация
- Маршрутизация по умолчанию
- Динамическая маршрутизация, протокол RIP
Для простоты передачи данных хост-источник и маршрутизатор принимают решения о передаче пакетов на основе своих таблиц IP-маршрутизации. Записи таблицы создаются при помощи:
- Программного обеспечения стека TCP/IP.
- Администратора, путем конфигурирования статических маршрутов.
- Протоколов маршрутизации, одним из которых является протокол передачи маршрутной информации – RIP.
По сути, таблица маршрутизации – это база данных, которая хранится в памяти всех IP-узлов. Цель таблицы IP-маршрутизации это предоставление IP-адреса назначения для каждого передаваемого пакета для следующего перехода в сети.
Пример маршрутизации в Windows
Допустим, у нас есть три узла:
- Windows XP.
- Windows Server 2003 – 1.
- Windows Server 2003 – 2.
Хост XP имеет один сетевой адаптер (интерфейс) с IP-адресом 192.168.0.2 и маской подсети 255.255.255.0. Маршрутизатор Server1 имеет два интерфейса с IP-адресами 192.168.0.1 и 192.168.1.1 и масками подсети 255.255.255.0. Маршрутизатор Server2 также имеет 2 сетевых адаптера с IPадресами 192.168.1.2 и 192.168.2.1 и масками подсети 255.255.255.0. Таким образом, мы имеем 3 сети: сеть с IP-адресом 192.168.0.0 (Net 1), сеть с IP-адресом 192.168.1.0 (Net 2), сеть с IP-адресом 192.168.2.0 (Net 3).
Таблица маршрутизации
Таблица маршрутизации по умолчанию создается на узле автоматически с помощью программного обеспечения стека TCP/IP.
При настройке сетевого подключения на хосте XP были статически заданы IP-адрес 192.168.0.2 и маска подсети 255.255.255.0, основной шлюз задан не был. Программное обеспечение стека TCP/IP автоматически создало таблицу маршрутизации по умолчанию.
Что бы просмотреть таблицы маршрутизации на узле XP выполним команду route print
в командной строке (Пуск -> Выполнить -> cmd
).
Таблица маршрутизации содержит для каждой записи следующие поля: Сетевой адрес (Network Destination), Маска сети (Netmask), Адрес шлюза (Gateway), Интерфейс (Interface) и Метрика (Metric). Разберем каждое поле подробнее.
Сетевой адрес. Поле определяет диапазон IP-адресов достижимых с использованием данной таблицы.
Маска сети. Битовая маска, которая служит для определения значащих разрядов в поле Сетевой адрес. Маска состоит из непрерывных единиц и нулей, отображается в десятичном коде. Поля Сетевой адрес и Маска определяют один или несколько IP-адрес.
Адрес шлюза. В этом поле содержаться IP-адрес, по которому должен быть направлен пакет, если он соответствует данной записи таблицы маршрутизации.
Интерфейс. Данное поле содержит адрес логического или физического интерфейса, используемого для продвижения пакетов, соответствующих данной записи таблицы маршрутизации.
Метрика. Используется для выбора маршрута, в случае если имеется несколько записей, которые соответствуют одному адресу назначения с одной и той же маской, то есть в случае если одного адресата можно достичь разными путями, через разные маршруты. При этом, чем меньше значение метрики тем короче маршрут.
На начальном этапе работы (т.е. с таблицами маршрутизации по умолчанию) маршрутизатор (хост) знает только, как достичь сетей, с которыми он соединен непосредственно. Пути в другие сети могут быть «выяснены» следующими способами:
- с помощью статических маршрутов;
- с помощью маршрутов по умолчанию;
- с помощью маршрутов, определенных протоколами динамической маршрутизации.
Рассмотрим каждый из способов по порядку.
Статическая маршрутизация
Статические маршруты задаются вручную. Плюс статических маршрутов в том, что они не требуют рассылки широковещательных пакетов с маршрутной информацией, которые занимают полосу пропускания сети.
Минус статических маршрутов состоит в том, что при изменении топологии сети администратор должен вручную изменить все статические маршруты, что довольно трудоемко, в случае если сеть имеет сложную структуру с большим количеством узлов.
Второй минус заключается в том, что при отказе какого-либо канала статический маршрут перестанет работать, даже если будут доступны другие каналы передачи данных, так как для них не задан статический маршрут.
Но вернемся к нашему примеру. Наша задача, имя исходные данные, установить соединения между хостом XP и Server2 который находится в сети Net3, то есть нужно что бы проходил пинг на 192.168.2.1.
Начнем выполнять на хосте XP команды ping
постепенно удаляясь от самого хоста. Выполните в Командной строке команды ping
для адресов 192.168.0.2, 192.168.0.1, 192.168.1.1.
Мы видим, что команды ping по адресу собственного интерфейса хоста XP и по адресу ближайшего интерфейса соседнего маршрутизатора Server1 выполняются успешно.
Однако при попытке получить ответ от второго интерфейса маршрутизатора Server1 выводится сообщение «Заданный узел недоступен» или «Превышен интервал ожидания для запроса».
Это связано с тем, что в таблице маршрутизации по умолчанию хоста XP имеются записи о маршруте к хосту 192.168.0.2 и о маршруте к сети 192.168.0.0, к которой относится интерфейс маршрутизатора Server1 с адресом 192.168.0.1. Но в ней нет записей ни о маршруте к узлу 192.168.1.1, ни о маршруте к сети 192.168.1.0.
Добавим в таблицу маршрутизации XP запись о маршруте к сети 192.168.1.0. Для этого введем команду route add с необходимыми параметрами:
route add [адресат] [mask маска] [шлюз] [metric метрика] [if интерфейс]
Параметры команды имеют следующие значения:
- адресат — адрес сети или хоста, для которого добавляется маршрут;
- mask — если вводится это ключевое слово, то следующий параметр интерпретируется как маска подсети, соответственно маска — значение маски;
- шлюз — адрес шлюза;
- metric — после этого ключевого слова указывается метрика маршрута до адресата (метрика);
- if — после этого ключевого слова указывается индекс интерфейса, через который будут направляться пакеты заданному адресату.
Индекс интерфейса можно определить из секции Список интерфейсов (Interface List) выходных данных команды route print.
Выполним команду route print
.
Теперь мы видим , что хост XP имеет два интерфейса: логический интерфейс замыкания на себя (Loopback) и физический интерфейс с сетевым адаптером Intel(R) PRO/1000. Индекс физического интерфейса – 0x2.
Теперь, зная индекс физического интерфейса, на хосте добавьте нужный маршрут, выполнив следующую команду:
route add 192.168.1.0 mask 255.255.255.0 192.168.0.1 metric 2 if 0x2
Данная команда сообщает хосту XP о том, что для того, чтобы достичь сети 192.168.1.0 с маской 255.255.255.0, необходимо использовать шлюз 192.168.0.1 и интерфейс с индексом 0x2, причем сеть 192.168.1.0 находится на расстоянии двух транзитных участка от хоста XP.
Выполним пинг на 192.168.1.1 и убедимся, что связь есть.
Продолжим пинговать серверы, теперь проверьте отклик от второго маршрутизатора, присоединенного к сети Net2 (Server2). Он имеет IP-адрес 192.168.1.2.
Получаем сообщение «Превышен интервал ожидания запроса». В данном случае это означает что наш хост XP знает как отправлять данные адресату, но он не получает ответа.
Это происходит по тому, что хост Server2 не имеет информации о маршруте до хоста 192.168.0.1 и до сети 192.168.0.0 соответственно, поэтому он не может отправить ответ.
Для этого необходимо выполнить команду route add с соответствующими параметрами, однако сначала необходимо узнать индекс интерфейса с адресом 192.168.1.2.
На Server2 выполним команду route print и посмотрим индекс первого физического интерфейса. Далее, с помощью команды route add добавьте на Server2 маршрут до сети Net1, аналогично тому, как мы добавляли маршрут хосту XP.
В моем случае это команда:
route add 192.168.0.0 mask 255.255.255.0 192.168.1.1 metric 2 if 0x10003
0x10003
— это индекс физического интерфейса сервера 2.
Индекс физического интерфейса может быть разным, обязательно обращайте на него внимание.
После того, как удостоверитесь в наличии связи между узлами XP и Server2, выполните команду ping 192.168.2.1, т.е. проверьте наличие маршрута узла XP до сети Net3 (192.168.2.1 – IP-адрес маршрутизатора Server2 в сети Net3).
Вместо ответа вы получите сообщение «Заданный узел недоступен». С этой проблемой мы сталкивались еще в самом начале лабораторной работы, машина XP не знает путей до сети 192.168.2.0.
Добавьте в таблицу маршрутизации хоста XP запись о маршруте к сети 192.168.2.0. Это можно сделать путем ввода в командной строке хоста XP команды route add с соответствующими параметрами:
route add 192.168.2.0 mask 255.255.255.0 192.168.0.1 metric 3 if 0x2
Я не буду подробно описывать как полностью настроить статическую маршрутизацию между узлами, думаю что суть ясна. Если у вас появились вопросы — задавайте их в комментариях.
Маршрутизация по умолчанию
Второй способ настройки маршрутизации в Windows — то маршрутизация по умолчанию.
Для маршрутизации по умолчанию необходимо задать на всех узлах сети маршруты по умолчанию.
Для добавления такого маршрута на хосте XP выполните следующую команду:
route add 0.0.0.0 mask 0.0.0.0 192.168.0.1 metric 2 if 0x10003
Эта команда сообщает хосту XP о том, что для того, чтобы достичь любой сети, маршрут к которой отсутствует в таблице маршрутизации, необходимо использовать шлюз 192.168.0.1 и интерфейс с индексом
0x10003
.Это так называемый маршрут по умолчанию.
Проверьте работоспособность с помощью команды ping.
Динамическая маршрутизация, протокол RIP
Протокол RIP (Routing Information Protocol или Протокол передачи маршрутной информации) является одним из самых распространенных протоколов динамической маршрутизации.
Его суть заключается в том, что маршрутизатор использующий RIP передает во все подключенные к нему сети содержимое своей таблицы маршрутизации и получает от соседних маршрутизаторов их таблицы.
Есть две версии протокола RIP. Версия 1 не поддерживает маски, поэтому между сетями распространяется только информация о сетях и расстояниях до них. При этом для корректной работы RIP на всех интерфейсах всех маршрутизаторов составной сети должна быть задана одна и та же маска.
Протокол RIP полностью поддерживается только серверной операционной системой, тогда как клиентская операционная система (например, Windows XP) поддерживает только прием маршрутной информации от других маршрутизаторов сети, а сама передавать маршрутную информацию не может.
Настраивать RIP можно двумя способами:
- В графическом режиме с помощью оснастки “Маршрутизация и удаленный доступ”.
- В режиме командной строки с помощью утилиты netsh.
Рассмотрим настройку в режиме командной строки с помощью утилиты netsh.
Netsh – это утилита командной строки и средство выполнения сценариев для сетевых компонентов операционных систем семейства Windows (начиная с Windows 2000).
Введите в командной строке команду netsh, после появления netsh> введите знак вопроса и нажмите Enter, появиться справка по команде.
Введите последовательно команды:
- routing
- Ip
- rip
- ?
Вы увидите, что среди доступных команд этого контекста есть команда add interface, позволяющая настроить RIP на заданном интерфейсе. Простейший вариант этой команды – add interface «Имя интерфейса».
Если ввести в Windows XP в контексте netsh routing ip rip
команду add interface "Net1"
, то получим сообщение «RIP должен быть установлен первым». Дело в том, что Установить RIP можно только в серверной операционной системе. В Windows Server 2003 в RIP включается в оснастке «Маршрутизация и удаленный доступ» (Пуск –> Программы –> Администрирование –> Маршрутизация и удаленный доступ). Таким образом, включить RIP в нашем случае можно только на маршрутизаторах Server1 и Server2.
Настроим RIP на Server1. Но сначала нужно выключит брандмауэр.
Теперь в оснастке «Маршрутизация и удаленный доступ» в контекстном меню пункта SERVER1 (локально) выберите пункт «Настроить и включить Маршрутизация ЛВС
маршрутизацию и удаленный доступ».
В появившемся окне мастера нажмите «Далее».
На следующем этапе выберите «Особая конфигурация» и нажмите «Далее».
После чего нужно выбрать «Маршрутизация ЛВС» и завершить работу мастера.
То же самое нужно выполнить на Server2.
Настройка через оснастку
В контекстном меню вкладки «Общие» (SERVER1 –> IP-маршрутизация –> Общие) нужно выбрать пункт «Новый протокол маршрутизации».
Затем выделяем строку «RIP версии 2 для IP».
В контекстном меню появившейся вкладки «RIP» выберите «Новый интерфейс». Выделите строку «Подключение по локальной сети» и нажмите ОК.
Перед вами появиться окно.
В появившемся окне необходимо задать следующие настройки:
- Режим работы –> Режим периодического обновления.
- Протокол для исходящих пакетов –> Для RIP версии 1.
- Протокол входящих пакетов –> Только для RIP версии 1.
Оставьте оставшиеся настройки по умолчанию и нажмите ОК.
Далее необходимо выполнить эти действия для второго сетевого интерфейса.
После выполните те же действия для Sever2.
Проверьте, с помощью команды ping, работу сети.
Поздравляю! Маршрутизация в Windows изучена.
Each IP packet contains information about its origin and destination.
A routing table contains the information necessary to forward an IP packet along the best path toward its destination.
In this note i will show how to display the routing table in Windows using the route print
command.
Cool Tip: Check if TCP port is opened in PowerShell! Read more →
To display the routing table in Windows, use the route
command with the print
option.
Display all routing tables:
C:\> route print
Print IPv4 routing table:
C:\> route print -4
Print IPv6 routing table:
C:\> route print -6
Show only the network destinations that match 192*
:
C:\> route print 198*
Example of the routing table in Windows:
IPv4 Route Table ================================================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.31 50 127.0.0.0 255.0.0.0 On-link 127.0.0.1 331 127.0.0.1 255.255.255.255 On-link 127.0.0.1 331 192.168.1.0 255.255.255.0 On-link 192.168.1.31 306 192.168.1.31 255.255.255.255 On-link 192.168.1.31 306
Column | Description |
---|---|
Network Destination & Netmask | Specifies the pattern that a request must match with its destination address (IP address or CIDR range). |
Gateway | Specifies where to route a request i.e. the next hop to which the packet is to be sent on the way to its final destination. |
Interface | Indicates a local interface that is responsible for reaching the gateway. |
Metric | Indicates the associated cost of using the indicated route (“distance” to the target). In case of multiple feasible routes, the traffic will go through the gateway with the lowest metric. |
On-link
in the “Gateway” column means that the destination network is directly attached to the interface i.e. the NIC is in direct contact with the destination
network – on the same subnet.
The traffic that matches such route entry will trigger an ARP request on the interface to resolve the destination IP address directly i.e. find out a MAC-address of the target device (without contacting the gateway).
Cool Tip: How to show an ARP table and clear its cache in Windows! Read more →
Was it useful? Share this post with the world!
Ping
Tracert
Pathping
Route
Российский Интернет стремительно развивается, все больше людей получают доступ в Глобальную сеть, каналы связи расширяются, позволяя подключать больше абонентов. В мегаполисах, таких как Москва, Санкт-Петербург, Екатеринбург, Нижний Новгород и др., широко распространено подключение к Интернету через локальную сеть или DSL-модемы, а обычные модемы уже практически не используются. В таких сетях часто возникает проблема с маршрутизацией, поскольку существует разделение на локальный сегмент и на интернет-соединение (пользователь получает реальный внешний IP-адрес). В настоящей статье мы рассмотрим наиболее распространенные утилиты для работы с сетевой маршрутизацией, которые входят в стандартный пакет операционных систем на базе Windows.
Ping
Первая утилита, как ни странно, — это команда ping. Она позволяет определить наличие компьютера в сети, для чего посылает удаленному компьютеру эхо-ICMP-запросы. Если компьютер не блокирует входящие ICMP-пакеты (это позволяет сделать, например, встроенный брандмауэр Windows Firewall), то утилита подсчитывает время отклика от компьютера, а в случае отправки нескольких пакетов выдает суммарную статистику. Большинство внутренних роутеров, конечно же, не блокируют ICMP-запросы, поэтому с помощью этой команды можно определить, какой из узлов сети доступен. Рассмотрим эту утилиту подробнее.
Для вызова справки по возможным ключам запуска команды ping необходимо добавить ключ /?. Вызов утилиты ping лучше всего осуществлять из командной строки (cmd), которую, в свою очередь, можно вызвать через Пуск -> Выполнить -> cmd (в операционной системе Windows Vista функция Выполнить размещена в строке поиска, в самом низу меню Пуск).
По умолчанию команда ping отсылает четыре пакета к удаленному узлу и на основе данных, полученных в результате отправки, выдает статистическую информацию. Статистика наглядно показывает, сколько пакетов было потеряно и среднее время отправки (время отклика) в процентном соотношении, а также максимальные и минимальные величины. В тех случаях, когда происходят значительные потери пакетов в локальной сети, лучше всего использовать команду ping с ключом –t. При выполнении утилиты с этим ключом пакеты будут отсылаться постоянно, пока пользователь не прекратит ее работу. Остановить работу утилиты можно, одновременно нажав распространенную комбинацию клавиш Ctrl + C. Для вывода текущей статистики без прекращения работы утилиты используется сочетание клавиш Ctrl + Break. В таком случае пакеты будут продолжать отсылаться, а пользователь получит сводную статистику по уже отправленным пакетам.
Утилита ping также дает возможность задать количество пакетов, отправляемых удаленному узлу. Для этого необходимо выполнить команду ping с ключом –n x, где x — количество отправляемых пакетов. В свою очередь, при наличии такой возможности ключ –a позволяет определить доменное имя удаленного компьютера, если известен лишь его IP-адрес.
В некоторых случаях к узлу доходят пакеты маленького объема, а пакет большого объема теряется. По умолчанию утилита ping отсылает пакеты с размером буфера 32 байт. Этот объем можно изменять в пределах от 0 до 65 500. Для этого служит ключ –l x, где x — количество отправляемых узлу байт.
Также утилита ping позволяет задать параметр поля TTL (time-to-live) каждого пакета. Для этого служит ключ –i x, где x — время жизни пакета в диапазоне от 0 до 255. Команда ping дает возможность задать время ожидания отправленного пакета. Для этого необходимо запускать утилиту с параметром –w x, где x — время ожидания, которое задается в миллисекундах и может иметь практически неограниченную величину.
Теперь перейдем к самому главному. Утилита ping выдает не только статистику по количеству отправленных/полученных пакетов, но и приблизительный маршрут каждого из пакетов. Для этого при запуске утилиты нужно задать ключ –r x, где x — количество прыжков для пакета. Это значение для данной команды лежит в пределах от 0 до 10. После выполнения этой команды статистика будет содержать информацию по прыжкам для каждого отправленного пакета. Утилита также может показать штамп времени для каждого прыжка. Для активации этой функции необходимо запускать утилиту с параметром –s x, где x может принимать значения от 1 до 4.
Большинство функций отображения маршрута в утилите ping зависят от полученного ответа: если ответ от запрашиваемого компьютера не получен, пользователь не увидит никакой информации.
Отметим, что здесь не рассматриваются команды, которые относятся к протоколу IPv6, поскольку он до сих пор не нашел широкого применения, хотя его поддержка по умолчанию включена во все новейшие операционные системы.
Tracert
Следующая полезная команда — утилита tracert. Она позволяет осуществлять трассировку маршрута к конкретному узлу. По своим функциям эта утилита отличается от команды ping тем, что может отображать статистику в реальном времени и ей не требуется ответ от компьютера. То есть трассировка осуществляется даже в том случае, если компьютер недоступен. Утилита показывает все промежуточные звенья, которые встречаются на пути прохождения пакета. В своей статистике эта утилита указывает не только основные узлы, через которые проходит маршрут к заданному компьютеру, но и отображает среднее время отклика для каждого из узлов.
Использовать данную команду очень просто: достаточно в командной строке написать tracert ya.ru, где ya.ru может быть любым доменным именем или IP-адресом. В качестве дополнительных опций можно указать ключ –d, который запрещает обращаться к DNS-серверам и сопоставлять полученные в результате выполнения команды IP-адреса доменным именам, что может значительно повысить скорость работы программы. Также эта утилита позволяет выбирать маршрут из указанного списка, который должен находиться в файле, например txt. Кроме всего прочего, для трассировки маршрута возможно указание времени ожидания ответа от компьютера. Задается время параметром –w x, где x — время ожидания в миллисекундах. Для этой утилиты существуют и другие дополнительные опции, но все они относятся к новому, еще не получившему широкого распространения протоколу IPv6.
Pathping
Данная утилита представляет собой гибрид утилит tracert и ping. Ее основное отличие от tracert заключается в том, что она работает несколько быстрее, так как сначала отправляет запросы удаленному узлу, через который идет маршрут. При этом используется уже известный маршрут, а не прокладывается новый, как в утилите tracert. Программа tracert, наоборот, заново прокладывает маршрут, что занимает больше времени на сбор статистики. Утилита pathping первоначально выводит узлы, чрез которые проходит пакет до искомого компьютера, а затем собирает статистику по времени отклика от каждого узла и по времени доступа к удаленному узлу в целом. Отметим, что эта утилита поставляется в большинстве операционных систем Windows, однако в некоторых, например в Windows XP Home, отсутствует.
В остальном ее параметры ничем не отличаются от описанных ключей в утилите tracert. Ключ –n определяет работу утилиты только с IP-адресами, игнорируя сопоставление через DNS-имена для каждого хоста. Эта опция значительно увеличивает время сбора статистики.
Route
И наконец, одна из основополагающих утилит маршрутизации — команда route. С ее помощью пользователь может прописать, удалить или отредактировать все статические маршруты на используемом компьютере. Для вывода текущей таблицы маршрутизации необходимо выполнить в командной строке команду route print. В результате в виде таблицы будет выведена вся информация о текущих интерфейсах и таблица маршрутизации. Поскольку в этой статье мы рассматриваем только протокол IPv4, таблице маршрутизации для протокола IPv6 внимание уделяться не будет.
Для каждого из маршрутов, помимо назначения и шлюза, через который пакет от компьютера попадает к маршруту, в таблице маршрутизации есть такое понятие, как метрика. Метрика позволяет создать приоритет среди одинаковых маршрутов в зависимости от используемого интерфейса подключения. Например, есть VPN-подключение, которое выпускает компьютер в Интернет, и локальное подключение к сети. По умолчанию в операционной системе Windows приоритет, то есть метрика, подключения к VPN-серверу имеет меньшее значение, что подразумевает более высокий приоритет для прохождения пакета. Для VPN-подключения метрика маршрутов будет 25, а для локального соединения — 200. Соответственно если пакет не может достичь точки назначения при прохождении через VPN-канал, то он отправляется по интерфейсу, который имеет меньший приоритет (метрику).
Добавление маршрута осуществляется через команду:
route add ip mask gateway metric x if y,
где ip — адрес или сеть назначения, mask — маска подсети, gateway — шлюз, через который пакет будет идти к месту назначения, x — числовое значение метрики маршрута, y — порядковый номер интерфейса. Тут стоит обратить внимание на некоторые особенности. Шлюз gateway должен располагаться в той же подсети, что и сетевой адаптер, через который производится подключение. Если в качестве адреса назначения указывается конкретный IP-адрес, то можно не указывать маску подсети, так как она во всех случаях будет иметь вид 255.255.255.255. Отметим, что добавление ключа –p в конце строки означает, что маршрут будет прописан в качестве постоянного и останется в таблице маршрутизации даже после перезагрузки. Если интерфейс if не задан, система попытается определить наилучший интерфейс для добавляемого маршрута.
Удаление маршрута происходит через команду:
route delete ip,
где ip — адрес назначения, прописанный в таблице маршрутизации.
Модификация маршрута производится по команде:
route change ip mask gateway metric x if y,
где ip — адрес или сеть назначения, mask — маска подсети, gateway — шлюз, через который пакет будет идти к месту назначения, x — числовое значение метрики маршрута, а y — порядковый номер интерфейса. Модификация маршрута может производиться только в случае смены шлюза или/и метрики интерфейса.
С помощью команды route print 192.* будут выведены все маршруты, начинающиеся с IP-адресов 192.*.*.* Также можно вывести маршруты, относящиеся, например, к сети 192.168.192.0/24, — route print 192.168.192.*
Для полной очистки таблицы маршрутизации применяется команда route –f. Однако не следует злоупотреблять ею, поскольку в большинстве случаев после выполнения этой команды ваша сеть окажется неработоспособной.
КомпьютерПресс 6’2008