Adelitusn.ru

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

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

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

Существует несколько хороших утилит, позволяющих искать неисправности в сети на уровне TCP/IP. Большинство из них выдает низкоуровневую информацию, поэтому для того чтобы пользоваться ими, нужно хорошо понимать принципы работы протоколов TCP/IP и маршрутизации. В этой статье мы рассмотрим основные инструменты поиска неисправностей в сети: утилитами ping, traceroute и mtr.

Утилита ping

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Утилита traceroute

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

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

Синтаксис утилиты не сложный:

Адресом узла может служить как IP адрес, так и доменное имя. Основные опции:

Для примера, выпоним трасировку к ресурсу yandex.ru:

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

Иногда, вместо одного узла вы можете видеть звездочки. Это значит, что шлюзы либо не высылают нам ICMP с сообщением «time exceeded», либо у их сообщений слишком маленький TTL и оно нас не достигает. В точности нельзя сказать, что происходит на самом деле, но ясно, что по какой-то причине хост не захотел нам отвечать:

Бывает, что трассировка с помощью UDP не работает, это может произойти потому, что фаервол блокирует все лишние пакеты. Можно воспользоваться ICMP с помощью опции -I:

Рассмотреных выше простых примеров, вполне достаточно для первичной диагностики сети как для обычныз пользователей, так и для начинающих администраторов.

Утилита MTR

MTR – это альтернатива программе traceroute. Объединяя функции ping и traceroute, mtr позволяет постоянно опрашивать удаленный сервер и отслеживать изменения задержки и производительности с течением времени.

Читайте так же:
Как пользоваться CPU-Z

Синтаксис утилиты также несложный:

mtr_1_0.png

Вывод похож на traceroute, но mtr имеет существенное преимущество – ее вывод постоянно обновляется. Это позволяет собирать средние показатели, а также отслеживать тенденции и изменения производительности сети. Как и с утилитой ping, mtr будет работать бесконечно. Чтобы прервать работу команды, нужно нажать специальную клавиатурную комбинацию <Ctrl+C>.

Команда traceroute в системе Linux

Часто какой-нибудь сегмент сети не работает должным образом. Как ни странно, при проверке часто обнаруживается, что используемое оборудование подключено и исправно. Трудно определить, что не работает, на каком участке проблема. На это есть своё объяснение. Это означает, что одно из устройств в локальной сети попросту не отвечает, что приводит к потере некоторых данных. Необходимо разобраться, какой из узлов дал сбой. Это легко проверить при помощи специальной утилиты под названием traceroute в Линукс.

В данной статье рассматривается использование проверенного инструмента только для компьютеров Linux. В других системах эти инструкции не работают.

  • 1 Принцип работы трассировки

Принцип работы трассировки

Данные в сети передаются в виде пакетов. Об этом знает даже новичок. Поток информации нуждается в разбивке, что обеспечивают специальные программы, установленные на компьютере. Далее эти пакеты отправляются на целевой узел через Интернет, после чего поток информации заново собирается.

Каждая «порция» данных имеет ограниченный срок жизни и переходит от узла к узлу, достигая конечной цели. По умолчанию утилита traceroute использует пакеты формата UDP, но данный параметр поддается коррективам. Вскоре вы сами в этом убедитесь.

команда traceroute не найдена

command not found

Обычно по умолчание утилита traceroute не входит в комплект дистрибутивов Линукс и поэтому при использовании трассировки можно получить ошибку «команда не найдена», в английском варианте «command not found».

Установка в Убунту, Debian:

# apt update
# apt install traceroute

# yum install traceroute

# dnt install traceroute

Синтаксис

Рассмотрим синтаксис команды.

В той части команды, где будет указан адрес узла, необходимо прописать доменное имя или IP-адрес.

Дополнительные опции

