Для чего служит команда traceroute
Использование расширенных команд ping и traceroute
Параметры загрузки
Содержание
Введение
В этом документе объясняется, как использовать расширенные команды ping и traceroute. Сведения о стандартных командах ping и traceroute широко представлены в следующих документах:
Предварительные условия
Требования
Данный документ требует наличия основных сведений о командах ping и traceroute, ссылки на подробные описания которых приведены в разделе «Введение».
Используемые компоненты
Сведения, содержащиеся в данном документе, касаются следующих версий программного и аппаратного обеспечения:
ПО Cisco IOS® версии 12.2(10b)
Маршрутизаторы всех серий Cisco
Данные для этого документа были получены при тестировании указанных устройств в специально созданных лабораторных условиях. Все устройства, описанные в данном документе, обладают ненастроенной (заданной по умолчанию) конфигурацией. При работе в действующей сети необходимо изучить все возможные последствия каждой команды.
Условные обозначения
Дополнительные сведения о применяемых в документе обозначениях см. в Условные обозначения, используемые в технической документации Cisco
Команда ping
Команда ping (Packet InterNet Groper) является очень распространенным средством для устранения неполадок, связанных с доступом к устройствам. В ней для определения активности удаленного хоста используются два типа сообщений протокола ICMP – эхо-запрос и эхо-ответ. Команда ping также измеряет количество времени, необходимого для получения эхо-ответа.
Команда ping сначала посылает пакет эхо-запроса на адрес, а затем ожидает ответа. Эхо-тест является удачным только в том случае, если ECHO REQUEST попадает в место назначения, и место назначения может отправить ECHO REPLY к источнику эхо-теста в течение заданного временного интервала.
Расширенная команда ping
Если от маршрутизатора посылается обычная команда ping, адрес источника этой команды ping является IP-адресом интерфейса, который используется пакетом для выхода из маршрутизатора. При использовании расширенной команды ping IP-адрес источника может быть изменен на любой IP-адрес в маршрутизаторе. Расширенная команда ping используется для более тщательной проверки доступности хоста и возможности сетевого подключения. Расширенная команда ping работает только в привилегированной командной строке EXEC. Обычная команда ping работает как в пользовательском, так и в привилегированном режиме EXEC. Чтобы использовать эту функцию, введите ping в командной строке и нажмите Возврат. Будет предложено заполнить поля, как показано в разделе Описания полей команды ping этого документа.
Описания полей команды ping
В этой таблице приведены описания полей команды ping. Эти поля могут быть изменены с помощью расширенной команды ping.
Запрос поддерживаемого протокола. Введите appletalk, clns, ip, novell, apollo, vines, decnet или xns. По умолчанию используется ip.
Запрашивает IP-адрес или имя хоста узла назначения, для которого планируется выполнение эхо-теста. Если в качестве поддерживаемого протокола указан не протокол IP, введите здесь соответствующий адрес для указанного протокола. По умолчанию не используется.
Число ping-пакетов, передаваемых на адрес назначения. Значение по умолчанию – 5.
Размер ping-пакета (в байтах). По умолчанию: 100 байт
Timeout in seconds [2]:
Интервал времени ожидания. По умолчанию: 2 секунды. Запрос «ICMP-эхо» считается успешным, только если пакет ЭХО-ОТВЕТА получен до этого временного промежутка.
Extended commands [n]:
Указывает на появление или отсутствие дополнительных команд. По умолчанию не используется.
Source address or interface:
Интерфейс или IP адрес маршрутизатора будут использованы в качестве адреса отправителя для тестирования. Обычно IP-адрес для использования исходящим интерфейсом выбирает маршрутизатор. Интерфейс также может использоваться, но с корректным синтаксисом, как показано ниже:
Примечание. Выше приведены неполные выходные данные расширенной команды ping. Интерфейс не может быть записан как e0.
Определяет тип обслуживания (ToS). Запрошенный ToS размещен в каждом тестовом пакете, но нет гарантии, что все маршрутизаторы смогут обработать ToS. Это выбор качества Интернет-обслуживания. Значение по умолчанию – 0.
Set DF bit in IP header? [no]:
Задает необходимость включения бита «Не фрагментировать» (DF) в пакете ping-трассировки. Если необходимость будет подтверждена, параметр «Не фрагментировать» не разрешает фрагментацию пакета, когда он должен пройти через сегмент с меньшей максимальной единицей передачи данных (MTU), и выдается сообщение об ошибке от устройства, которое должно было фрагментировать пакет. Это используется для определения минимальной единицы MTU на тракте к адресату. По умолчанию используется значение «no».
Validate reply data? [no]:
Указывает, следует ли проверять ответные данные. По умолчанию используется значение «no».
Data pattern [0xABCD]
Задает шаблон данных. Для устранения ошибок кадрирования и проблем синхронизации на линиях последовательной передачи используются разные шаблоны данных. По умолчанию используется шаблон [0xABCD].
Loose, Strict, Record, Timestamp, Verbose[none]:
Параметры IP-заголовка. Это приглашение предлагает выбрать более одного параметра. Типичные сбои:
Verbose – автоматически выбирается вместе с любым другим параметром.
Record является очень полезным параметром: он позволяет показать адреса узлов (до девяти), через которые проходит пакет.
Strict используется для указания узлов, через которые должен пройти пакет, но при этом прохождение через другие узлы не разрешается.
Timestamp используется для определения времени полного обхода маршрутов к определенным хостам.
Различие между использованием параметра Record этой команды и использованием команды traceroute состоит в том, что параметр Record этой команды не только информирует об участках тракта, пройденных эхо-запросом (ping) до места назначения, но также информирует об участках, через которые запрос прошел на обратном пути. Команда traceroute не предоставляет информацию о тракте, пройденном эхо-ответом. Команда traceroute выдает приглашения для заполнения обязательных полей. Команда traceroute устанавливает запрошенный параметр для каждого теста. Однако нет гарантии, что все маршрутизаторы (или конечные узлы) обработают эти параметры. По умолчанию не используется.
Sweep range of sizes [n]:
Позволяет менять размеры отправляемых эхо-пакетов. Эта команда используется для определения минимальных размеров MTU, настроенных для узлов на тракте к адресату. Таким образом, устраняется снижение производительности, вызванное фрагментацией пакетов. По умолчанию используется значение «no».
Каждый восклицательный знак (!) указывает на получение ответа. Точка (.) означает, что время ожидания ответа сетевым сервером истекло. Описание остальных символов см. в разделе символы эхо-тестирования.
Success rate is 100 percent
Процент пакетов, успешно возвращенных маршрутизатору. Результаты со значением менее 80 процентов обычно указывают на наличие проблем.
round-trip min/avg/max = 1/2/4 ms
Интервалы времени полного обхода для эхо-пакетов протокола, включая минимальные/средние/максимальные значения (в миллисекундах)
Нижеприведенная диаграмма показывает, что хост 1 и хост 2 не могут обмениваться ping-пакетами. Вы можете проверить наличие этой неисправности на маршрутизаторах, чтобы определить, является ли она проблемой маршрутизации, или у одного из двух узлов неправильно настроен шлюз по умолчанию.
Пример
Ниже приведен пример команды расширенной ping команды, источник которой – интерфейс Ethernet 0 маршрутизатора А, а получатель – интерфейс Ethernet маршрутизатора В. Если эхо-тестирование выполняется успешно, проблем маршрутизации нет. Маршрутизатор A имеет доступ в Ethernet маршрутизатора B, а маршрутизатор B имеет доступ в Ethernet маршрутизатора A. А также шлюзы по умолчанию для обоих узлов настроены корректно.
Если выполнение расширенной команды ping из маршрутизатора A не удается, значит возникли проблемы маршрутизации. Проблема маршрутизации может быть на любом из трех маршрутизаторов. Маршрутизатору А может недоставать маршрута в подсеть Ethernet маршрутизатора B или в подсеть между маршрутизаторами C и B. Маршрутизатору B может недоставать маршрута в подсеть Ethernet маршрутизатора A или в подсеть между маршрутизаторами C и A; а маршрутизатор C может не иметь маршрута в подсеть сегментов Ethernet маршрутизаторов A или B. Следует устранить проблемы маршрутизации, и после этого попытаться выполнить команду ping из хоста 1 к хосту 2. Если хост 1 все еще не может связаться с хостом 2, следует проверить шлюзы по умолчанию обоих хостов. Возможность соединения между Ethernet маршрутизатора А и Ethernet маршрутизатора В проверяется с помощью расширенной команды ping.
Если обычная команда ping посылается из интерфейса Ethernet от маршрутизатора А к маршрутизатору В, адрес источника этого эхо-пакета является IP-адресом исходящего интерфейса, то есть, адресом последовательного интерфейса 0 (172.31.20.1). Когда маршрутизатор В отвечает на эхо-пакет, этот ответ отсылается на адрес источника (172.31.20.1). Таким образом проверяется только связь между последовательным интерфейсом 0 маршрутизатора А (172.31.20.1) и интерфейсом Ethernet маршрутизатора B (192.168.40.1).
Чтобы проверить связь между интерфейсами Ethernet 0 маршрутизатора A (172.16.23.2) и Ethernet 0 маршрутизатора B (192.168.40.1), используйте команду расширенную команду ping. Расширенная команда ping дает возможность указать адрес источника ping-пакета, как показано ниже.
Следующий пример содержит расширенные команды и подробности изменений:
Команда трассировки
Там, где команда ping может быть использована для проверки связи между устройствами, команда traceroute может использоваться для обнаружения трактов, по которым пакеты достигают удаленных адресатов, а также точек нарушения маршрутизации.
Целью использования команды traceroute является запись источника каждого ICMP-сообщения «превышен лимит времени» для обеспечения трассировки тракта, по которому пакет попадает к адресату.
Устройство, выполняющее команду traceroute, отсылает последовательность блоков UDP (Протокол датаграмм пользователя) (с увеличением значений TTL (время существования) на неверный адрес порта (по умолчанию 33434) на удаленном хосте.
Сначала посылаются три датаграммы, причем поле TTL каждой датаграммы установлено в значение 1. Значение TTL, равное 1, является причиной «тайм-аута» датаграммы при достижении первого маршрутизатора на ее тракте. Этот маршрутизатор выдает ICMP сообщение о превышении времени, что означает истечение срока действия датаграммы.
Затем посылаются еще три сообщения UDP, каждое со значением 2 в поле TTL. Это значит, что второй маршрутизатор на тракте к адресату вернет сообщения ICMP об истечении срока.
Этот процесс продолжается до тех пор, пока пакеты не достигнут пункта назначения, а система, инициировавшая проверку прохождения сигнала по сети, не получит ICMP-сообщения об истечении времени от каждого маршрутизатора по пути к пункту назначения. Как только эти датаграммы пытаются получить доступ к неверному порту (по умолчанию 33434) на хосте назначения, то этот узел начинает отвечать ICMP-сообщениями «port unreachable», что значит «порт недоступен». Это событие служит признаком того, что программа traceroute завершена.
Расширенная команда traceroute
Расширенная команда traceroute – разновидность команды traceroute. Расширенная команда traceroute используется для просмотра пути, по которому пакеты доходят до пункта назначения. Эта команда также может быть использована для проверки маршрутизации. Это удобно для устранения петель маршрутизации или для определения, на каком участке происходит потеря пакетов (если маршрут отсутствует или пакеты блокируются списком управления доступом (ACL) или брандмауэром). Вы можете выполнить расширенную команду ping, чтобы определить тип проблемы соединения, а затем с помощью расширенной команды traceroute выяснить местоположение проблемы.
Сообщение об ошибке превышения лимита времени указывает на то, что сервер промежуточной связи «увидел» и отбросил пакет. Сообщение об ошибке недоступности пункта назначения указывает на то, что узел назначения получил тестовый пакет и отклонил его, так как не может отправить пакет. Если таймер срабатывает до прихода ответа, команда trace отображает звездочку (*). Выполнение команды заканчивается, когда происходит следующее:
конечная точка отвечает
максимальное значение TTL превышено
пользователь прерывает трассировку с помощью управляющей последовательности
Примечание. Активизировать эту управляющую последовательность можно с помощью одновременного нажатия клавиш Ctrl, Shift и 6.
Описания полей команды traceroute
В этой таблице содержатся описания полей команды traceroute:
Запрос поддерживаемого протокола. Введите appletalk, clns, ip, novell, apollo, vines, decnet или xns. По умолчанию используется ip.
Необходимо указать имя хоста или IP-адрес. Нет значения по умолчанию.
Интерфейс или IP адрес маршрутизатора будут использованы в качестве адреса отправителя для тестирования. Обычно IP-адрес для использования исходящим интерфейсом выбирает маршрутизатор.
По умолчанию имеется как символическое, так и цифровое отображение; тем не менее можно отменить символическое отображение.
Timeout in seconds [3]:
Количество секунд ожидания ответа на тестовый пакет. Значение по умолчанию равно трем секундам.
Число пробных пакетов, которые требуется отправить на каждом уровне TTL. Значение по умолчанию равно 3.
Minimum Time to Live [1]:
Maximum Time to Live [30]:
Максимальное значение TTL, которое может использоваться. Значение по умолчанию – 30. Выполнение команды traceroute завершается при достижении точки назначения или данного значения.
Порт назначения, используемый пробными сообщениями UDP. Значение по умолчанию — 33434.
Loose, Strict, Record, Timestamp, Verbose[none]:
Параметры IP-заголовка. Можно указать любое сочетание. Команда traceroute выдает приглашения для заполнения обязательных полей. Запомните, что команда traceroute устанавливает запрашиваемый параметр для каждого теста; однако нет гарантии, что все маршрутизаторы (или конечные узлы) обработают эти параметры.
Пример
Примечание. Команду расширенной трассировки traceroute можно выполнить только в привилегированном режиме EXEC, в то время как команда обычной трассировки traceroute работает как в этом режиме, так и в режиме пользователя.
Команда TRACERT: что это, отличие от PING, как пользоваться?
Интернет по сути состоит из глобальной сети маршрутизаторов, которая позволяет компьютерам и серверам со всего мира связываться друг с другом. Эти маршрутизаторы обмениваются данными друг с другом, чтобы направлять или передавать пакеты данных по назначению.
Утилита командной строки Traceroute – это инструмент, который используется для определения точного маршрута, по которому пакет данных проходит в сети Интернет от отправителя до места назначения.
При помощи команды tracert (Windows) или traceroute (Linux и Mac OS) вы легко и быстро можете определить где находится проблема, узкое место в передаче данных, задержка соединения с сервером. Также вы можете использовать утилиту, если вам просто интересно узнать какой путь проделывает пакет данных до места назначения.
Чем Tracert отличается от Ping?
Широкоизвестная команда PING используется для проверки связи с сервером. Ваш компьютер отправляет четыре пакета данных в пункт назначения, и как только они прибудут туда, пакеты вернутся обратно на ваш компьютер.
Если вы получили все или только часть пакетов данных на свой компьютер, это говорит о наличии общего соединения между вашим ПК и конечным пунктом. Кроме этого, вы получите данные о том, сколько по времени (в миллисекундах) заняло путешествие пакетов данных туда-обратно.
Traceroute даст нам больше информации – утилита не только проверит наличие связи с конечным пунктом назначения, но и с каждым маршрутизатором на этом пути. Она измерит время приема-передачи пакетов данных от каждого встреченного на пути маршрутизатора.
Как пользоваться Tracert?
Для примера проследим путь от моего ПК до сайта Google. В командной строке ввожу:
Вместо доменного имени вы можете также ввести ip-адрес удаленного сервера.
После запуска команды (по нажатию клавиши ENTER) наш ПК отправит три пакета данных каждому маршрутизатору на пути к месту назначения. Каждый из них в свою очередь сразу после получения пакетов отправит их обратно на наш компьютер и сообщит информацию о себе, например IP-адрес.
Также маршрутизатор укажет время, измеренное в милисекундах, за которое три пакета данных прошли к нему и от него. Рассмотрим полученные результаты.
В крайнем левом столбце указано количество hops (хопов, узлов, прыжков) пройденных до пункта назначения. Следующие три столбца показывают время прохождения каждого пакета данных до каждого узла и обратно.
Как видим, на первом этапе передача пакетов произошла менее чем за 1 ms. Первой точкой перехода был мой домашний модем-роутер (маршрутизатор). Этот маршрут самый короткий и быстрый, поскольку он проходит в пределах моей локальной сети. Но как только данные попадают в Интернет (второй прыжок), время приема-передачи значительно увеличивается. И чем дальше пакеты данных должны пройти к каждому маршрутизатору, тем больше времени будет затрачено на это.
Достижение конечного пункта назначения будет самым длительным этапом. Его значение будет соответствовать результату, полученному при помощи команды Ping. Потому что, как вы помните, ping отображает только время достижения конечного пункта на пути следования пакетов данных.
Последний столбец отчета traceroute сообщает IP-адрес или доменное имя каждого встреченного маршрутизатора.
Как установить проблему при помощи трассировки?
Одна из основных вещей, на которую следует обратить внимание при выполнении трассировки – это постоянное время прохождение пакета туда-обратно. На скриншотах выше указано нормальное время – оно стабильно и имеет небольшое постепенное увеличение без значительных отклонений в пределах одного узла.
Проблема есть, но на каком именно этапе прохождения пакетов данных она возникает команда Ping не показывает.
Утилита Tracert поможет определить корень проблемы. Проанализируем отчет трассировки:
Сбой, как мы видим, возникает на пятом хопе, и данный маршрутизатор негативно влияет на оставшийся путь данных к месту назначения. Таким образом мы быстро обнаружили, что причина задержки передачи данных не связана с нашей локальной сетью или сервером. Проблема в удаленном роутере сети Интернет.
Что означают звездочки в отчете?
Иногда в отчете трассировки вы можете заметить звездочки, исходящие от маршрутизатора.
Это может означать как наличие проблемы с данным маршрутизатором, так и то, что он работает нормально, но не был настроен для возврата ответов tracert. Узел принял и передал пакеты в штатном режиме, но просто не сообщил затраченное на это время.
Что такое TTL?
После запуска tracert в окне командной строки можно прочесть такую фразу: «с максимальным числом прыжков 30» (на русском или английском).
Количество таких прыжков (hops) определяет параметр TTL (Time To Live), или время жизни. Он задает то, как долго переданные пакеты данных могут жить прежде чем будут отброшены. По умолчанию задаётся 30 прыжков. Если пакеты не достигают цели через 30 переходов, они автоматически отбрасываются.
tracert –h 4 google.com
Вышеуказанная запись означает, что когда данные достигают четвертого прыжка (узла), они отбрасываются и не передаются далее.
Для чего вообще нужен TTL? TTL способен предотвратить бесконечное перемещение пакета данных по сети Интернет в попытках найти пункт назначения. Такое может случиться, если некоторые маршрутизаторы в Интернет были неправильно настроены, и данные могут попасть в бесконечный цикл между этими маршрутизаторами без перспективы «прорваться» на следующий узел на своем пути до цели.
Получается так, что эти «неправильные» маршрутизаторы заняты постоянной обработкой присланных однажды пакетов, что мешает обработке последующих.
Утилиты Traceroute и Tracert
Traceroute — это утилита, которая позволяет проследить маршрут следования данных до удалённого адресата в сетях TCP/IP. В Linux используется команда Traceroute, а в Windows — Tracert. При помощи этих команд можно увидеть путь пакета данных от вашего компьютера до целевого сервера или сайта.
Как работают Tracert и Traceroute
Когда вы пытаетесь открыть сайт, браузер отправляет сообщение (запрос) серверу, на котором этот сайт находится. Сообщение на своём пути проходит через маршрутизаторы. Они решают, куда дальше передать сообщение, чтобы гарантированно его доставить адресату. В трассировке маршрутизаторы ещё называют хопами (хоп — прыжок) или узлами. Количество узлов, через которые на своём пути пройдёт запрос, можно узнать при помощи утилит Tracert и Traceroute. Узлы, которые не являются целевыми для запроса, называют транзитными.
Утилита Traceroute формирует UDP-датаграмму (сообщение, которое нужно доставить целевому серверу), упаковывает её в IP-пакет и передаёт первому транзитному узлу. В заголовке такого IP-пакета есть поле TTL (Time To Live) — время жизни пакета. Оно определяет количество хопов, через которые пакет может пройти. На каждом узле TTL уменьшается на единицу. Если на пути к удалённому адресату время жизни пакета станет равно 0, маршрутизатор отбросит пакет и отправит источнику ICMP-сообщение об ошибке «Time Exceeded» (время истекло).
Этот принцип лежит в основе работы утилит Tracert и Traceroute, однако между ними есть отличия. Рассмотрим каждую утилиту отдельно.
Tracert отправляет на хост назначения ICPM-запрос «Echo Request» с TTL=1. Первый маршрутизатор, который получит запрос, проверяет, кому он предназначен. Если маршрутизатор не является целевым хостом, он уменьшает TTL на 1, отбрасывает пакет и отправляет ICMP-сообщение источнику, так как время жизни теперь равно 0. В этом сообщении маршрутизатор указывает информацию о себе и причину дропа пакета. Получив сообщение, Tracert запоминает этот маршрутизатор как первый хоп (прыжок) и отправляет следующий пакет, но уже с TTL=2. Первый хоп успешно обрабатывает новый пакет, уменьшает время его жизни на 1 и передаёт дальше. Следующий маршрутизатор тоже выполняет проверку хоста назначения и, если пакет предназначен не ему, уменьшает TTL, отбрасывает пакет и отправляет ICMP-сообщение источнику. Tracert запоминает второй хоп, снова увеличивает TTL на 1 и отправляет следующий пакет. Эти действия будут повторяться до тех пор, пока пакет не достигнет целевого хоста. Когда запрос попадёт к целевому хосту, этот хост в ответ направит ICMP «Echo Reply». Источник воспримет это как завершение трассировки.
Утилита Traceroute вместо ICMP-запроса отправляет 3 UDP-пакета на определенный порт целевого хоста и ожидает ответа о недоступности этого порта. Первый пакет отправляется с TTL=1, второй с TTL=2 и так далее, пока запрос не попадёт адресату. Отличие от Tracert в том, как Traceroute понимает, что трассировка завершена. Так как вместо ICMP-запроса он отправляет UDP-запрос, в каждом запросе есть порт отправителя (Sourсe) и порт получателя (Destination). По умолчанию запрос отправляется на закрытый порт 34434. Когда запрос попадёт на хост назначения, этот хост отправит ответ о недоступности порта «Destination port unreachable» (порт назначения недоступен). Это значит, что адресат получил запрос. Traceroute воспримет этот ответ как завершение трассировки.
Если Tracert работает по протоколу ICMP, то какой протокол используется командой Traceroute? По умолчанию используется протокол UDP, но traceroute может отправить и ICMP-запрос «Echo Request», как Tracert. Такой способ пригодится, если хоп не отвечает на UDP-пакет.