93 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Мониторинг сети в Linux (ping, traceroute, mtr)

Проверка доступности компьютера

Утилита ping предназначена для того, чтобы при помощи отправки ICMP пакетов убедиться в работоспособности хоста. Команда ping посылает запрос (ICMP ECHO_REQUEST) конкретному компьютеру и фиксирует поступающие ответы (ICMP ECHO_RESPONSE). Её можно применять для работоспособности отдельных компьютеров и сегментов сети. В обработке ее запроса участвуют таблицы маршрутизации, физические компоненты сетей и сетевые шлюзы, поэтому для достижения успешного результата сеть должна быть в более или менее рабочем состоянии. Если команда не работает, можно быть совершенно уверенным в том, что более сложные средства тем более не функционируют. Однако это правило неприменимо в сетях, где брандмауэры блокируют эхо-запросы ICMP. Убедитесь в том, что брандмауэр не препятствует работе команды ping, прежде чем подозревать, что зондируемый компьютер игнорирует эту команду. В конце концов, отключите на короткое время брандмауэр для проверки работоспособности сети.

Если не задан аргумент «число пакетов», команда ping работает в бесконечном цикле. Чтобы прервать работу команды, нужно нажать специальную клавиатурную комбинацию .

Например, пропингуем neoserver.ru (это имя хоста):

Информация о компьютере neoserver.ru включает его IP-адрес, порядковый номер ответного ICMP-пакета и полное время прохождения пакета. Полученные результаты свидетельствуют о том, что компьютер neoserer.ru работает и подключен к сети.

Min — минимальное время ответа хоста, кторому был отправлен запрос.

Avg среднее время ответа хоста, кторому был отправлен запрос

Max максимальное время ответа хоста, кторому был отправлен запрос.

Ещё вы увидите TTL — определяет максимальное количество хопов (то есть прыжок, участок между маршрутизаторами), которые пакет может пройти. Наличие этого параметра не позволяет пакету бесконечно ходить по сети.

В ОС Linux, как уже было сказано выше, команда ping без дополнительных параметров будет пинговать заданный хост бесконечно. Чтобы отправить, например, 10 запросов, необходимо добавить ключ :

В итоге, мы видим, что было отпралено 10 запросов и выведен результат.

Другие примеры задействования разын ключей:

Не резолвить имена адресов, выводить только ip-адреса

Завершение работы ping по заданному времени (тут 5 секунд)

Установить размер отправляемых пакетов в 1000 байт

Увеличить интервал времени пинга на 3 секунды

Команда traceroute доступна на многих современных операционных системах . В Unix-подобных системах, таких как FreeBSD , macOS и Linux, он доступен как инструмент командной строки. Traceroute также доступен графически в macOS из пакета сетевых утилит .

Microsoft Windows и ReactOS предоставляют программу с именем, tracert которая выполняет ту же функцию отслеживания маршрута. Операционные системы на базе Windows NT также предоставляют PathPing с аналогичными функциями. Версия ReactOS была разработана Гедом Мерфи и находится под лицензией GPL .

В Unix-подобных операционных системах traceroute по умолчанию отправляет последовательность пакетов протокола пользовательских дейтаграмм (UDP) с номерами портов назначения от 33434 до 33534; реализации traceroute, поставляемые с Linux , FreeBSD , NetBSD , OpenBSD , DragonFly BSD и macOS, включают возможность использования пакетов эхо-запроса ICMP ( -I ) или любого произвольного протокола ( -P ), такого как UDP, TCP с использованием пакетов TCP SYN , или ICMP.

В Windows tracert отправляет пакеты ICMP Echo Request, а не UDP-пакеты, которые traceroute отправляет по умолчанию.

Значение времени жизни (TTL), также известное как предел перехода , используется при определении промежуточных маршрутизаторов, которые проходят по направлению к месту назначения. Traceroute отправляет пакеты со значениями TTL, которые постепенно увеличиваются от пакета к пакету, начиная со значения TTL, равного единице. Маршрутизаторы уменьшают значения TTL пакетов на единицу при маршрутизации и отбрасывают пакеты, значение TTL которых достигло нуля, возвращая сообщение об ошибке ICMP ICMP Time Exceeded . Для первого набора пакетов первый маршрутизатор получает пакет, уменьшает значение TTL и отбрасывает пакет, поскольку тогда он имеет нулевое значение TTL. Маршрутизатор отправляет сообщение ICMP Time Exceeded обратно источнику. Следующему набору пакетов присваивается значение TTL, равное двум, поэтому первый маршрутизатор пересылает пакеты, но второй маршрутизатор отбрасывает их и отвечает ICMP Time Exceeded. Действуя таким образом, traceroute использует возвращенные сообщения ICMP Time Exceeded для создания списка маршрутизаторов, которые проходят пакеты, пока пункт назначения не будет достигнут, и возвращает сообщение ICMP Destination Unreachable, если используются пакеты UDP, или сообщение ICMP Echo Reply, если ICMP Echo сообщения используются.

Значения временных меток, возвращаемые для каждого маршрутизатора на пути, представляют собой значения задержки ( задержки ), обычно измеряемые в миллисекундах для каждого пакета.

Отправитель ожидает ответа в течение указанного количества секунд. Если пакет не подтвержден в течение ожидаемого интервала, отображается звездочка. Интернет-протокол не требует, чтобы пакеты шли по одному и тому же маршруту к определенному месту назначения, поэтому перечисленные хосты могут быть хостами, которые прошли другие пакеты. Если узел на узле №N не отвечает, переход пропускается в выходных данных.

Если сеть имеет брандмауэр и работает как с Windows, так и с Unix-подобными системами, для работы traceroute и приема ответов через межсетевой экран необходимо включить более одного протокола.