Чтобы изменить тип пакетов, необходимо воспользоваться соответствующими опциями. Для пакетов ICMP – опция -I. Для пакетов TCP – опция -T. Вследствие чего формат UDP больше не будет использован программой.

Если нужно указать размер пакета, задайте опцию —mtu. В таблице маршрутизации будет указано конкретное устройство. Чтобы поменять его, и задать другой роутер, задайте опцию -r. Для установки максимально допустимого времени жизни пакета задайте опцию -m. Чтобы задать длительность паузы между прыжками, задайте опцию -z.

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

Примеры трассировки в Linux

Рассмотрим на примере выполнение трассировки сети до определенного сервера. Он будет указан в завершении:

Трассировка сайта

Как видно из скриншота, пакет дошел до сайта всего за два хоста

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

Следует учитывать тот факт, что сервисная задержка может отнять немало времени. Это связано с приоритетностью маршрутизатора. Приходящие пакеты всегда находятся в фаворе.

Если в появившемся окне вместо узла указаны звёздочки утилиты, не стоит делать поспешных выводов о его поломке. Скорее всего, узел просто не ответил на этот раз.

Если трассировка сети не осуществляется с помощью пакетов UDP, их формат нужно поменять. В ином случае фаервол продолжил блокировку лишних пакетов. О том, как осуществить замену на практике, говорилось выше. Например, если вы хотите отдать предпочтение пакетам ICMP, то нужно подобрать соответствующую опцию, указанную в статье. В данном случае это опция -I.

Для начала пробуем без изменений:

Если не получается, измените формат пакетов:

# taceroute -I history.pl

Обрыв цепочки – не единственное, что может выявить трассировка сети Linux. Её также можно применить для исследования сети. К примеру, пользователю нужно выяснить, какие подсети используются поставщиком Интернет-услуг. Для этого необходимо отправить 3 запроса с указанием разных адресов. Вот так это выглядит на практике:

Чтобы разобраться с полученными данными и сделать правильное умозаключение, следует провести сравнение 3 выводов заданных команд. Вы увидите, к какой локальной сети подключен ваш маршрутизатор, и какие сети использует провайдер.

Подводя итог, следует резюмировать основные функции команды traceroute:

  1. Тестирование сети
  2. Управление сетью
  3. Измерение сети.
Заключение

Утилита treaceroute – весьма популярный и надежный инструмент для проверки обрыва цепочки, используемый не только системными администраторами, но и обычными пользователями дистрибутива Linux. Эта команда может пригодиться при различных неисправностях. Её рекомендуется использовать исключительно для ручной локализации проблем. Использование traceroute во время стандартных операций и автоматических сценариев может оказать мощную нагрузку на сеть, что не является целесообразным решением.

Читайте так же:
Выделяем все значения в Cheat Engine

Как запустить Traceroute в Linux

Traceroute — это инструмент в Linux, позволяющий исследовать маршруты сетевых пакетов. Это может помочь вам определить ограничивающий фактор перемещения сетевых пакетов. Traceroute также полезен для устранения проблем с медленными сетевыми подключениями. В этом руководстве показано, как запустить traceroute в Linux.

О трассировке

Traceroute отправляет пакеты данных на целевой компьютер, сервер или веб-сайт и записывает любые промежуточные шаги, через которые проходят пакеты. Результатом команды traceroute будут IP-адреса и доменные имена, через которые проходят пакеты. Эти записи также показывают, сколько времени требуется, чтобы пакеты достигли каждого пункта назначения. Это может объяснить, почему некоторые веб-сайты загружаются дольше, чем другие, поскольку количество переходов трафика может варьироваться.

Traceroute также полезен для отображения локальных сетей. Понимание топологии и подключений локальной сети можно найти при запуске инструмента.

Обратите внимание, что при использовании traceroute некоторые устройства могут плохо взаимодействовать. Это может быть связано с ошибками маршрутизаторов, ограничивающими скорость сообщениями ICMP интернет-провайдерами, устройствами, не настроенными для отправки пакетов ICMP (для предотвращения распределенных DoS-атак) и т.д. Некоторые сети также настроены на блокировку запросов трассировки.

Установка traceroute

Traceroute — мощный инструмент, доступный для всех дистрибутивов Linux. Ниже приводится краткий список команд для установки traceroute в различных дистрибутивах.

Для Debian/Ubuntu и производных:

Для Fedora и производных:

Для openSUSE, SUSE Linux и производных:

Для Arch Linux и производных:

Использование traceroute

В следующих разделах показано, как использовать traceroute в вашей системе Linux.

Основное использование

Основной метод использования traceroute довольно прост. Все, что требуется traceroute, — это пункт назначения для выполнения зондирования. Назначением может быть домен или IP-адрес.

Если сеть настроена на блокировку сигнала traceroute, то этот зонд будет отмечен звездочками.

IPv4 или IPv6

По умолчанию traceroute будет использовать Интернет-протокол по умолчанию, на который настроена ваша система. Чтобы вручную установить версию IP, выполните описанную ниже процедуру.

Чтобы указать traceroute на использование IPv4, используйте флаг -4 :

Чтобы указать traceroute использовать IPv6, используйте флаг -6 :

Тестирование портов

Если есть необходимость протестировать конкретный порт, его можно указать с помощью флага -p . Для отслеживания UDP traceroute будет начинаться с заданного значения и увеличиваться с каждым зондом. Для трассировки ICMP значение будет определять начальное значение последовательности ICMP. Для TCP и других это будет постоянный порт назначения для подключения.

Скрытие имен устройств

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

Предел тайм-аута Traceroute

По умолчанию traceroute ждет 5 секунд, чтобы получить ответ. В определенных ситуациях вы можете изменить время ожидания на больше или меньше 5 секунд. Для этого используйте флаг -w . Обратите внимание, что значение времени — это число с плавающей запятой.

Методы исследования

Есть несколько методов, которые вы можете использовать для проверки удаленного адреса. Чтобы указать traceroute на использование эха ICMP, используйте флаг -I :

Чтобы использовать TCP SYN для зондирования, используйте флаг -T :

Установка максимального количества прыжков

По умолчанию traceroute отслеживает 30 переходов. Traceroute предлагает возможность вручную установить количество отслеживаемых переходов.

Используйте флаг -m для количества переходов:

Указание интерфейса

Если к компьютеру подключено несколько сетевых интерфейсов, может оказаться полезным указать сетевой интерфейс, который будет использоваться для отправки пакетов. Чтобы указать сетевой интерфейс, используйте флаг -i :

Определение количества запросов для прыжка

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

Маршрутизация пакетов через шлюз

Чтобы маршрутизировать пакеты через определенный шлюз, используйте опцию -g , за которой следует шлюз:

Страница справки Traceroute

Вышеупомянутые демонстрации — это лишь некоторые из распространенных способов использования traceroute, и вы можете использовать еще больше функций. Чтобы получить быструю помощь, откройте страницу справки traceroute с помощью следующей команды:

Чтобы получить более полное и подробное руководство по всем доступным параметрам traceroute, посетите страницу руководства с помощью следующей команды:

Заключение

Traceroute — это мощный инструмент, используемый для диагностики сети, и он поддерживает множество опций. Освоение traceroute может потребовать времени и практики. При использовании этого инструмента вы часто будете использовать методы, описанные в этой статье.

А ранее мы писали об использовании аналогичной команды tracert в Windows.

4.5.1 Ping и Traceroute

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

Читайте так же:
Как полностью удалить программу XBox в Windows 10?

Для решения поставленной задачи PING использует отклики протокола ICMP (смотри также статьи о протоколах IP и ICMP). В протоколе IP имеется опция записи маршрута (RR — Record Route). В отличие от традиционной команды traceroute опция RR позволяет записать как путь от инициатора до адресата, так и обратный маршрут. К сожалению разработчики протокола предусмотрели для записи маршрута только 37 байт, сюда может поместиться максимум девять IP-адресов (определяется предельным размером поля опций). Применяется PING и при отладке сетевых продуктов. Трассировка может выполняться, например, посредством команды ping -q (пакет PCTCP). При выполнении этой команды ЭВМ сообщит вам Internet адреса всех промежуточных узлов, их имена и время распространения отклика от указанного вами узла. Следует иметь в виду, что трассировка осуществляется непосредственно с помощью IP-протокола (опция записи адресов промежуточных узлов). Ниже приведен пример использования команды Ping. Если вы просто напечатаете команду ping (пакет PCTCP), то ЭВМ выдаст на экран справочную таблицу по использованию этой команды:

Usage:
ping [-options] host
options:

-d [bytes]dump input packet(пропечатка входных пакетов).
-d# [bytes]dump output packet(пропечатка выходных пакетов).
-ecancel extended security(отмена дополнительных мер безопасности)
-i secondsIP time to live(установка времени жизни пакетов IP)
-j dest 1. dest nloose source routing(свободная маршрутизация).
-k dest 1. dest nstrict source routing(принудительная маршрутизация).
-l lengthset length of icmp data(установить длину данных для ICMP).
-n timesping host times number of times(провести зондирование ЭВМ заданное число раз).
-ono-op option(ни каких опций для операций).
-p precedenceset IP precedence(установка IP-предпочтения).
-qtrace route(трассировка маршрута).
-rrecord route(запись маршрута).
-s level [authority]basic security(базовый уровень безопасности).
-tping forever(режим бесконечного ping).
-v typeset type of service(установка типа операции).
-w secondstime to wait for answer(установка времени ожидания ответа).
-x [<1|3 dest1..destn>]timestamp option(опция временных меток).
-zquiet mode(набор статистики отключен).

Команда трассировки маршрута ИТЭФ — сервер научно-исследовательской станции США Мак-Мурдо в Антарктиде (запись в файл route.txt):

ping -q mcmurdo-gw.mcmurdo.gov > route.txt

Содержимое файла route.txt будет иметь вид:

hop 1:193.124.224.190.имя для GW ИТЭФ пока не придумано
hop 2:193.124.137.13MSU-Tower.Moscow.RU.Radio-MSU.netВперед, в космос
hop 3:193.124.137.9NPI-MSU.Moscow.RU.Radio-MSU.netЧерез спутник «Радуга»
hop 4:193.124.137.6DESY.Hamburg.DE.Radio-MSU.netпакеты совершили мягкую посадку в Гамбурге, ДЕЗИ
hop 5:188.1.133.56dante.WiN-IP.DFN.DE
hop 6:193.172.4.12duesseldorf2.empb.net
hop 7:193.172.4.8amsterdam6.empb.net
hop 8:193.172.12.6Amsterdam1.dante.netПересекаем Атлантический океан
hop 9:194.41.0.42New-York1.dante.netвступили на землю США
hop 10:192.103.63.5en-0.cnss35.New-York.t3.ans.net
hop 11:140.222.32.222mf-0.cnss32.New-York.t3.ans.net
hop 12:140.222.56.2t3-1.cnss56.Washington-DC.t3.ans.net
hop 13:140.222.145.1t3-0.enss145.t3.ans.net
hop 14:192.203.229.243SURA2.NSN.NASA.GOVСнова в космос
hop 15:128.161.166.1GSFC8.NSN.NASA.GOVно теперь через американский
hop 16:128.161.232.1GSFC12.NSN.NASA.GOVспутник
<>hop 17:128.161.1.1ARC1NEW.NSN.NASA.GOV
hop 18:192.203.230.2ARC1.NSN.NASA.GOV
hop 19:192.100.12.2ARC2.NSN.NASA.GOV
hop 20:128.161.115.2MCMURDO.NSN.NASA.GOVОденьте шапку, мы в Антарктиде!
Target157.132.100.1reached on hop 21round-trip time 1370 ms

Фантастика, мы пересекли туда и обратно Европу, два океана и США с востока на запад, побывали в Антарктиде и все это менее чем за полторы секунды.

Ping позволяет не только проверить работоспособность канала, но измерить ряд его характеристик, включая надежность (например, версия ping для SUN):

PING -s cernvm.cern.ch 100 64 (пакеты по 100 байт посылаются 64 раза)
108 bytes from crnvma.cern.ch (128.141.2.4): icmp_seq=0. time=606. Ms
. (результаты пересылки пакетов с номерами 1-61 опущены)
108 bytes from crnvma.cern.ch (128.141.2.4): icmp_seq=62. time=667. Ms
108 bytes from crnvma.cern.ch (128.141.2.4): icmp_seq=63. time=628. Ms
—- PING Statistics —-
64 packets transmitted, 63 packets received, 1% packet loss (процент потерянных пакетов)

round-trip (ms) min/avg/max = 600/626/702

Для получения большей точности следует послать большее число пакетов. В последней строке приведены результаты измерения RTT, где представлены минимальное/среднее/максимальное значения.

Наибольшее число модификаций имеет BSD-версия ping, если на вашей ЭВМ нет этой удобной программы, можно воспользоваться общедоступной версией по адресу:

Процедура traceroute

Сходную информацию позволяет получить и программа traceroute (использует непосредственно IP-пакеты):

traceroute -n cernvm.cern.ch
traceroute to crnvma.cern.ch (128.141.2.4) 30 hops max, 40 byte packets
1 193.124.224.50 3 ms 2 ms 2 ms
2 194.85.112.130 3 ms 3 ms 3 ms
3 194.67.80.5 4 ms 3 ms 3 ms
4 193.124.137.6 534 ms 534 ms 534 ms
5 188.1.56.5 545 ms 545 ms 546 ms
6 193.172.4.12 558 ms (ttl=59!) 549 ms (ttl=59!) 548 ms (ttl=59!)
7 193.172.4.30 580 ms (ttl=58!) 581 ms (ttl=58!) 581 ms (ttl=58!)
8 193.172.24.10 586 ms 585 ms 597 ms
9 192.65.185.1 593 ms 587 ms 598 ms
10 128.141.2.4 628 ms 602 ms 619 ms

При написании программ, использующих протокол ICMP, полезно воспользоваться отладочной опцией PING, которая позволяет получить на экране шестнадцатеричный образ посылаемого и получаемого пакетов:

ping -d# 300 ns.itep.ru(версия PCTCP, запрос отклика серверу имен, число байт, подлежащих выдаче, равно 300)

Dump of outgoing packet
Version = 4 IP header length = 5 Precedence = Routine
Type of Service = Normal
Total length = 284 Protocol = 1 TTL = 64
45 00 01 1C 00 02 00 00 40 01 71 29 C0 94 A6 81 C1 7C E0 23 IP-заголовок
08 00 8D BD E9 03 00 01 . ICMP-заголовок
host responding, time = 60 ms

Выдачи ради экономии места сильно сокращены. Тексты пакетов начинаются с кодов IP-версии (=4) и длины заголовка (=5), далее следует байт TOS=0, два байта длины пакета (01 1С) и т.д. в соответствии с требованиями IP-протокола.

ping -d 300 ns.itep.ru (команда получения текста пакета-отклика на запрос)
host responding, time = 25 ms
Dump of incoming packet
Version = 4 IP header length = 5 Precedence = Routine
Type of service = Normal
Total length = 284 Protocol = 1 TTL = 254
45 00 01 1C EE 29 00 00 FE 01 C5 00 C1 7C E0 23 C0 94 A6 81
00 00 93 BD EB 03 00 01 .

Возможный алгоритм реализации traceroute

В принципе, процедуру Ping и Traceroute можно реализовать и с привлечением протоколов UDP и TCP. Рассмотрим следующую модель реализации Traceroute :

Посылаем последовательно по адресу IP(URL) IP-пакеты со значением TTL=1, 2. и т.д. Если до больше одного шага, соответствующий маршрутизатор, размещенный по пути следования к адресату, уничтожит посланный пакет и вернет ICMP-сообщение: Time Exceeded (тип ICMP-сообщения=11), указав при этом IP-адрес узла, где это произошло. Послав запрос типа get_name_by_address для присланного IP, можно получить имя узла, откуда пришло данное уведомление. Отсутствие сообщения Time Exceeded (например, после трех попыток) будет говорить о достижении -адресата. Еще лучше для контроля наличия отклика от узла-мишени использовать реализацию ping на основе протокола UDP или ТСР (например, из библиотеки PERL), так как в этом случае можно задать бессмысленный номер порта и адресат откликнется ICMP-сообщением — порт недоступен (с предъявлением своего IP-адреса). Это будет означать, что адресат достигнут и вы располагаете исчерпывающими данными о пути до него. В результате такой последовательности посылок будет получена исчерпывающая информация о пути до указанной цели.

Для данной методики реализации traceroute не существенно, какой протокол использовать, UDP, ICMP или TCP.

Боярские форумы

Трассировка. Как правильно интерпретировать ее результаты

  • Версия для печати

Трассировка. Как правильно интерпретировать ее результаты

  • Цитата

Сообщение Ob-iVan » Чт, 21 июл 2011, 06:27

Давно хотел написать этот материал, так как регулярно приходится отвечать на одни и те же вопросы по одной и той же теме. Речь пойдет о том, как с помощью трассировки диагностировать причину плохой работы того или иного ресурса в Интернете, либо проблему доступа ко всем ресурсам сразу. Пока что это «черновой» вариант своеобразной статьи, которую я собираюсь расширять и дополнят по мере ответа на ваши вопросы по ней.

Итак, когда что-то в Интернете работает не так, как хочется, вполне логично постараться найти причину. Одно из наиболее простых, но достаточно мощных средств диагностики — виндовая команда tracert. Получаемая с ее помощью информация помогает ответить на многие вопросы. Главное — правильно интерпретировать эти ответы. И вот тут-то и начинаются трудности.

Одна из основных проблем в том, что трассировку обычно делают только тогда, когда что-то работает плохо, а потом по ее результатам пытаются понять, какие цифры хорошие, а какие плохие. Хотя намного проще сначала сделать трассировку тогда, когда субъективно все работает идеально (или, по крайней мере, хорошо), сохранить ее результаты, и именно с ними сравнивать цифры, полученные в моменты возникновения проблем. Почему это важно, поясню на примере.

Вот трасса, которую я получил вчера вечером, когда сравнивал разные варианты создания VPN-подключения под Windows 7:

Могу «побиться об заклад», что многие, взглянув на первую трассу, скажут: «Ужас! Какие потери на третьем и четвертом узлах!»
Но ирония судьбы в том, что субъективно во время обоих приведенных трассировок, Инет у меня работал великолепно. И удивительно это только на первый взгляд. Потому что когда вы научитесь правильно интерпретировать результаты трассировки, вы поймете, что в первой трассе нет совершенно ничего плохого. Но — обо всем по порядку.

Текстовый вывод команды tracert состоит из заголовка и идущей за ним таблицы, состоящей из двух поясняющий столбиков (самого левого — это порядковый номер хоста в маршруте, и самого правого — названия этого хоста), а также массива цифр между ними.
Первое, что нужно понять и запомнить: каждая цифра в этом массиве отражает отдельную попытку измерения . Очень часто люди воспринимают цифры в вертикальных рядах, как результаты прохождения одного и того же пакета. Это не так. Например, для получения приведенных выше таблиц команде tracert пришлось отправить 21 отдельный пакет (по три пакета до каждого узла в маршруте). Именно поэтому, три цифры в каждой строчке могут отличаться друг от друга. И именно поэтому задержка прохождения пакета к более дальнему узлу может быть меньше, чем к более ближнему. Нагрузка Интернет-каналов способна измениться за долю секунды, и нет ничего странного в том, что в момент измерения задержек к более дальним хостам каналы могут оказаться более свободными и пакеты к ним могут пройти быстрее. Поэтому ситуация, когда цифры в нижних строчках меньше, чем в верхних — вполне нормальна. Но именно она вводит в заблуждения многих пользователей и заставляет предполагать, что эти цифры — задержка между этим хостом и предыдущим. Ничего подобного: каждая цифра — это задержка обмена пакетами между данным хостом и вашим компьютером .

Второй очень важный момент — что означают эти задержки. Многие думают, что это чистое время прохождения пакета к данному узлу. Это нет так. На самом деле, каждая цифра — это сумма трех задержек : задержка прохождения пакета от вашего компьютера к данному узлу + время обработки пакета узлом и время формирования ответного пакета + задержка прохождения ответного пакета от узла к вашему компьютеру. Я не зря так подробно это расписываю. Дело в том, что каждый конкретный узел имеет свои настройки приоритета обработки пакетов.
Например, узлы 91.196.148.6 и 91.196.148.29 настроены так, чтобы обеспечивать максимальный приоритет для тех пакетов, которые проходят через них транзитом. Соответственно, если транзитная нагрузка большая, проходит достаточно заметное время, прежде чем будет отправлен ответ непосредственно от этого узла. Как следствие, цифры по данным хостам могут быть огромными, но это не значит абсолютно ничего, если цифры в следующих строчках — нормальные . Кроме того, нужно обратить внимание, что задержки в двух направлениях (от вашего компьютера к узлу и от узла к вашему компьютеру) имеют разное влияние на фактическую скорость доступа к Интернету. Например, если вы скачиваете файл или смОтрите online-видео, то задержка по направлению к вам имеет во много раз большее значение, чем задержка по направлению от вас. Например, если суммарная задержка до конечного узла 50мс, но из них только 5 мс — время прохождения пакета от узла к вам, то скорость выкачки с этого узла будет заметно выше, чем в том случае, если суммарная задержка 10 мс, но время прохождения пакета к вам — 9 из них. А ведь при трассировке выводится только суммарное значение задержек. Но 50мс в приведенном примере может оказаться лучше, чем 10мс.

И, наконец, третий момент: что означают звездочки. Многие думают, что звездочка означает, что пакет однозначно потерян. На самом деле звездочка означает, что команда tracert просто не дождалась ответа от узла за определенный интервал времени (зависит от версии винды, чаще всего — 2 сек). Конечно, это может означать, что ответный пакет вообще не пришел, но на практике очень часто это означает всего лишь то, что ответного пакета просто не дождались. Например, в первом примере трассировки звездочки на третьем и четвертом узлах означают всего навсего то, что ответ от них шел больше 2 сек. Чтобы проверить, что означает звездочка в данной конкретной ситуации, служит ключ -w, после которого идет время ожидания каждого пакет в миллисекундах.
Команда, в таком случае, будет иметь, например, такой вид: tracert -w 10000 193.193.193.100. Но учтите: большое время ожидания может заметно увеличить суммарное время выполнения команды трассировки.

Таким образом, можно сделать два кратких вывода:
1. Малые задержки — это всегда хорошо, но большие задержки — это не всегда плохо.
2. Отсутствие звездочек при трассировке — это всегда хорошо, но их наличие — не всегда плохо.

Надеюсь, приведенная информация поможет вам более точно воспринимать цифры, выводимые командой tracert, и делать на их основании максимально правильные выводы.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector