Купить Корзина
  • Домены и сайты
  • Облако и IT-инфраструктура
  • Вход
  • Телефон в Москве

    +7 495 580-11-11
  • Бесплатный звонок по России

    8 800 555-34-78
  • Или обратитесь в наши офисы

    Региональные номера
    1. База знаний
    2. Хостинг
    3. Размещение сайта. Отображение в браузере
    4. Утилиты Traceroute и Tracert

    Утилиты Traceroute и Tracert

    В этой статье мы рассмотрим, как использовать сетевые утилиты 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-пакет.

    Как использовать Traceroute и Tracert

    Если у вас кириллический домен

    Кириллические домены необходимо вводить в формате Punycode. Для перевода домена в Punycode воспользуйтесь сервисом.

    Выполним команду Traceroute в Linux на примере Ubuntu 20.04:

    • 1
      Откройте терминал при помощи комбинации клавиш CTRL + Shift + T или введите в поиске слово «Терминал».
    • 2

      Введите команду traceroute domain.name. Вместо domain.name укажите домен:

      Команда Traceroute в Linux

      Если нужно выполнить трассировку до IP-адреса, введите traceroute ip. Вместо ip укажите нужный адрес:

      Команда Traceroute в Linux для IP-адреса

    Вывод команды будет содержать:

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

    Команда Traceroute в Windows 10 отсутствует, поэтому следует воспользоваться Tracert:

    • 1
      Нажмите комбинацию клавиш Win + R.
    • 2
      Введите cmd и нажмите Enter.
    • 3

      Введите tracert domain.name. Вместо domain.name укажите домен или IP-адрес, до которого хотите выполнить трассировку:

      Команда Tracert в Windows

    Вывод команды tracert будет выглядеть следующим образом:

    • порядковый номер маршрутизатора (узла),
    • круговая задержка (время, потраченное на отправку запроса и получение ответа),
    • имя узла,
    • IP-адрес узла.
    • 1
      Найдите в Spotlight утилиту Network Utility (Сетевая утилита) и запустите ее.
    • 2

      Выберите вкладку Traceroute и введите имя домена или IP-адрес. Затем нажмите кнопку Trace:

      Traceroute в MacOS

    Вывод содержит:

    • порядковый номер узла,
    • имя узла,
    • IP-адрес узла,
    • круговую задержку (время, потраченное на отправку запроса и получение ответа).

    Если нужно отправить вывод команды в службу поддержки, сделайте скриншот или скопируйте текст.

    Как установить Traceroute на Linux

    В Unix-подобных системах программа может быть не установлена. Ниже мы покажем, как установить Traceroute на некоторых операционных системах.

    Как установить Traceroute в Debian/Ubuntu
    • 1
      Запустите терминал и введите команду sudo apt-get update для обновления данных о репозиториях.
    • 2
      Введите команду sudo apt-get install traceroute.
    Как установить Traceroute в Centos 7,8
    • 1
      Запустите терминал и введите команду sudo yum update для обновления данных о репозиториях.
    • 2
      Введите команду sudo yum install traceroute.

    Как выполнить Traceroute по порту

    По умолчанию первый UDP-пакет отправляется на порт 34434 и на каждом узле увеличивается на 1: 34434 на первом, 34435 на втором и так далее. При помощи ключа -p порт можно указать вручную. Команда будет выглядеть следующим образом:

    traceroute -p [номер порта] domain.name

    В Windows трассировку с указанием порта стандартными средствами выполнить нельзя, так как Traceroute в cmd отсутствует, а Tracert не умеет работать с портами.

    Как использовать Traceroute по ICMP

    И UDP и ICMP-протоколы используются командой Traceroute. UDP используется по умолчанию. Чтобы воспользоваться ICMP, добавьте в команду ключ -I:

    traceroute -I domain.name

    Для чего это нужно? Оборудование может быть настроено на то, чтобы не отвечать на подобные запросы. Если вы увидите в выводе символы * * *, это может значить, что маршрутизатор отклонил пакет и не отправил ответ. Звездочки в выводе не означают, что у узла проблемы. Соединения может фильтровать Firewall, который стоит перед узлом. Это делается специально, чтобы снизить нагрузку. Пример такого вывода команды:

    Вывод команды Traceroute без ответа сервера

    В этом случае попробуйте воспользоваться ключом -I:

    Вывод команды Traceroute с ключом -I

    Ключ -I требует root-привилегий. Если команда не выполняется, добавьте в начало sudo:

    sudo traceroute -I domain.name

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

    Помогла ли вам статья?

    Спасибо за оценку. Рады помочь 😊

     👍
    Специальные предложения
    • Бесплатный хостинг для сайта
    • Дешевый хостинг
    • Бесплатный VPS-сервер
    • Дешёвые VPS
    Рассылка Рег.ру

    Лайфхаки, скидки и новости об IT

    Даю согласие на получение рекламных и информационных материалов

    Домены и сайты
    • Домены
    • Хостинг
    • Создание сайтов
    • SSL-сертификаты
    • VPS и VDS серверы
    • Whois
    • Магазин доменов
    Облако
    и IT-инфраструктура
    • Облачные серверы
    • Частное облако
    • Облачное хранилище
    • Kubernetes в облаке (K8S)
    • Облачные базы данных
    • Выделенные серверы
    Полезное
    • Стоимость услуг
    • Cпособы оплаты
    • База знаний
    • Документы
    • ЭДО
    • Партнерам
    • Сообщить о нарушении
    • РБК: новости России и мира сегодня
    • Новости компаний РФ
    • РБК Инвестиции: курсы валют
    Компания
    • О компании
    • Контакты
    • Офисы
    • Новости
    • Акции и скидки
    • Блог
    • Отзывы клиентов
    8 800 555-34-78 Бесплатный звонок по России
    +7 495 580-11-11 Телефон в Москве
    • vk
    • telegram
    • ok
    • moikrug
    • youtube
    • twitter
    • Облачная платформа Рег.ру включена в реестр российского ПО Запись №23682 от 29.08.2024
    • © ООО «РЕГ.РУ»
    • Политика конфиденциальности
      Политика обработки персональных данных
      Правила применения рекомендательных технологий
      Правила пользования
      и другие правила и политики
    • Нашли опечатку?
      Выделите и нажмите Ctrl+Enter
    • Мы используем cookie и рекомендательные технологии для персонализации сервисов и удобства пользователей. Вы можете запретить сохранение cookie в настройках своего браузера