Некоторые реализации traceroute используют TCP-пакеты, такие как tcptraceroute и traceroute четвертого уровня (lft). PathPing — это утилита, представленная в Windows NT, которая сочетает в себе функции ping и traceroute. MTR — это расширенная версия ICMP traceroute, доступная для Unix-подобных и Windows систем. Все различные реализации traceroute полагаются на пакеты ICMP Time Exceeded (тип 11), отправляемые источнику.

В Linux tracepath — это утилита, похожая на traceroute, но с той лишь разницей, что не требует прав суперпользователя .

Реализация traceroute в Cisco также использует последовательность дейтаграмм UDP , каждая из которых содержит увеличивающиеся значения TTL до недопустимого номера порта на удаленном хосте; по умолчанию используется UDP-порт 33434. Расширенная версия этой команды (известная как расширенная команда traceroute ) может изменять номер порта назначения, используемый для зондирующих сообщений UDP.

Основные команды cmd в Windows

4 минуты чтения

Операционная система Microsoft Windows невероятно распространена и каждому администратору приходится с ней сталкиваться. Поэтому мы решили собрать список основных команд для командной строки CMD которые пригодятся при настройке и траблшутинге сети.

Команды CMD

Ping — Конечно же пинг! Самая используемая утилита, отправляющая ICMP пакеты для проверки доступности узла на другой стороне. Показывает ответы, время за которое пакеты были доставлены и TTL (Time To Live), а по окончанию показывает статистику. По умолчанию высылается 4 пакета, и увеличить их количество можно добавив в строку –n число_пакетов, либо запустив непрерывный пинг набрав –t. Помимо этого есть параметр –l размер_пакета, позволяющий изменить размер отправляемого пакета.

Подробную информацию обо всех параметрах, которые можно использовать с командой можно узнать, введя /? после самой команды. Это работает и для других команд.

Tracert — Trace route как и ping позволяет определить доступность удаленного узла, однако она отображает в выводе все маршрутизаторы, через которые проходил пакет. При выполнении этой команды высылается ICMP пакет, с TTL=1, и после того как первый маршрутизатор отбросит пакет, будет выслан пакет с TTL увеличенным на 1, и так далее, пока не будет достигнет пункт назначения, либо пока TTL не станет равным 30.

Pathping — Эта команда аналогично команде tracert выполняет трассировку, дополнительно показывая статистику по задержкам и потерям на промежуточных узлах.

Ipconfig — Эта команда отображает текущие настройки протокола TCP/IP – IP адрес, маску, шлюз. Для отображения полной информации сетевого адаптера нужно добавить после команды параметр /all – теперь можно узнать mac-адрес, адрес DHCP сервера и многое другое. Для просмотра всех ключей можно воспользоваться параметром /?. Так же могут быть полезными параметры /release для отмены сетевых настроек, полученных по DHCP, /renew для обновления конфигурации сетевого адаптера по DHCP и /flushdns для очистки DNS кэша.

Getmac – эта команда используется для определения MAC-адреса компьютера. Использование этой команды отображает MAC-адрес сетевых адаптеров устройства.

Nslookup — Name Server Lookup. Используется для того чтобы определить IP-адрес по доменному имени.

Netstat – эта команда показывает состояние входящих и исходящих TCP соединений. Если мы используем команду с параметром –r, то она выведет нам таблицы маршрутизации, а использовав параметр –s мы получим статистику по протоколам

Netsh – Net Shell, сетевая оболочка. Используется для локальной или удаленной настройки сетевых параметров. После ввода команды строка переходит в режим оболочки, внутри которой можно ввести /? и увидеть все доступные настройки. Внутри каждой команды таким способом можно посмотреть список доступных подкоманд.

Возможности этой команды действительно обширны. Мы можем при помощи нее конфигурировать ip-адреса, маски, шлюзы, dns и wins сервера, включать и отключать сетевые интерфейсы, просматривать сетевые настройки, а также сохранять и восстанавливать конфигурацию сетевых интерфейсов

Например, мы можем указать статический адрес для интерфейса:

Net view – отображает имена компьютеров в текущем домене

Arp – команда для просмотра записей в arp таблице. Для просмотра текущих записей используется ключ –a. Для удаления записи из таблицы используется ключ –d интернет_адрес [адрес_интерфейса] . Если нужно удалить все записи, то вместо адреса нужно поставить звездочку (*).

Hostname – показывает имя компьютера.

NbtStat — отображение статистики протокола и текущих подключений TCP/IP с помощью NBT (NetBIOS через TCP/IP).

Route – команда для обработки таблиц сетевых маршрутов. Показывает текущую таблицу, имеется возможность добавлять и удалять маршруты. Чтобы вывести все содержимое таблицы маршрутизации нужно набрать команду route print.

Telnet – клиент сервера Telnet для подключения к удаленным хостам.

Внимание: по умолчанию telnet не установлен. Чтобы установить его из командной строки нужно выполнить команду pkgmgr /iu:»TelnetClient»

Для подключения используем команду так: telnet ip-адрес порт

Также эту команду можно использовать для проверки доступности порта на узле – если команда выдает ошибку, то значит порт закрыт, а если появляется приглашение или окно становится пустым – то открыт.

На этом все! Мы что-то упустили или вы хотите о чем-то прочитать поподробнее? Напишите об этом в комментариях.

  • Windows
  • cmd
  • 5780
  • 120
  • Поделиться

IT-блог о веб-технологиях, серверах, протоколах, базах данных, СУБД, SQL, компьютерных сетях, языках программирования и создание сайтов.

  • 01.07.2018
  • Команды и утилиты Windows, Компьютерные сети, Полезные программы, Сетевые утилиты и программы
  • 2 комментария

Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжим разбираться с полезными командами и утилитами командной строки Windows, на этот раз давайте разберемся с сетевой утилитой tracert, мы поговорим зачем нужна команда tracert и как ею пользоваться для диагностики компьютерной сети и устранению неполадок. Как мы увидим, утилиту tracert используют сетевые инженеры и системные администраторы для определения маршрута прохождения IP-пакета по сети, вы убедитесь, что этой утилитой довольно легко пользоваться, но не все умеют правильно оценивать результаты работы этой команды, о некоторых сложностях, которые могут возникнуть при интерпретации трассировка маршрута мы поговорим в самом конце этой публикации.

Если вам интересна тема компьютерных сетей, то в блоге уже практически закончена первая часть курса по основам компьютерных сетей, можете ознакомиться с ее содержимым. И вот здесь можно получить немного информации о самом курсе основанном на Cisco ICND1.

Назначение команды tracert или как определить маршрут прохождения пакета до узла

Tracert – это небольшая системная утилита вашей операционной системы, которая позволяет сделать трассировку маршрута до заданного узла в локальной сети или сети Интернет. В операционных системах Windows tracert – это стандартная утилита, которая устанавливается вместе с операционной системой, то есть вам не нужно ничего устанавливать, чтобы воспользоваться командной tracert. Исполняемый файл tracert.exe в Windows 10 находится по следующему пути: C:WindowsSystem32.

Команда tracert – это один из самых часто используемых инструментов для траблшутинга и сетевой диагностики, эта утилита дает нам возможность определить маршрут, по которому проходит пакет до заданного узла. Tracert может работать как с доменными имена или именами хостов, так и с IP-адресами (как с IPv4, так и с IPv6). Кроме того что tracert показывает маршрут от вашего компьютера до удаленного узла в сети, она еще и отображает время прохождения пакетов как до конечного узла, так и до транзитных или промежуточных узлов (время является одной из самых важных единиц измерения в компьютерных сетях). Давайте лучше посмотрим, как работает утилита tracert на простом примере без дополнительных параметров.

Трассировка маршрута при помощи команды Tracert до IP-адреса Яндекс

В данном случаем мы видим путь прохождения IP-пакета от моего ПК до сервера Яндекс, чтобы указать утилите tracert удаленный узел, мы воспользовались IP-адресом. Но эта команда может работать и с доменными именами, давайте посмотрим, сделав трассировку маршрута до сервера Google.

Трассировка маршрута при помощи утилиты tracert до сервера Google по доменному имени

Стоит сказать пару слов о выводе, который мы получили. Каждая строка вывода команды tracert пронумерована, каждая такая строка называется шагом, хопом или прыжком. По умолчанию tracert в Windows отправляет три запроса на каждый хоп и получает от этого хопа ответы, если ответ не получен, то в первых трех столбцах мы видим символ «*», если ответ получен, то в первых трех столбцах указывается время прохождения пакета, а в четвертом столбце Windows дает нам подсказку о причинах, по которым удаленный узел нам не ответил или его адрес, если узел ответил.

Хопы, которые мы видим в трассировке – это маршрутизаторы, серверы или L3 коммутаторы, на интерфейсах которых прописан IP-адрес (то есть устройства, которые определяют путь, по которому пойдет IP-пакет, другими словами – это устройства сетевого уровня моделей OSI 7 и TCP/IP), это важное уточнение для интернет-пользователей, всё дело в том, что витая пара или другой тип кабеля (про минусы использования коаксиального кабеля в Ethernet сетях можете почитать здесь), который приходит к вам в квартиру, подключен в L2 коммутатор, который никак не влияет на маршрут прохождения пакета, на нем нет IP-адресов (вернее есть один адрес, который использует тех. поддержка провайдера для управления этим коммутатором) и он не принимает решений по маршрутизации пакетов, таких коммутаторов между хопами может быть несколько десятков и мы их никак не увидим, так как для утилиты tracert они представляют собой что-то вроде кабеля, собственно как и для других утилит сетевой диагностики.

Для диагностики сетевых ресурсов утилита tracert использует специальный протокол, который называется ICMP (Internet Control Message Protocol — протокол межсетевых управляющих сообщений), есть еще команда traceroute (эта утилита обычно входит в стандартные дистрибутивы Linux, например, эта утилита присутствует в Linux Mint), которая по умолчанию использует протокол UDP, для ее использвания вам точно также потребуется эмулятор терминала. ICMP-сообщение, которое посылает наш компьютер, запаковывается в IP-пакет (здесь вы можете прочитать более подробно про инкапсуляцию данных в компьютерных сетях), у которого есть специальное значение TTL (time to live или время жизни), для понимания работы tracert это важно, поскольку эта команда при каждой отправке пакета увеличивает TTL на единицу, а первый отправленный пакет в сеть имеет значение, равное единице, при этом по умолчанию tracert отправляет три пакета с одним и тем же TTL, то есть в ответ мы должны получить три пакета от удаленного узла (самые основы взаимодействия двух узлов в компьютерной сети описаны здесь, для реализации схемы использовалась Cisco Packet Tracer).

Вернемся к примеру с трассировкой Яндекса, чтобы это лучше понять. Когда мы написали tracert 77.88.55.88, tracert сформировала IP-пакет, в котором в качестве узла назначения указала IP-адрес Яндекса и отправила его в сеть, а в качестве TTL этот пакет получил значение равное единице, далее tracert, не изменяя TTL отправила еще два пакета и получила три ответа от узла 192.168.0.1. После значение TTL было увеличено на единицу (значение стало равным двойке) и в сеть было отправлено еще три пакета (IP-адрес в этих пакетах не изменялся), следующий хоп отказался отвечать на ICMP-запросы и мы увидели три звездочки, после этого TTL был снова увеличен и мы увидели третий хоп, таким образом tracert будет увеличивать TTL до тех пор, пока не доберется до сервера Яндекс. С Гуглом ситуация аналогичная, только там мы использовали доменное имя, поэтому tracert пришлось выполнять дополнительные операции по выяснению IP-адреса, на котором этот домен висит.

При использовании утилиты tracert не стоит паниковать в тех ситуациях, когда вы видите звездочки вместо времени ответа удаленного узла, дело в том, что ICMP-протокол иногда используется для сетевых атак (например, DDoS) и некоторые сетевые инженеры и системные администраторы предпочитают настраивать свои устройства таким образом, чтобы они не отвечали на ICMP-запросы. Иногда бывает так, что конечный узел не отвечает на ICMP-запросы, но на самом деле он корректно работает и выполняет свои функции, для проверки доступности таких узлов вам не поможет команда Ping, так как она тоже использует ICMP, но может помочь команда traceroute или онлайн сервисы по проверки доступно сайтов и серверов в Интернете.

В качестве примера давайте сделаем трассировку до сайта microsoft.com, сервера этой компании не отвечают на ICMP-запросы. Трассировка показана на рисунке ниже.

Трассировка до сервера Microsoft, который не отвечает на ICMP-запросы

На момент проверки этого ресурса он был доступен, но результаты работы tracert нас немного обманывают, по ним видно, что мы якобы не можем добраться до сервера Майкрософт, поэтому для корректной диагностики удаленных ресурсов нужно иметь целый арсенал сетевых утилит, ну или как минимум браузер и умение гуглить. Еще по трассировки видно, что tracert в Windows по умолчанию использует максимальное значение TTL равное 30, протокол IPv4 позволяет задавать максимальное значение TTL 255, но на самом деле это очень много, чтобы остановить выполнение команды tracert воспользуйтесь сочетание клавиш ctrl+c.

Параметры команды tracert в Windows

Любая команда в командной строке Windows имеет небольшой справочник (команда help — справочник командной строки Windows), в котором указаны допустимые параметры, в том числе и команда tracert, чтобы увидеть эти параметры, в командной строке нужно написать: tracert /? или tracert /h.

Сначала основное

Каждый пакет, который вы отправляете в интернет, имеет поле, названное TTL. TTL означает время жизни (time to live). Хотя оно и называется временем жизни, в действительности это не время в секундах, а совсем другая история.

TTL не изменяется ни количеством секунд, ни количеством хопов. Это максимальное количество хопов, которое пакет может пройти по сети до того, как будет уничтожен.

Хопы — это ни что иное как компьютеры, маршрутизаторы или иные устройства, которые входят между источником и пунктом назначения

Что бы произошло, если бы вообще не было TTL? Если бы не было TTL, IP-пакет перетекал бы бесконечно от одного маршрутизатора к другому и дальше, и дальше, бесконечно ища назначение. Значение TTL устанавливается отправителем внутри IP-пакета (человек, использующий систему или отправляющий пакет, не замечает этих вещей, происходящих “за кулисами”, но это автоматически обрабатывается операционной системой)

Если назначение не найдено после прохождения слишком большого количества промежуточных маршрутизаторов (хопов), и значение TTL становится равным нулю (что означает, что нет дальнейшего прохождения) получающий маршрутизатор уничтожает пакет и информирует первоначального отправителя.

Первоначального отправителя информируют, что TTL истекло, и он не может передать пакет дальше.

Давайте скажем, что мне нужно достичь адреса 10.1.136.23, и мой TTL — 30 хопов, что значит, что я могу проследовать максимум 30 хопов, чтобы достичь цели, перед тем как пакет будет уничтожен.

Но как маршрутизаторы по пути определяют, что достигнут лимит TTL? Каждый маршрутизатор по пути между источником и назначением продолжает уменьшать значение TTL перед отправкой следующему маршрутизатору. Что означает, что если у меня TTL по умолчанию равен 30, мой первый маршрутизатор уменьшит его до 29 и отправит следующему маршрутизатору по пути.

Получающий маршрутизатор делает его равным 28 и отправляет следующему и т.д. Если маршрутизатор получает пакет с TTL, равным единице (это означает, что уже нет дальнейших перемещений или пересылки), пакет уничтожается. Но маршрутизатор, который уничтожает пакет, информирует первоначального отправителя о том, что TTL value has exceeded! (время жизни пакета истекло)

Информация, отправленная маршрутизатором, получившим пакет с TTL равным единице, называется «ICMP TTL exceeded messages«. Разумеется, в интернете, когда вы отправляете что-либо получателю, получатель узнает адрес отправителя.

Следовательно, когда сообщение ICMP TTL exceeded отправляется маршрутизатором, первоначальный отправитель узнаёт адрес маршрутизатора.

Traceroute использует сообщения TTL exceeded чтобы обнаружить маршрутизаторы, которые встречаются на пути к цели (поскольку эти сообщения, отправляемые маршрутизатором, содержат его адрес).<>/p>

Но как traceroute использует сообщение “TTL exceeded” чтобы узнать, какие маршрутизаторы/хопы между ними?

Вы должно быть думаете, /pчто собщения “TTL exceeded” отправляются только маршрутизатором, который получает пакет с TTL 1. Это верно, каждый маршрутизатор между вами и получателем не станет высылать сообщения TTL exceeded. Тогда как вы найдете адреса всех маршрутизаторов/хопов между вами и назначением? Так ведь основная цель traceroute — идентифицировать хопы между вами и назначением.

Но вы можете использовать поведение сообщений TTL exceeded маршрутизаторов/хопов по пути, целенаправленно отправляя пакеты с TTL, равным 1

См. примерную схему всего процесса на схеме , где отправитель использует traceroute к одному из серверов в удалённом месте

Давайте посмотрим на то, что просходит за кулисами. Когда я запускаю команду traceroute -n 8.8.8.8, что делает мой компьютер? — отправляет UDP-пакет. (Да, UDP. Не волнуйтесь, мы обсудим это подробно). UDP-пакет содержит следующее:

  • Мой адрес отправителя
  • Адрес назначения (8.8.8.8)
  • И номер порта назначения, который неверен. Это разумеет, что traceroute отправляет пакет в UDP-порт, в диапазоне от 33434 до 33534, который обычно не используется.

Давайте посмотрим, как это работает

Шаг 1. Мой адрес отправителя создает пакет с адресом назначения 8.8.8.8 и портом назачения между 33434 и 33534. И главное, что он делает — это делает значение TTL равным 1

Шаг 2. Конечно, мой пакет достигает шлюзового сервера. Получая мой пакет, шлюз уменьшает TTL на единицу (все маршрутизаторы/хопы между уменьшают TTL на 1). Когда TTL уменьшается до 1 (1-1=0), значение TTL становится нулевым. Поэтому мой шлюзовый сервер шлёт мне обратно сообщение TTL time exceeded. Прошу запомнить, что когда мой шлюзовый сервер отправляет TTL exceeded мне, он отправляет мне первые 28 байтов того пакета, что я высылал.

Шаг 3: Получив это сообщение “TTL Time exceeded”, моя программа traceroute сможет узнать адрес и другие сведения о первом хопе, который является моим шлюзовым сервером.

Шаг 4: Теперь программа трассировки снова отправит тот же UDP пакет с назначением 8.8.8.8 и случайным UDP портом назначения от 33434 до 33534. Но на этот раз я сделаю первоначальный TTL =2. В результате, мой шлюз или маршрутизатор снизит его на 1, а затем передаст этот пакет, следующему хопу/маршрутизатору (пакет, отправленный моим шлюзом к следующему узлу будет иметь значение TTL 1).

Шаг 5: При получении UDP пакета следующий переход к моему шлюзовому серверу снова уменьшит его до 1, что означает, что теперь TTL вновь стал равен 0. Следовательно, он пошлет мне оттуда сообщение ICMP Time exceeded с адресом источника а также первые 28 байт заголовка пакета, который я отправил.

Шаг 6. При получении TTL Time exceeded, моя программа traceroute узнаёт IP-адрес маршрутизатора/хопа и показывает мне его на экране.

Шаг 7. Теперь моя программа traceroute вновь создаст такой же UDP-пакет со случайным UDP-портом и адресом назначения 8.8.8.8. Но в этот раз значение TTL равно трём, таким образом TTL автоматически становится нулевым, когда достигает третьего хопа/маршрутизатора (прошу вспомнить, что мой шлюз и следующий за ним хоп уменьшают его на единицу). Так что он ответит мне сообщением TTL Time exceeded и моя программа taceroute узнает об IP-адресе маршрутизатора/хопа

Шаг 8: Получив этот ответ, программа traceroute ещё раз создаст UDP-пакет, на этот раз со значением TTL=4. Если я получу TTL Time exceeded и для него также, то моя программа traceroutе будет посылать UDP пакет с TTL=5 и так далее.

Но как моя программа Traceroute узнает, что конечный пункт 8.8.8.8 достигнут? Программа трассировки узнает об этом так: когда первоначальный приёмник пакета 8.8.8.8 (помните, что у всех UDP-пакетов был адрес получателя 8.8.8.8) получает запрос, он пошлёт мне сообщение, которое будет совершенно отличным от всех сообщений «TTL Time exceeded«.

Когда изначальный получатель (8.8.8.8) получает мой UDP-пакет, он отправляет мне сообщение «ICMP Destination/PORT Unreachable«. Это должно произойти, потому что мы всегда отправляем случайный UDP-порт между 33434 до 33534. Поэтому моя программа Traceroute будет знать, что мы достигли конечного пункта назначения и прекратит посылать какие-либо дополнительные пакеты.

Сейчас всё, что описано словами, называется теорией. Нам нужно подтвердить это, запустив Tcpdump во время Traceroute. Давайте посмотрим на вывод tcpdump. Прошу обратить внимание на то, то я не показываю вам полный вывод tcpdump, поскольку он слишком длинный.

Запустите traceroute в одном терминале вашей Linux машины. И в другом терминале запустите tcpdump, чтобы увидеть, что происходит.

Вывод выше показывает только UDP-пакеты, отправленные с моей машины. Я покажу ответные сообщения отдельно, чтобы было яснее

Обратите внимание на TTL в каждой строке. Она начинается с TTL, равного единице, затем 2, и затем 3 до TTL равного 6. Вам может показаться странным, почему мой сервер отправляет 3 UDP-сообщения с TTL=1, а затем 2, а затем 3?

Причина этого заключается в вычислении среднего время прохождения. Программа traceroute отправляет три UDP-пакета для каждого хопа, чтобы измерить точное среднее время прохождения пакета. Среднее время прохождения — ни что иное как время в миллисекундах, которое потребовалось для отправки, а затем получения ответа. Я намеренно не упомянул об этом в самом начале, чтобы избежать путаницы.

Таким образом, нижняя строка моей программы traceroute отправляет три UDP-пакета каждому хопу, чтобы просто вычислить приблизительное время прохождения. Поэтому вывод traceroute показывает эти три значения. Давайте рассмотрим поближе вывод traceroute. Он показывает три значения в милисекундах для каждого хопа, чтобы получить четкое представление о времени прохождения.

Теперь давайте посмотрим, ответ мы получили от всех хопов через TCPDUMP. Обратите внимание, что ответные сообщения, которые привожу ниже, являются частью того же ТСРDUMP, который я запустил ранее, но показываю их вам отдельно, чтобы было яснее.

Еще одна интересная вещь, чтобы отметить, что каждый раз, когда моя программа посылает различные случайные номера портов UDP. Это для того, чтобы определить, какому из пакетов принадлежит ответ. Как говорилось ранее, ответное сообщение, которое отправляют хопы и адресат, содержит заголовок исходного пакета, который мы отправили, поэтому программа traceroute может точно рассчитать точное время прохождения (для каждого из трёх UDP пакетов, отправленных каждому хопу), так как он может легко определить ответ и сопоставить. Случайные числа портов являются своего рода идентификаторами для определения ответа.

Ответные сообщения выглядят как показано ниже.

Прошу обратить внимание, что сообщения ICMP time exceeded показаны выше (я не показал все ответные сообщения)

Теперь позвольте мне показать последнее послание, которое отличается от ICMP time exceeded. Это сообщение destination port unreachable (порт назначения недостижим), как говорилось ранее. И программа traceroute узнает, что наша цель достигнута.

Обратите внимание, что есть три ответа от 8.8.8.8 моей программе traceroute. Как говорилось ранее, traceroute отправляет три одинаковых UDP-пакета с различными портами, чтобы просто вычислить точное время прохождения. Конечный пункт назначения ничем не отличается.

Проверка пинга

Для проверки пинга используется одноименная команда ping, которую необходимо вводить в командной строке. Запустить командную строку можно следующими способами:

1) Пуск -> Все программы -> Стандартные -> Командная строка

2) Пуск -> Выполнить -> cmd

В данной ОС существует множество терминалов, поэтому для этих целей можно использовать любой из установленных на ПК. Обычно стандартный терминал можно запустить сочетанием клавиш CTRL+ALT+T.

Итак, чтобы пропинговать определенный сервер, необходимо выполнить команду:

Например, для пинга адреса 11.222.33.44 необходимо выполнить команду:

Ниже приведён пример результатов выполнения пинга одного из IP адресов.

Как видно из результатов, было передано и получено 4 пакета размером 32 байта. Время обмена одним пакетом составило 47 милисекунд.

Стоит отметить, что в Windows по умолчанию выполняется отправка только 4 пакетов. В Linux обмен пакетами продолжается до тех пор, пока пользователь самостоятельно не остановит процесс сочетанием клавиш CTRL+C. Чтобы запустить ping аналогичным образом в Windows, необходимо использовать параметр -t. Например:

Остановка обмена пакетами выполняется тем же сочетанием клавиш – CTRL+C.

Установка количества отправляемых пакетов

Чтобы задать максимальное количество отправляемых пакетов, необходимо использовать команду следующего вида:

Изменение размера отправляемых пакетов

Чтобы выполнить ping с использованием пакетов определенного размера (в байтах), необходимо использовать следующую команду:

В данном случае производилась отправка пакетов размером в 64 байта.

Как работает traceroute?

Вы, наверное, уже знаете, что вся информация в сети передается в виде пакетов. Поток данных разбивается специальным программным обеспечением на небольшие пакеты и передается через сеть интернет на целевой узел, а там собирается обратно.

Каждый пакет проходит на своем пути определенное количество узлов, пока достигнет своей цели. Причем, каждый пакет имеет свое время жизни. Это количество узлов, которые может пройти пакет перед тем, как он будет уничтожен. Этот параметр записывается в заголовке TTL, каждый маршрутизатор, через который будет проходить пакет уменьшает его на единицу. При TTL=0 пакет уничтожается, а отправителю отсылается сообщение Time Exceeded.

Команда traceroute linux использует UDP пакеты. Она отправляет пакет с TTL=1 и смотрит адрес ответившего узла, дальше TTL=2, TTL=3 и так пока не достигнет цели. Каждый раз отправляется по три пакета и для каждого из них измеряется время прохождения. Пакет отправляется на случайный порт, который, скорее всего, не занят. Когда утилита traceroute получает сообщение от целевого узла о том, что порт недоступен трассировка считается завершенной.

Tracert

материал № 9751

Это информационная команда в операционной системе Windows, а также в ReactOS, показывающая путь, который проходит сетевой пакет от текущего устройства (компьютера) до заданного адреса и, также показывающая задержки прохождения пакета между узлами в сетях TCP/IP. В других операционных системах есть аналогичные команды, имеющие отличающееся название и технологию работы. В дальнейшем речь будет идти именно об Tracert.

Получить трассировку (а также ее задержки) пакета позволяет его свойство, называемое TTL (time-to-live). Это восьмибитное поле (максимальное значение — 255), обозначающее время жизни пакета. Данное свойство предотвращает бесконечное хождение пакета по сети. В пакетах IPv6 это поле названо как Hop Limit (предел прыжков). Число в этом поле означает число точек маршрутизации, которое пакет может пройти. А каждый маршрутизатор, через который данный пакет проходит, должен уменьшить значение TTL на единицу. Игнорируют уменьшение этого счетчика коммутаторы, работающие на канальном уровне.

Первоначально, команда трассировки отправляет первый пакет по протоколу ICMP до указанного места назначения с TTL равным 1. ICMP (Internet Control Message Protocol) — это протокол управляющих сообщений Интернет, специально предназначенный для передачи сообщений об ошибках и других исключительных ситуациях, возникших при передаче данных. Первый маршрутизатор, через который этот пакет будет проходить, уменьшит значение TTL на 1, сделав его тем самым равным 0 и сформирует ответное ICMP-сообщение «time exceeded in transit», означающее, что время жизни пакета истекло и он не может быть отправлен дальше. Tracert получает ответное сообщение и фиксирует время, через которое он прибыл и адрес его отправителя, отображая полученные данные на экране. Tracert ожидает ответа от промежуточных маршрутизаторов (или конечного адресата) в течение указанного количества секунд. Если пакет не подтвержден в течение ожидаемого интервала, отображается звездочка.

После этого Tracert сформирует следующий ICMP-пакет с TTL равным 2, который дойдет до второго маршрутизатора: первый маршрутизатор уменьшит TTL до 1 и отправит пакет следующему маршрутизатору, который уменьшит TTL до 0 и отправит ICMP-сообщение «time exceeded in transit». Tracert будет фиксировать адреса промежуточных маршрутизаторов и задержку их ответов, а также будет каждый раз увеличивать TTL на 1 до тех пор, пока пакет не достигнет указанного адреса. На адресе пакет с TTL = 1 не отбрасывается и не вызывает ICMP-сообщения об истечении времени жизни пакета, а отдается приложению. Достижение пункта назначения определяется следующим образом: отсылаемые traceroute датаграммы содержат UDP-пакет с заведомо неиспользуемым номером порта на адресуемом хосте. Номер порта будет равен 33434 + (максимальное количество транзитных участков до узла) — 1. В пункте назначения UDP-модуль, получая подобные датаграммы, возвращает ICMP-сообщения об ошибке «порт недоступен», которое будет являться сигналом для Tracert об окончании трассировки.

Интерпретация результатов Tracert

1 колонка обозначает номер (он же TTL) одного из маршрутизаторов, который пакет прошел.

2,3,4 колонки — показывают время ответа от маршрутизатора. Все три значения могут немного отличаться Почему их три? Потому что Tracert отправляет по три пакета с одинаковыми TTL, чтобы получить более точные данные о задержке. Если ответ не пришел в установленное время, то отображается символ «*» и сообщение о превышении интервала ожидания ответа.

5 колонка содержит IP-адрес маршрутизатора и конечного адресата (на последнем TTL), а также его доменное имя (если не установлен параметр -d)

Интерпретация результатов Traceroute

Вывод результата данной команды практически идентичен tracert, за исключением некоторых отличий:

Возможно появление обозначения «!X» (если traceroute запускается из-под Unix) или «!A» (в Cisco), которое говорит о том, что на маршрутизаторе, через который пытается пройти UDP-пакет, установлен запрет на их прохождение. Для проведения трассировки ICMP-пакетами, следует добавить параметр -I.

tracert имя_хоста / его_ip-адрес

Запуск без параметра ‘-d’

Запуск с параметром ‘-d’

  • Если сеть имеет файервол и работает как с Windows, так и с Unix-подобными системами, для проведения трассировки маршрута и получения ответов необходимо включить использование более одного протокола через брандмауэр. Решение: необходимо дополнительно разрешить в файерволе UDP-пакеты на порты выше 33434 (или в диапазоне от 33434 до 33534).
  • Маршруты ICMP-пакетов от Tracert могут не совпадать маршрутами ответных ICMP-пакетов маршрутизаторов. Это означает, что истинная задержка их ответов может быть неизвестна. Также, исходящие от Tracert ICMP-пакеты могут идти разными путями до конечного адресата из-за работающего балансировщика нагрузки.
  • На маршрутизаторах может быть установлено ограничение на количество ICMP-ответов за единицу времени, что может привести к ложным потерям. Такое ограничение может устанавливаться администратором из-за того, что ICMP-пакеты используются для проведения атак типа DDoS. Поэтому если вместо времени указаны «*» и сообщение о превышении интервала ожидания ответа, то в данном случае это не означает, что узел недоступен, а исчерпан лимит количества отправляемых ICMP-пакетов.
  • Конечный адресат тоже может не отправить ответный ICMP-пакет, при его доступности (адресата).
  • ICMP-протокол, в соответствие с которомы tracert отправляет пакеты, является протоколом сетевого уровня, поэтому не может работать с портами. В отличие от tracert, утилита traceroute отправляет пакеты по UDP-протоколу, который является протоколом транспортного уровня и может направлять пакеты в соответствие с указанным портом назначения.

Traceroute — на UNIX-подобных системах. В отличие от Tracert в Windows, Traceroute отправляет пакеты по UDP протоколу с номерами портов от 33434 до 33534. При этом, реализации Traceroute, поставляемые с Linux, FreeBSD, NetBSD, OpenBSD, DragonFly BSD и macOS, включают опцию использования пакетов эхо-запроса ICMP (-I) или любой другой произвольный протокол (-P), такой как UDP, TCP с использованием пакетов TCP SYN или ICMP.

Pathping — начиная с Windows 2000 и более поздних. Применяется для поиска узлов, на которых происходит задержка и/или потеря пакетов, сочетая таким образом в себе команды Ping и Tracert.

mtr — Интерактивная программа, способная постоянно выводить обновлённую статистику по трассе.

tcptraceroute (tracetcp) — аналогичная traceroute программа, но предназначена для диагностики TCP соединений; вместо UDP-пакетов использует TCP-пакеты открытия соединения (SYN|ACK) с указанным сервисом (по умолчанию — web-сервер, порт 80) интересующего хоста; в результате получаем информацию о времени прохождения данного вида TCP-пакетов через маршрутизаторы и информацию о доступности сервиса на интересующем хосте, либо, в случае проблем с доставкой пакетов — видим, в каком месте трассы они возникли.

tracepath — похожая на traceroute программа, но может строить асимметричные трассы и имеет некоторые другие отличия.

tracemap — программа, позволяющая выполнять трассировку пути на несколько хостов сразу и представить полученные данные в виде графической карты.

Tracemap — программа, позволяющая выполнять трассировку пути на несколько хостов сразу и представить полученные данные в виде графической карты.

traceroute.org — онлайн-сервис, позволяющий провести трассировку из разных точек мира.

Trace Explorer — Trace Explorer объединяет трассировки на сотни тысяч популярных веб-сайтов и делает результаты поиска доступными, позволяя вам определить, какие веб-сайты размещены рядом друг с другом, у определенного интернет-провайдера или за конкретным маршрутизатором.

Unix: что такое traceroute

Оригинал и полная версия доступна тут>>>.

Основы traceroute

«Просмотр результатов traceroute схож с наблюдением с высоты птичьего полета за движением автомобиля из одной точки в другую: вы видите каждую из дорог (маршрутов) и перекрестков (роутеров), которые встречаются по пути» (с) Richard Steenbergen, NANOG presentation.

Каждая строка в выводе traceroute представляет собой один «прыжок» («hop«) через роутер и отображает путь, который прошел пакет от источника до заданного направления. По умолчанию — большинство реализаций traceroute выполняет три обращения к каждому роутеру («хопу»), отображая три значения его «отзывчивости», измеряемые в милисекундах.

В некоторых случах — эти обращения к хопу могут пройти по различным каналам (хопы 1-4 и 8-9 в примере ниже), что приведет к отображению нескольких строк результата для хопа:

Как работает traceroute

Внутри каждого IP-пакета имеется поле, известное как TTL Time To Live. Это поле содержит значение «времени жизни» пакета, измеряемое в количестве пройденных этим пакетом хопов (роутеров) и используется для предотвращения закольцовывания маршрута и бесконечного потребления сетевых ресурсов, ограничивая количество хопов, через которые может быть пропущен этот пакет.

Частью роутинга IP пакетов является уменьшение значения TTL пакета на 1 каждый роутером, который его обрабатывает. Если значение достигает значения 0 — пакет отбрасывается, а отправителю отправляется сообщение ICMP TTL Exceeded (ICMP тип 11), уведомляя о сбросе пакета. traceroute использует эту неотъемлемую часть процесса роутинга пакетов IP для составления «карты» с каждым роутером, который проходит пакет, отправляя серию «зондирующих» пакетов, TTL которых должен истекать до достижения точки назначения и подсчитывая количество полученных сообщений ICMP TTL Exceeded :

Каждый такой зондирующий пакет следует следующей схеме:

  1. traceroute отправляет пакет к точке назначения, устанавливая TTL равным 1;
  2. каждый роутер в маршруте уменьшает значение TTL на единицу, пока TTL не достингнет нуля;
  3. когда TTL становится == 0 то роутер, который отбрасывает этот пакет, отправляет отправителю сообщение ICMP TTL Exceeded , в которое включаются первые 28 байт оригинального «зондирующего» пакета;
  4. traceroute получает это сообщение и использует разницу во времени между отправкой оригинального пакета и полученным в ответ пакетом ICMP для посчета задержки доставки к этому роутеру/хопу;
  5. процесс повторяется с п. 1, но с TTL увеличенным на 1, пока…
  6. окончательный получатель получает пакет от traceroute и отправляет в ответ сообщение, отличное от ICMP TTL Exceeded . Тогда traceroute считает, что трассировка завершена и заверает процесс.

И результат tcpdump :

  • в результатах видно значение TTL, которое увеличивается от 1 в первом пакете — IP (tos 0x0, ttl 1) и в последнем — IP (tos 0x0, ttl 12) , всего 11 хопов
  • порт назначения для первого пакета: 93.158.134.3.33434
  • ответ ICMP TTL Exceeded : 93.158.134.3 > 192.168.1.149: ICMP time exceeded in-transit

Какие хопы вы видите в результатах traceroute ?

Когда роутер отбрасывает пакет из-за истекшего значения TTL — он создает сообщение ICMP TTL Exceeded , в котором указывается IP-адрес интерфейса источника пакета, который получил оригинальный пакет. Далее, когда traceroute получает этот ICMP ответ — он использует адрес источника для преставления очередного роутера:

В примере выше маршрут, который отобразит traceroute , будет:

  1. 172.16.2.1
  2. 10.3.2.2

Важно помнить, что traceroute не предоставляет никакой информации об «исходящих» интерфейсах роутра или об обратном пути пакета ICMP.

Реализации traceroute

Фактически — любой тип пакетов IP может использоваться как «зондирующий» пакет traceroute , так как единственное требование — это наличие поля TTL.

Наиболее часто используемые реализации traceroute :

  • классический UNIX Traceroute — использует UDP пакеты, с портом получателя 33434, который увеличивается на 1 с каждым новым пакетом. По умолчанию traceroute отправляет три пакета к каждому узлу. Порт получателя UDP пакета используется traceroute для индентификации зондирующих пакетов. После того, как пакет достингет точки назначения — получатель отправляет сообщение ICMP Destination Unreachable (ICMP тип 3), обозначая таким образом завершение выполнения traceroute . Многие реализации traceroute позволяют использовать UDP, ICMP или TCP для создания таких «зондирующих» пакетов.
    • интересный факт: стартовый порт 33434 является суммой значений 32768 (2 15 — половина максимального значения диапазона портов UDP) и 666 («Число Зверя» или «Число Дьявола»).
  • Windows Traceroute (вернее — tracert.exe ) использует пакеты ICMP Echo Request (ICMP Тип 8), а не UDP, как это делает UNIX-реализация traceroute , а по достижении точки назначения — tracert ожидает получения пакета ICMP Echo Reply (ICMP тип 0).

В оригинале, на http://www.nanog.org , есть еще очень много интерсных деталей как о самом traceroute — так и правильной интерпретации данных, полученных с его помощью.

Доступны два варианта — в виде книги (PDF) и и виде презентации.

Читать еще:  Надоедливый лоток привода компьютера: туда и обратн??
Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector