Для чего предназначена утилита 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. 1.

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

  2. 2.

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

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

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

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

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

  1. 1.

    Нажмите комбинацию клавиш Win + R.

  2. 2.

    Введите cmd и нажмите Enter.

  3. 3.

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

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

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

    Найдите в Spotlight утилиту Network Utility (Сетевая утилита) и запустите её.

  2. 2.

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

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

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

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

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

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

Как установить Traceroute в Debian/Ubuntu

  1. 1.

    Запустите терминал и введите команду sudo apt-get update для обновления данных о репозиториях.

  2. 2.

    Введите команду sudo apt-get install traceroute.

Как установить Traceroute в Centos 7,8

  1. 1.

    Запустите терминал и введите команду sudo yum update для обновления данных о репозиториях.

  2. 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, который стоит перед узлом. Это делается специально, чтобы снизить нагрузку. Пример такого вывода команды:

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

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

sudo traceroute -I domain.name

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

Утилиты 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. 1.

    Откройте терминал при помощи комбинации клавиш CTRL + Shift

    + T или введите в поиске слово «Терминал».

  2. 2.

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

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

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

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

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

  1. 1.

    Нажмите комбинацию клавиш Win + R.

  2. 2.

    Введите cmd и нажмите Enter.

  3. 3.

    Введите tracert domain.name. Вместо

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

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

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

    Найдите в Spotlight утилиту Network Utility (Сетевая утилита) и запустите её.

  2. 2.

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

    Trace:

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

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

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

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

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

Как установить Traceroute в Debian/Ubuntu

  1. 1.

    Запустите терминал и введите команду sudo apt-get update для обновления данных о репозиториях.

  2. 2.

    Введите команду sudo apt-get install traceroute.

Как установить Traceroute в Centos 7,8

  1. 1.

    Запустите терминал и введите команду sudo yum update для обновления данных о репозиториях.

  2. 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, который стоит перед узлом. Это делается специально, чтобы снизить нагрузку. Пример такого вывода команды:

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

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

sudo traceroute -I domain.name

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

Как работает утилита Tracert

При поиске причин неполадок в сети, утилита tracert занимает второе место после утилиты ping. Tracert (в Linux’e traceroute) позволяет определить на каком участке сети (между какими маршрутизаторами) возникла проблема. Для использования программы необходимо в командной строке Windows или Linux выполнить команду:

tracert yandex.ru

нажимаем enter, и видим примерно следующее:

 

На картинке выше видно, что между моим компьютером и сервером yandex.ru находятся 12 промежуточных маршрутизаторов, указаны IP адреса маршрутизаторов и время прохождения пакета до каждого маршрутизатора.

Если на каком-нибудь участке сети возникла проблема (нет маршрута до сети назначения, нет связи с следующим маршрутизатором, нет узла назначения в указанной сети и т.д.) тогда мы увидим вместо временипрохождения пакета звёздочки, а вместо IP адреса маршрутизатора сообщение «Превышен интервал ожидания для запроса»:

 

 

Так как же работает утилита tracert?

Для того чтобы ответить на этот вопрос, нужно вспомнить структуру IP пакета, а точнее вспомнить про одно из его полей — TTL (Число переходов):

 

При отправке пакета это поле выставляется в 255 и затем, каждый маршрутизатор, через который пройдёт данный пакет уменьшает это значение на 1 т. е. TTL=TTL-1. Маршрутизатор, который получает пакет с значением TTL=1, уменьшает его на единицу, а затем удаляет пакет, т.к. значение поля TTL у пакета стало равно 0. После того как пакет был отброшен маршрутизатором, отправителю пакета отправляется ICMP-сообщение с кодом 11: «Превышение временного интервала». В заголовке IP-пакета с ICMP сообщением источником является IP-адрес маршрутизатора, дропнувшего пакет, а назначением — IP-адрес компьютера, отправившего отброшенный пакет.

Теперь не сложно догадаться как работает Tracert:

  • Отправляется IP-пакет на указанный узел (в нашем примере yandex.ru) со значением поля TTL=1
  • первый маршрутизатор на пути пакета уменьшает TTL и дропает(уничтожает) пакет
  • Маршрутизатор отправляет ICMP уведомление что пакетик умер
  • Утилита Tracert извлекает из ICMP пакета IP-адрес маршрутизатора измеряет потраченное время на прохождение пакета до маршрутизатора
  • Если не указано иное в параметрах запуска Tracert, то посылается запрос DNS-серверу и определяется доменное имя маршрутизатора, если такое имеется
  • В консоль выводится IP-адрес (или доменное имя) первого маршрутизатора
  • Снова отправляется IP пакет на указанный узел, но с TTL=2
  • Пакет дропается на втором промежуточном маршрутизаторе
  • Процедура повторяется до тех пор, пока не придёт ответ от узла назначения (yandex. ru) либо число промежуточных узлов не привысит максимального значения для tracert — 30 узлов.

Вот собственно и всё, ничего сложного!

Автор Bordac, http://bloggik.net



Что такое traceroute? | 2IP.ua

Traceroute — это служебная компьютерная программа, предназначенная для определения маршрутов следования данных в сетях TCP/IP. Traceroute может использовать разные протоколы передачи данных в зависимости от операционной системы устройства.

Traceroute входит в поставку большинства современных сетевых операционных систем. В системах Microsoft Windows эта программа носит название tracert, а в системах GNU/Linux, Cisco IOS и Mac OS — traceroute.

Рассмотрим пример работы программы в операционной системе Windоws. Программа tracert выполняет отправку данных указанному узлу сети, при этом отображая сведения о всех промежуточных маршрутизаторах, через которые прошли данные на пути к целевому узлу. В случае проблем при доставке данных до какого-либо узла программа позволяет определить, на каком именно участке сети возникли неполадки. Здесь хочется отметить, что программа работает только в направлении от источника пакетов и является весьма грубым инструментом для выявления неполадок в сети. В силу особенностей работы протоколов маршрутизации в сети Интернет, обратные маршруты часто не совпадают с прямыми, причем это справедливо для всех промежуточных узлов в трейсе. Поэтому ICMP ответ от каждого промежуточного узла может идти своим собственным маршрутом, затеряться или прийти с большой задержкой, хотя в реальности с пакетами, которые адресованы конечному узлу, этого не происходит. Кроме того, на промежуточных маршрутизаторах часто стоит ограничение числа ответов ICMP в единицу времени, что приводит к появлению ложных потерь.

Для определения промежуточных маршрутизаторов traceroute отправляет целевому узлу серию ICMP-пакетов (по умолчанию 3 пакета), с каждым шагом увеличивая значение поля TTL («время жизни») на 1. Это поле обычно указывает максимальное количество маршрутизаторов, которое может быть пройдено пакетом. Первая серия пакетов отправляется с TTL, равным 1, и поэтому первый же маршрутизатор возвращает обратно ICMP-сообщение «time exceeded in transit», указывающее на невозможность доставки данных. Traceroute фиксирует адрес маршрутизатора, а также время между отправкой пакета и получением ответа (эти сведения выводятся на монитор компьютера). Затем traceroute повторяет отправку серии пакетов, но уже с TTL, равным 2, что заставляет первый маршрутизатор уменьшить TTL пакетов на единицу и направить их ко второму маршрутизатору. Второй маршрутизатор, получив пакеты с TTL=1, так же возвращает «time exceeded in transit».

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

Запуск программы производится из командной строки. Для этого вы должны войти в неё. Для операционных систем семейства Windows существует несколько способов запуска командной строки:

  1. Пуск — Выполнить — В графе «Открыть» написать «cmd» и нажать Ок.
  2. Сочетание клавиш Win (кнопка с логотипом Windows) + R (должны быть нажаты одновременно) — В графе «Открыть» написать «cmd» и нажать Ок.
  3. Пуск — Все программы (или просто «Программы», зависит от версии операционной системы) — Стандартные — Командная строка.

В открывшемся окне написать: tracert 2ip.com.ua


Как работает traceroute. TRACERT – трассировка маршрута к заданному узлу в командной строке Windows Трассировка tracert

Перевод мой.

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

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

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

Это инструмент, который используется, чтобы проверить путь, который проходят ваши данные, чтобы достичь цели, без действительной отправки данных

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

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

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

Каждый пакет, который вы отправляете в интернет, имеет поле, названное 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-пакета с различными портами, чтобы просто вычислить точное время прохождения. Конечный пункт назначения ничем не отличается.

Разные типы программ Traceroute

Существуют различные типы программ traceroute. Каждая из них работает немного по-своему. Но их общая концепция одна и та же. Все они использует значение TTL.

Почему разные реализации? Это потому, что вы можете использовать ту, которая применима к вашей среде. Если предположить, что файрволл блокирует трафик UDP, то вы можете использовать другую трассировку для этой цели. Различные типы приведены ниже.

Та, что мы использовали ранее — UDP трассировка. Это протокол по умолчанию, используемый программой traceroute в Linux. Тем не менее вы можете попросить нашу утилиту traceroute в Linux использовать протокол ICMP вместо UDP с помощью следующей команды.

[email protected]:~# traceroute -I -n 8.8.8.8

ICMP для traceroute работает точно так же, как UDP traceroute. Программа traceroute будет отправлять ICMP Echo-запросы и хопы между ними будут отвечать ICMP-сообщениями «ICMP Time exceeded » (время истекло). Но конечный пункт назначения будет отправлять ICMP echo-ответ. Команда tracert, доступная в операционной системе Windows, по умолчанию использует ICMP метод трассировки маршрута.

И последний является самым интересным. Его называют TCPtraceroute. Он используется, потому что почти все файрволлы и промежуточные маршрутизаторы позволяют передавать TCP трафик. И если пакет на порт 80, который является веб-трафиком, то большинство маршрутизаторов пропускают этот пакет. TCPTRACEROUTE по умолчанию отправляет TCP SYN запросы на порт 80.

Все маршрутизаторы между источником и пунктом назначения будут посылать сообщение «TTL time exceeded » (время TTL истекло) , а адресат будет посылать либо пакет RST, если порт 80 закрыт, либо пакет SYN / ACK. (Но tcptraceroute не создает соединение TCP. При получении SYN / ACK пакета, программа трассировки пошлет пакет RST, чтобы закрыть соединение). Следовательно, программе трассировки становится известно, что цель достигнута. Обратите внимание на тот факт, что опция -n, которую я использовал в ранее показанной команде traceroute, не будет осуществлять разрешение имен DNS. В противном случае трассировка будет посылать запросы DNS для всех хопов, которые она встретит по пути.

Теперь главный вопрос в том, какую из трассировок я должен использовать: ICMP, UDP или TCP?

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

Бывают в сетевой жизни (особенно у dial-up юзеров 😉 моменты, когда невозможно достучаться до какого-нибудь хоста (у меня это часто www.microsoft.com ;-|) — здесь то на помощь и придет эта утилита (в Windows — tracert.exe). С ее помощью можно попытаться определить на каком участке IP-сети произошел сбой — то ли хост упал, то ли у провайдер тормоза, или у тебя с IP-соединением хреново:).

Но за что я по-настоящему люблю tracert — так это за те возможности исследования IP-сетей, которые он дает — а они бывают разные, по масштабам и по целенаправленности;). Первым шагом может стать исследование подсети своего провайдера. С помощью traceroute ты можешь исследовать саму сети, применяя на практике полученные теоретические знания — о маршрутизации, серверах DNS, бэкбонах, системах подсетей, да мало ли о чем еще;).

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

Для начала нужно вспомнить формат заголовка IP-пакета, точнее одно из его полей — TTL (Time To Live). Это восьмибитное поле задает максимальное число хопов (hop — «прыжок» — прохождение дейтаграммы от одного маршрутизатора к другому) в течение которого пакет может находиться в сети. Каждый маршрутизатор,
обрабатывающий эту дейтаграмму, выполняет операцию TTL=TTL-1. Когда TTL становится равным нулю, маршрутизатор уничтожает пакет,
отправителю высылается ICMP-сообщение Time
Exceeded.

Утилита посылает в направлении заданного хоста пакет с TTL=1, и ждет, от кого вернется ответ time exceeded. Отвечающий записывается как первый хоп (результат первого шага на пути к цели). Затем посылаются последовательно пакеты с TTL=2, 3, 4 и т.д. по порядку, пока при некотором значении TTL пакет не достигнет цели и не получит от нее ответ.

*nix traceroute посылает в сторону заданного хоста UDP-пакеты на произвольный порт — скорее всего не занятый другим сервисом (например 28942, 30471) или на зарезервированный, например 0, умолчанию — 33434. Сначала посылается серия из 3-х таких пакетов с TTL=1, по приходу ответов замеряется время прохождения и определяется доменное имя транзитного узла (хотя это зависит от заданных опций). Затем, посылаются очередные серии пакетов с одинаковым TTL, предназначенных для выявления одного и того же хопа. В конце мы получаем от конечного хоста отклик port unreachable (порт недоступен), что означает завершение трассировки.
Стандартный консольный Windows tracert работает точно также, но посылает только ICMP echo request пакеты.

Сам я охотно пользуюсь как стандартным tracert, так и вшитым в CyberKit (достаточно неплохой утилитой
еще является Necrosoft Quick Traceroute). Под Линукс ничего дополнительного посоветовать не могу — юзал только стандартный Debian»овский traceroute:).

В заключение скажу, не бойся экспериментировать — только так можно по настоящему «понять» сеть. Ищи информацию и пользуйся ею. Удачи.

Практические занятия№ 03-006

Сетевая утилита tracert (traceroute в Linux, Cisco IOS, MAC OS). Принципы работы и использование.

Утилита tracert используется для исследования маршрутов IP пакетов в сетях, работающих с использованием стека протоколов TCP/IP включая глобальную сеть Internet. При использовании этой программы необходимо помнить что при её работе генерируется достаточно большое количество IP пакетов как на вашем хосте, так и на промежуточных маршрутизаторах. Это создает дополнительную нагрузку на сеть.

tracert [d ] [h максимальное число ] [j список узлов ] [-w интервал ] [имя_конечного_компьютера ]

Параметры:

d отказ от разрешения IP адресов промежуточных узлов в имена

h максимальное число максимальное число переходов (прыжков) при поиске узла назначении

-j список_узлов задает использование параметра свободной маршрутизации в IP-заголовке с набором промежуточных точек назначения, указанным в списке_узлов (сейчас практически не поддерживается на машрутизаторах)

-w интервал задает в миллисекундах время ожидания каждого ответа

имя_конечного_компьютера задает точку назначения, идентифицированную IP-адресом или именем узла.

Работа утилиты основана на манипулировании содержимым полей стандартного заголовка и опций заголовка IP пакета. Основным инструментом утилиты является содержимое поля «время жизни» (или TTL).

Обязательным элементом является IP адрес или имя узла назначения.

Получив его от пользователя, утилита отправляет в сеть серию (обычно три) пакетов на этот адрес с установленным значением TTL равным 1. Шансов дойти до адресата эти пакеты не имеют, поскольку первый же по пути следования маршрутизатор, вычитая из такого TTL 1 получит 0. А такой пакет он обязан уничтожить по истечению разрешенного времени жизни в сети. Но при этом маршрутизатор обязан отправить отправителю этого пакета-неудачника ICMP сообщение о его трагической участи (тип 11, код 0) .

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

Затем отправляется следующая серия пакетов с TTL равным 2, и так до тех пор, пока пакеты не достигнут пункта назначения.

Когда на адрес хоста или маршрутизатора приходит адресованный ему пакет с TTL, достигшим значения 1, он принимается. Поскольку пересылать его далее необходимости нет, ICMP сообщение о истечении времени жизни сгенерировано не будет.

Чтобы узнать, что трассировка успешно завершена, все серии пакетов отправляются с вложенными в них UDP сообщениями, с указанием заведомо не существующего у получателя номера порта. На промежуточных маршрутизаторах это не имеет никакого значения, но получатель, потерпев неудачу воспользоваться вложенной информацией, оказывается вынужден сообщить об этом отправителю с использованием того же протокола ICMP, но с другими значениями типа (3) и кода (3) сообщения.

Такое сообщение интерпретируется отправителем как подтверждение завершения трвссировки.

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

Наименования узлов основывается на системе доменных имён (DNS):

Формально и пользователи, и программы могут обращаться к хостам, почтовым ящикам и другим ресурсам сети интернет по их IP адресам, но если для программы процедура «запоминания» IP адреса ничем не отличается от «запоминания» любых других 4-х байт информации любого типа, то для пользователя запоминание цифросочетаний вида 111.124.133.44 тяжело просто с точки зрения устройства нашей памяти. Кроме того, отождествление каких-либо служб с IP адресами хостов или серверов, на которых они функционируют крайне затрудняет процедуру их переноса в случае необходимости. Для учета «человеческого фактора» и отделения имен машин от их адресов было решено использовать текстовые ASCII-имена. Тем не менее, сеть понимает только численные адреса, поэтому нужен механизм преобразования ASCII-строк в IP адреса.

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

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

Для решения этих проблем была разработана служба имен доменов (DNS, Domain Name System). Эта система используется для преобразования имен хостов и пунктов назначения электронной почты в IP-адреса, но также может использоваться и в других целях. Определение системы DNS было дано в RFC 1034 и 1035.

Доменным именем называется имя, состоящее из слов, разделенных точками. Левое слово имени относится к хосту. Все остальные слова образуют имя домена. Система имен имеет иерархическую, древовидную структуру.

Каждый узел (кружочки на рисунке) имеет метку длиной до 63 символов. Корень дерева это специальный узел без метки. Метки могут содержать заглавные буквы или маленькие. Имя домена (domain name) для любого узла в дереве — это последовательность меток, которая начинается с узла выступающего в роли корня, при этом метки разделяются точками. (Здесь видно отличие от привычной нам файловой системы, где полный путь всегда начинается с вершины (корня) и опускается вниз по дереву.) Каждый узел дерева должен иметь уникальное имя домена, однако одинаковые метки могут быть использованы в различных точках дерева.

Существует корневое имя, обозначаемое символом «.», оно часто не пишется в имени домена. Существуют имена доменов первого уровня. Они разделены на 2 категории — имена доменов территорий и имена доменов предметных областей. Имена доменов второго уровня и последующих могут быть любыми, при этом не может существовать двух одинаковых имен доменов или хостов. Итак, если N i — доменное имя i-го уровня, а T- слово, то доменное имя i+1 уровня образуется по правилу N i +1 =T+N i .. Имя домена, которое заканчивается точкой, называется абсолютным именем домена (absolute domain name) или полным именем домена (FQDN — fully qualified domain name).

Подчеркнем ещё раз, что поскольку IP-адреса уникально идентифицируют хосты в сети, существует взаимно-однозначное отношение между множеством имен хостов и множеством адресов.

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

База данных DNS является распределенной. Иерархической системе имен соответствует иерархическая система серверов DNS, на которых размещены фрагменты таблицы. В идеале для каждого домена должен существовать отдельный сервер имен. В базе данных сервера имен любого уровня должны содержаться записи о всех дочерних доменах следующего уровня. Все домены первого уровня содержаться в базе данных корневых серверов (root name servers). Их обслуживает организация NIC.

В реальности на одном хосте может размещаться база для нескольких доменов, и одинаковые или пересекающиеся базы могут располагаться на нескольких хостах. Ветвь дерева имен, находящаяся под единым управлением вместе с хостами, на которых расположена база данных этой ветви дерева называется зоной DNS. Обычно в зоне имеется один основной сервер DNS (primary name server) и несколько резервных (secondary name servers). Изменения в зоне вносятся в базу данных первичного сервера зоны с последующим дублированием этой информации на вторичные сервера.

Процесс передачи информации от первичного сервера вторичному называется передачей зоны (zone transfer). Когда в зоне появляется новый хост, администратор добавляет соответствующую информацию (минимум, имя и IP адрес) в дисковый файл на первичном сервере. Вторичные сервера регулярно опрашивают первичные (обычно каждые 3 часа), и если первичные содержат новую информацию, вторичный получает ее с использованием передачи зоны.

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

Система разрешения адресов.

Для того, чтобы программное обеспечение стека протоколов TCP/IP могло пользоваться службой имен, в настройках стека должен быть указан IP — адрес сервера имен, в зону которого входит хост или другой сервер, принимающий запросы из сети хоста. Когда прикладной элемент использует для обозначения второй стороны в сеансе доменное имя, инициируется процесс разрешения IP — адреса. Прикладной элемент службы имен хоста отправляет запрос серверу имен. Если сервер имен может разрешить адрес, он отправляет отклик, содержащий этот адрес. Если сервер имен не может разрешить запрос, он может инициировать два сценария разрешения имени

    сервер отправляет в составе отклика адрес корневого сервера имен, и хост формирует запрос к этому серверу (итеративный запрос).

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

Отклик сервера, контролирующего домен, называется авторитетным.

Каждый сервер имен в Интернет должен содержать в базе адреса корневых серверов.

Разрешение имен . Кроме основной своей функции разрешения доменного имени хоста в его IP-адрес, протокол DNS обеспечивает и обратное разрешение IP-адреса в доменное имя при помощи подзон реверсивной зоны in_addr.arpa.

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

Вопросы для самопроверки

    Что такое система доменных имен и для чего он используется.

    Каков максимальный размер метки узла домена

    Какое имя имеет корневой домен DNS

    Какие типы и коды ICMP сообщений использует утилита tracert

    Какое поле заголовка IP пакета используется для задания времени жизни пакетов утилитой tracert

    Параметры утилиты tracert

    Назначение утилиты tracert и варианты её применения

Необходимое оборудование

IBM PC — совместимая ЭВМ с лицензионной операционной системой Windows, подключение к локальной сети, выход в интернет.

Задания

1. Воспользовавшись командой tracert рпределите маршрут распространения IP-пакетов до сайта www.sgu.ru

2. Воспользовавшись командой tracert рпределите маршрут распространения IP-пакетов до одного из приведенных сайтов: www . nla . gov . au , www . ibge . gov . br , www . kunaicho . go . jp (можете выбрать любой сайт за пределами России).

3. Повторите трассировку с опцией –d.

4. Опишите структуру DNS имени трассировавшегося вами сервера.

5. Воспользуйтесь услугами сервиса www . ip 2 location . com / demo . aspx (или аналогичного) и определите примерное местоположение промежуточных точек маршрута.

6. Нарисуйте схему маршрута.

7. Прокомментируйте результаты.

Отчет о выполнении работы представьте в печатной или электронной форме с представлением копий экранов работы утилиты.

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

Утилита ping позволяет только определить наличие проблемы, что узел не отвечает, но как узнать где обрывается соединение? Для этого применяется утилита traceroure. В этой небольшой инструкции мы рассмотрим как пользоваться traceroute linux, как понимать ее вывод и определить где же все-таки проблема. Но сначала рассмотрим, как работает traceroute.

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

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

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

Утилита Traceroute

Перед тем как перейти к примерам работы с утилитой давайте рассмотрим ее синтаксис и основные опции. Синтаксис вызова очень прост:

$ traceroute опции адрес_узла

В качестве адреса может использоваться ip адрес или доменное имя. Рассмотрим основные опции:

  • -4 или -6 — использовать ipv4 или ipv6 протокол;
  • -I — использовать ICMP пакеты вместо UDP;
  • -T — использовать TCP пакеты вместо UDP;
  • -F — не фрагментировать пакеты;
  • -f — указать TTL с которого нужно начать;
  • -g — передавать пакет через указанный шлюз;
  • -i — передавать пакет через указанный интерфейс;
  • -m — максимальное количество узлов, через которые пройдет пакет;
  • -q — количество пакетов, отправляемых за раз, по умолчанию три;
  • -n — не узнавать доменные имена;
  • -p — указать порт вместо порта по умолчанию;
  • -w — установить время ожидания ответа от узла, по умолчанию полсекунды;
  • -r — использовать другой роутер вместо того, что указанный в таблице маршрутизации;
  • -z — минимальный интервал между пакетами;
  • -U — использовать UDP с увеличением номера порта;
  • -UL — использовать протокол UDPLITE;
  • -D — использовать протокол DCCP;
  • —mtu — указать размер пакета;
  • -P — протокол, доступны такие значения: raw, dccp, udplite, udp, tcpconn, tcp, icmp.

Это не все опции утилиты, но все основные, которыми вы будете пользоваться. Дальше перейдем практике того, как выполняется трассировка сети Linux.

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

Например, выполним трассировку до сервера сайт:

sudo traceroute сайт

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

У вас, наверное, возник вопрос, почему время прохождения для некоторых узлов такое долгое? Ведь если выполнить ping, то общее время будет намного меньше. Дело в том, что время засекается для пути пакета туда и обратно. От запроса до ответа. Это раз, но еще нужно учитывать что маршрутизаторы дают высший приоритет для приходящих пакетов, когда для сервисных задержки могут быть более длинными.

Еще, вместо одного узла вы можете видеть звездочки traceroute. Это еще не значит, что он не работает. Это означает что всего лишь он не захотел нам отвечать. Давайте проверим еще что-нибудь, например, публичный DNS google:

sudo traceroute 8.8.8.8

Здесь уже больше узлов, и такая же ситуация со звездочками. Если бы на пути к серверу возникла ошибка, мы бы это увидели. Например, узел 195.153.14.1 нам не ответил и мы смогли отследить запрос только до 212.162.26.169.

sudo traceroute 195.153.14.1

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

sudo traceroute history.pl

sudo traceroute -I history.pl

Но трассировка может использоваться не только для обнаружения обрыва в цепочке маршрутизаторов. У нее еще есть достаточно интересное применение по исследованию сети. Например, вы можете попытаться определить использование подсетей провайдером. Отправим три запроса на разные адреса:

sudo traceroute сайт
$ sudo traceroute history. pl
$ sudo traceroute habrahabr.ru


Затем сравните выводы этих команд. Вы увидите, что начальные IP адреса одинаковые. Мы можем сделать вывод, что наш роутер 192.168.1.1 подключен к локальной сети провайдера 195.5.8.0/24, которая, в свою очередь, подключена к сети 10.50.50.0/24 откуда уже получает доступ к внешней сети.

Как пользоваться traceroute в Windows?

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

Вы можете использовать Traceroute. Это широко используемая утилита командной строки, доступная практически во всех операционных системах. Он показывает вам полный маршрут до адреса назначения. Она также показывает время (или задержки) между промежуточными маршрутизаторами. Разве это не здорово?

Что означает вывод?

Первый столбец — это номер для промежуточных маршрутизаторов. В вышеприведенном выпуске три пакета отправляются на каждый прыжок, чтобы получить хорошую оценку задержек для каждого маршрутизатора. Три столбца показывают время, затраченное на три разных пакета. Последний столбец — IP/Name промежуточных маршрутизаторов.

На выходе показаны три задержки для первого перескока, за которыми следуют задержки для второго скачка и так далее.

Есть ли такая же команда в Linux и других операционных системах?

В Windows, как показано выше, имя команды «tracert», но в Linux, Unix и Apple MAC OS команда «traceroute».

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

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

Он отправляет много пакетов в пункт назначения.

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

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

Как traceroute должен убедиться, что пакет дошёл до определённого хоста?

Для этой цели используется поле TTL. TTL устанавливается как 1 для первого пакета (ов), затем 2 и так далее до достижения цели.

Как оценивается общее время?

Когда пакет отбрасывается, маршрутизатор отправляет сообщение ICMP Time Exceeded обратно в источник. Вот как источник подсчитывает общее время.

Traceroute — широко используемая утилита командной строки в сетях.

Статьи по теме:

Проверка Маршрута

Ping используется, чтобы проверить связь между двумя узлами. Traceroute (tracert) является утилитой, которая позволяет нам проверить маршрут между этими узлами. Трассировка генерирует список транзитных участков (хопов), которые были успешно достигнуты вдоль маршрута.

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

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

Круговая задержка (RTT)

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

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

Время жизни (TTL)

Traceroute использует функцию поля Времени жизни (TTL) в заголовке Уровня 3 и сообщение ICMP Превышенного Времени. Поле TTL используется, чтобы ограничить число транзитных участков, которые может пересечь пакет. Когда пакет приходит на маршрутизатор, поле TTL уменьшается на 1. Когда TTL достигнет нуля, маршрутизатор не передает пакет, и пакет отбрасывается.

В дополнение к отбрасыванию пакета маршрутизатор обычно отправляет ICMP сообщение Превышенного Времени, адресуемое инициирующему узлу. Это сообщение ICMP будет содержать IP-адрес ответившего маршрутизатора.

См. рисунок — как Traceroute использует TTL в своей работе.

У первой последовательности сообщений, отправленных от traceroute будет поле TTL, равное единице. Это приводит к обнулению TTL пакета на первом маршрутизаторе. В результате маршрутизатор отвечает сообщением ICMP. У Traceroute теперь есть адрес первого транзитного участка.

Traceroute затем постепенно увеличивает поле TTL (2, 3, 4…) для каждой последовательности сообщений. В результате трассировка получает адрес каждого транзитного участка по мере того как происходят тайм-ауты пакетов далее по маршруту. Поле TTL продолжает увеличиваться, пока не будет достигнуто место назначения, либо оно постепенно достигнет предопределенного максимума.

Как только конечное место назначения будет достигнуто, узел отвечает либо сообщением ICMP Недостижимости Порта, либо сообщением Эхо-ответа ICMP вместо сообщения ICMP Превышенного Времени.

Далее: Протокол ICMP

Смотрите также

Написать

Что такое трассировка и как она работает?

Для большинства поставщиков управляемых услуг (MSP), ИТ-администраторов и технических специалистов трассировка и проверка связи, вероятно, являются первыми портами вызова при устранении неполадок, связанных с задержкой сети или проблемами с подключением. Traceroute — это простой инструмент, который может запустить любой пользователь, имеющий доступ к командной строке. Однако, если вы не знакомы с основами traceroute, вам может быть сложно понять результаты теста. В этом посте будут изложены основы traceroute, когда вам следует его использовать и как читать результаты.

Сопутствующий продукт
N-central

Управляйте большими сетями или масштабируйте ИТ-операции с помощью RMM, созданного для растущих поставщиков услуг.

Что такое трассировка?

Traceroute — это команда, которая запускает инструменты, используемые для диагностики сети. Эти инструменты отслеживают пути, по которым пакеты данных проходят от источника к месту назначения, что позволяет администраторам лучше решать проблемы с подключением. На компьютере с Windows эта команда называется tracert; в Linux и Mac это называется traceroute.Traceroute и tracert в основном работают одинаково — они сопоставляют данные о маршруте из одной точки в сети к определенному IP-серверу. Когда данные передаются между двумя точками, они должны «прыгать» через несколько устройств, таких как коммутаторы и маршрутизаторы. Traceroute сопоставляет каждый переход, предоставляет подробную информацию и время приема-передачи (RTT), а также, по возможности, дает имя устройства и IP-адрес.

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

Как запустить трассировку

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

Еще один ключевой элемент, который необходимо понять, — это «время приема-передачи» (RTT). Traceroute гарантирует, что каждый переход на пути к целевому устройству отбрасывает пакет и отправляет обратно сообщение об ошибке ICMP. Это означает, что traceroute может измерять продолжительность времени между отправкой данных и получением сообщения ICMP для каждого перехода, что дает вам значение RTT для каждого перехода.

Чтобы лучше это проиллюстрировать, предположим, что вы запустили traceroute и указали максимум 30 переходов.Traceroute будет отправлять пакеты с TTL, равным единице, на сервер назначения. Первое сетевое устройство, через которое проходят данные, уменьшит TTL до нулевого значения, и будет отправлено сообщение, информирующее вас о том, что пакеты были отброшены. Это дает вам RTT для прыжка номер один.

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

Этот процесс будет повторяться до тех пор, пока пакеты данных не достигнут целевого устройства или не будет достигнуто максимальное количество переходов. К концу этого теста вы будете знать количество прыжков до целевого устройства, длину RTT для каждого прыжка, а также имя устройства и IP-адрес для каждого прыжка.

Как читать трассировку

Результаты трассировки будут немного отличаться в зависимости от используемого инструмента. Если вы решите использовать NetPath  с SolarWinds ®  N-central , то прочитать эти результаты будет очень просто.Интуитивно понятные визуальные элементы обеспечивают глубокую видимость, позволяя устранять проблемные участки по всей цепочке доставки.

Если вы используете tracert, команду Windows traceroute, вы увидите количество переходов от исходного устройства к целевому устройству в крайнем левом столбце. Для каждого прыжка вы увидите три значения RTT (при условии, что инструмент TRACERT настроен на отправку трех пакетов данных для проверки каждого прыжка в соответствии с настройками по умолчанию). Справа вы должны увидеть дополнительную информацию об устройстве.

Устранение недостатков трассировки

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

Чтобы преодолеть эти недостатки, важно искать мощные решения, которые могут обеспечить более глубокую видимость, выходящую за рамки того, что предлагает traceroute. NetPath — это функция пакета SolarWinds N-central, комплексного решения для удаленного мониторинга и управления, разработанного с учетом требований поставщиков услуг мобильной связи. NetPath отображает поток данных в динамичной и наглядной форме и может помочь MSP решить проблемы, традиционно связанные с трассировкой. Он также имеет профессионально разработанный пользовательский интерфейс, в отличие от более сложного для понимания отображения командной строки, связанного с traceroute.

NetPath также может работать как средство удаленной трассировки. Чтобы использовать функцию NetPath для выполнения теста трассировки, следуйте приведенным ниже инструкциям:

  • Перейдите на страницу служб NetPath и нажмите «Создать новую службу»
  • Введите имя хоста или IP-адрес
  • Заполните любой порт TCP
  • Введите псевдоним
  • Введите интервал измерения
  • Нажмите «Далее»
  • Выберите либо использование зонда на вашем основном механизме опроса, либо развертывание зонда в удаленном месте — это означает, что NetPath может работать как удаленный инструмент трассировки
  • Нажмите «Создать», чтобы создать свой путь

Выбор подходящего инструмента для мониторинга сети

SolarWinds N-central предоставляет MSP доступ к расширенным возможностям, позволяя им получить детальное представление о сетях клиентов. Эта глубокая видимость помогает лучше понять безопасность конечных точек клиентов и повышает эффективность работы технических специалистов, что позволяет MSP расширять свой бизнес.

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

NetPath был создан, чтобы помочь MSP решить эти проблемы.Это наглядная и интуитивно понятная функция, которая дает вам представление о том, как ваши клиенты сталкиваются с замедлением работы при попытке доступа к сетевому сервису или веб-сайту. Чтобы узнать больше, получите N-central бесплатно на 30 дней, чтобы начать изучение.

 

Что это делает и как это работает?

Устранение неполадок с помощью Traceroute

Какие факторы влияют на время перехода?

Физическое расстояние между вашим компьютером и его конечным пунктом назначения является одним из основных факторов, влияющих на время переходов. Это следует иметь в виду при устранении неполадок в сети. Чем больше расстояние, тем больше время прыжка. Другим способствующим фактором является тип соединения, облегчающего каждый переход. Компьютеры с более быстрым подключением, например, с Gigabit Ethernet (GE), скорее всего, обеспечат более быстрые переходы, чем компьютеры с более медленным подключением.

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

Когда высокая задержка имеет значение?

Высокая задержка имеет значение, когда у вас есть данные, которые должны быть доставлены к месту назначения без задержки, чтобы обеспечить адекватную функциональность. Например, если отправляются неподвижные изображения, задержка может не иметь большого значения. С другой стороны, если вы совершаете звонки по протоколу IP (VoIP) или проводите видеоконференции, задержка может существенно повлиять на работу пользователя.

Вы также можете использовать отчет о трассировке, чтобы точно определить проблемы с вашей интернет-службой или сетью. Например:

  1. Может возникнуть проблема с настройкой сети, если время приема-передачи велико для первых записей в отчете. Если есть проблема, вы можете использовать простой протокол управления сетью (SNMP) для диагностики проблемы. Это предоставляет информацию об управляемых устройствах в вашей сети. Если вы используете поставщика управляемых услуг (MSP), вы можете спросить его о том, что может быть причиной проблемы.
  2. Вы можете заметить снижение скорости сети, и это может быть связано с вашим поставщиком услуг. Однако перед тем, как обратиться в службу поддержки, проверьте свое соглашение с интернет-провайдером, потому что скорость, которую вы получаете, может быть всем, на что вы имеете право.
  3. Если вы заметили задержку к концу отчета, проблема, скорее всего, связана с сервером назначения. Это может быть, например, ваш провайдер VoIP или видеоконференцсвязи. Если у них есть такой инструмент, как Cisco NetFlow, они могут точно определить проблему.Ваш провайдер также может использовать синтетический мониторинг производительности приложений (APM) для выявления проблем с производительностью.

Как Fortinet может помочь?

Запросы

ICMP могут использоваться для выполнения распределенных атак типа «отказ в обслуживании» (DDoS), которые могут привести к зависанию вашего веб-сайта или принудительному отключению. При DDoS-атаке вместо использования ICMP для трассировки ICMP-запросы используются для привязки вашего сайта.

Благодаря FortiDDoS вы защищены от злоупотребления протоколом ICMP для DDoS-атак.FortiDDoS может идентифицировать необычные сообщения ICMP, а затем помечать их, чтобы можно было остановить атаку. FortiDDoS имеет профили защиты, панель управления, глобальные настройки и простой графический пользовательский интерфейс (GUI), который упрощает использование.

Часто задаваемые вопросы

Что такое трассировка?

Трассировка предоставляет карту того, как данные в Интернете перемещаются с вашего компьютера к месту назначения.

Как работает трассировка?

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

Для чего используется трассировка?

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

В чем разница между пингом и трассировкой?

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

Командный инструмент traceroute/tracert

Traceroute (в мире Cisco/Unix/Linux) или tracert (в мире Windows) — еще один отличный командный инструмент TCP/IP для устранения неполадок сетевого подключения.Командный инструмент tracert/traceroute встроен и доступен во всех операционных системах Cisco/Windows/Unix/Linux. В этом руководстве мы собираемся использовать команду tracert на базе Windows, чтобы понять, как работает инструмент команды traceroute/tracert.

Я настоятельно рекомендую вам посетить следующие уроки, прежде чем читать дальше.

Почему мы используем командный инструмент tracert/traceroute

Инструмент команды tracert/traceroute можно использовать для отслеживания пути, по которому следует дейтаграмма IPv4 от источника к месту назначения, поскольку у нас есть несколько путей от источника к месту назначения.Командный инструмент tracert/traceroute также можно использовать для устранения неполадок сетевого подключения. Давайте попробуем понять, как использовать командный инструмент tracert/traceroute для устранения неполадок в сети.

См. топологию, показанную на рисунке ниже.

У нас есть небольшая сеть с четырьмя маршрутизаторами в четырех разных географических точках. Компьютер на вашем столе (JAJISH-PC-1, источник) запущен и работает, компьютер в пункте назначения (JAJISH-PC-2) должен быть включен и работать, но между вашим компьютером нет соединения уровня 3 ( JAJISH-PC-1) и конечный компьютер (JAJISH-PC-2). Дейтаграммы IPv4, отправленные с вашего компьютера (JAJISH-PC-1), не достигают целевого компьютера (JAJISH-PC-2). Мы находимся в критической ситуации, полностью подавлены, и нам нужно срочно найти, где на всем пути от источника до места назначения нарушена связь. Маршрутизаторы/компьютеры расположены далеко в разных географических точках, и вы не можете перемещаться между ними. Инструмент команды tracert/traceroute очень полезен, чтобы найти, где на пути от источника к месту назначения нарушена связь уровня 3.Если вы обнаружите, где на пути сетевое подключение нарушено, вы можете обратиться за помощью к сетевому инженеру в этом месте для устранения проблемы с сетью.

Как работает инструмент команды tracert/traceroute

Командный инструмент tracert/traceroute работает, используя значение TTL (Time-to-Live) в заголовке IPv4, сообщения ICMP Echo Request и Echo Reply и сообщения ICMP Time Exceeded.

Значение TTL (Time-to-Live) в заголовке IPv4 — это максимальное количество переходов (просто количество маршрутизаторов), через которое дейтаграмма IPv4 может пройти между источником и получателем в сети TCP/IP, прежде чем она будет отброшена маршрутизатор на пути к целевому компьютеру. Устройство TCP/IP, сгенерировавшее дейтаграмму IPv4, установит начальное значение TTL в заголовке IPv4, например 128. Каждый маршрутизатор на пути от источника к месту назначения будет уменьшать значение TTL в заголовке IPv4 на 1. Если дейтаграмма IPv4 прибывает в маршрутизатор со значением TTL равным 1, этот маршрутизатор отбрасывает дейтаграмму IPv4.

Здесь следует отметить, что когда маршрутизатор отбрасывает дейтаграмму IPv4 из-за того, что значение TTL (Time-to-Live) в заголовке IPv4 истекло, он отправляет обратно сообщение ICMP Time Exceeded, чтобы уведомить исходного отправителя (в этом Например, JAJISH-PC-1), что дейтаграмма IPv4 была отброшена, поскольку значение TTL (Time-to-Live) в заголовке IPv4 истекло.Инструмент команды tracert/traceroute использует это сообщение ICMP Time Exceeded, чтобы узнать, где нарушено соединение.

Значение

TTL (Time-to-Live) в заголовке IPv4 в основном используется для предотвращения петель маршрутизации, что нежелательно в сетях TCP/IP. Сообщения ICMP Echo Request и Echo Reply и сообщения ICMP Time Exceeded представляют собой два типа сообщений в протоколе управляющих сообщений Интернета (ICMP). Пожалуйста, перейдите по ссылкам, чтобы узнать больше об условиях, которые мы обсуждали.

Особые примечания:

  • Обратите внимание, что я использую операционную систему Windows на JAJISH-PC-1 и JAJISH-PC-2.Таким образом, используемая команда будет tracert вместо traceroute . Если вы планируете использовать операционную систему Cisco/Unix/Linux для выполнения лабораторной работы, используйте вместо этого traceroute .
  • Захваченные пакеты могут немного отличаться в реализациях Unix/Linux TCP/IP, если вы пытаетесь выполнить лабораторную работу с использованием операционных систем Unix/Linux.
  • На каждом шаге может быть несколько сообщений ICMP Echo Request и ICMP Time Exceeded (по три в трассировке Windows).Но для простоты я показал только по одному.
  • Мы используем диаграмму топологии в начале этого урока, чтобы понять, как работает traceroute/tracert. Прежде чем продолжить, обратитесь к схеме топологии в начале этого урока.
  • Перейдите по ссылкам в начале этого урока, чтобы понять технические термины, используемые в этом уроке.

Хорошо, давайте попробуем глубже изучить, как выполняется трассировка пути в traceroute/tracert .Ниже я разделил весь процесс отслеживания пути от источника к месту назначения на несколько шагов, чтобы дать вам четкое представление о том, как работает инструмент команды tracert. Команда для запуска командного инструмента tracert на компьютере с Windows показана на изображении ниже. Я собираюсь запустить инструмент команды tracert на исходном компьютере (JAJISH-PC-1), как показано ниже.

Обратите внимание, что команду tracert также можно запустить, указав доменное имя вместо IPv4-адреса. Затем команда tracert преобразует доменное имя в IPv4-адрес и начинает отправку сообщения типа эхо-запроса ICMP на целевой IPv4-адрес.

Шаг 1. Команда tracert создаст и отправит сообщение ICMP Echo Request со значением TTL, равным 1, в пункт назначения

.

При запуске команды tracert исходный компьютер создает и отправляет сообщение ICMP Echo Request со значением TTL в заголовке IPv4, равным 1, на конечный компьютер.

Снимок экрана Wireshark с сообщением эхо-запроса ICMP со значением TTL заголовка IPv4, равным 1, скопирован ниже.

Поскольку значение TTL заголовка IPv4 установлено равным 1, маршрутизатор первого перехода (шлюз по умолчанию) отбрасывает исходный пакет дейтаграмм IPv4, содержащий указанное выше сообщение эхо-запроса ICMP, и отправляет обратно сообщение ICMP Time Exceeded, чтобы уведомить компьютер JAJISH-PC -1, что дейтаграмма IPv4, отправленная с JAJISH-PC-1, была отброшена, поскольку значение TTL (Time-to-Live) в заголовке IPv4 истекло.

Ниже скопирован снимок экрана Wireshark с сообщением ICMP Time Exceeded от маршрутизатора первого перехода (OMNISECU-ROUTER-1).

Поскольку сообщение ICMP Time Exceeded отправлено с адреса 172.16.0.1 (исходный IPv4-адрес дейтаграммы IPv4, несущей сообщение ICMP Time Exceeded), командный инструмент traceroute/tracert может знать, что пакет достиг адреса 172.16.0.1 (маршрутизатор первого перехода). После того как командный инструмент traceroute/tracert получил сообщение ICMP Time Exceeded от маршрутизатора первого перехода, в командной строке отображается результат, указывающий на то, что маршрутизатор первого перехода доступен, как показано на рисунке ниже.

Шаг 2. Команда tracert создаст и отправит сообщение ICMP Echo Request со значением TTL, равным 2, в пункт назначения

.

Исходный компьютер (в данном примере JAJISH-PC-1) затем создает и отправляет сообщение эхо-запроса ICMP со значением TTL заголовка IPv4, равным 2, на конечный компьютер.

Снимок экрана Wireshark с сообщением эхо-запроса ICMP со значением TTL заголовка IPv4, равным 2, скопирован ниже.

Поскольку значение TTL заголовка IPv4 в этом случае равно 2, первый маршрутизатор (шлюз по умолчанию) перенаправит пакет дейтаграммы IPv4 на следующий маршрутизатор (OMNISECU-ROUTER-2) на пути после уменьшения на 1 текущего значения TTL.Теперь пакет достиг второго маршрутизатора на пути к компьютеру назначения со значением TTL заголовка IPv4, равным 1. Второй маршрутизатор отклонит пакет и отправит обратно сообщение ICMP Time Exceeded, чтобы уведомить исходный компьютер (JAJISH- PC-1), что дейтаграмма IPv4 была отброшена из-за того, что значение TTL (время жизни) заголовка IPv4 истекло.

Ниже скопирован снимок экрана Wireshark с сообщением ICMP Time Exceeded от второго маршрутизатора (OMNISECU-ROUTER-2).

Поскольку сообщение ICMP Time Exceeded отправлено с адреса 192.168.10.2 (исходный IPv4-адрес дейтаграммы IPv4, несущей сообщение ICMP Time Exceeded от второго маршрутизатора к исходному компьютеру), программа traceroute/tracert может знать, что пакет достиг адреса 192. 168.10.2. Интересно!!! Инструмент команды traceroute/tracert получил IPv4-адрес интерфейса второго маршрутизатора, обращенного к исходному компьютеру (JAJISH-PC-1). Компьютер-источник также узнал, что все в порядке до второго маршрутизатора (OMNISECU-ROUTER-2).Вывод команды tracert для этого экземпляра скопирован ниже.

Шаг 3. Команда tracert создаст и отправит сообщение эхо-запроса ICMP со значением TTL, равным 3, в пункт назначения

.

После отображения в командной строке результата, описанного на предыдущем шаге, исходный компьютер создает и отправляет следующее сообщение эхо-запроса ICMP со значением TTL заголовка IPv4, равным 3, на конечный компьютер.

Снимок экрана Wireshark с сообщением эхо-запроса ICMP со значением TTL заголовка IPv4, равным 3, скопирован ниже.

Поскольку значение TTL заголовка IPv4 равно 3, первый маршрутизатор (OMNISECU-ROUTER-1) и второй маршрутизатор (OMNISECU-ROUTER-2) будут пересылать пакет дейтаграммы IPv4 следующему маршрутизатору (OMNISECU-ROUTER-3). на пути после уменьшения значения TTL на 1. Пакет уже достиг третьего маршрутизатора (OMNISECU-ROUTER-3) по пути к целевому компьютеру со значением TTL заголовка IPv4 равным 1. Исходное значение TTL было равно 3, но было уменьшено на 1 два раза на двух маршрутизаторах и стало равным 1. 1, когда он достиг третьего маршрутизатора.Третий маршрутизатор отклонит пакет и отправит обратно сообщение ICMP Time Exceeded, чтобы уведомить исходный компьютер (JAJISH-PC-1) о том, что дейтаграмма IPv4 была отброшена, поскольку значение TTL (Time-to-Live) заголовка IPv4 истекло. .

Ниже скопирован снимок экрана Wireshark с сообщением ICMP Time Exceeded от третьего маршрутизатора (OMNISECU-ROUTER-3).

Поскольку сообщение ICMP Time Exceeded отправлено с адреса 192.168.11.2 (исходный IPv4-адрес дейтаграммы IPv4, несущей сообщение ICMP Time Exceeded от третьего маршрутизатора), инструмент команды traceroute/tracert может знать, что пакет достиг 192.168.11.2. Инструмент команды traceroute/tracert получил IPv4-адрес интерфейса третьего маршрутизатора, обращенного к исходному компьютеру (JAJISH-PC-1). Исходный компьютер также узнал, что все в порядке до третьего маршрутизатора (OMNISECU-ROUTER-3). Вывод команды tracert на этом этапе скопирован ниже.

Шаг 4. Команда tracert создаст и отправит сообщение эхо-запроса ICMP со значением TTL, равным 4, в пункт назначения

.

Опять же, исходный компьютер (JAJISH-PC-1) генерирует и отправляет следующее сообщение эхо-запроса ICMP со значением TTL заголовка IPv4, равным 4, на конечный компьютер.

Снимок экрана Wireshark с сообщением эхо-запроса ICMP со значением TTL заголовка IPv4, равным 4, скопирован ниже.

Поскольку значение TTL заголовка IPv4 равно 4, первый маршрутизатор (OMNISECU-ROUTER-1), второй маршрутизатор (OMNISECU-ROUTER-2) и третий маршрутизатор (OMNISECU-ROUTER-3) будут пересылать пакет дейтаграммы IPv4 следующему маршрутизатор в пути после уменьшения значения TTL на 1. Пакет уже достиг четвертого маршрутизатора (OMNISECU-ROUTER-4) по пути к целевому компьютеру со значением TTL заголовка IPv4, равным 1. Исходное значение TTL было равно 4, но трижды уменьшалось на 1 на трех маршрутизаторах и, наконец, стало равным 1, когда оно достигло четвертого маршрутизатора. Теперь четвертый маршрутизатор (OMNISECU-ROUTER-4) отбросит пакет и отправит обратно сообщение ICMP Time Exceeded, чтобы уведомить исходный компьютер о том, что дейтаграмма IPv4 была отброшена из-за значения TTL (Time-to-Live) заголовка IPv4. истек.

Ниже скопирован снимок экрана Wireshark с сообщением ICMP Time Exceeded от четвертого маршрутизатора (OMNISECU-ROUTER-4).

Инструмент команды traceroute/tracert на исходном компьютере получил IPv4-адрес интерфейса четвертого маршрутизатора, обращенного к исходному компьютеру (JAJISH-PC-1), как 192.168.12.2. Все идеально для дейтаграммы IPv4, на пути к целевому компьютеру (JAJISH-PC-2) до четвертого маршрутизатора (OMNISECU-ROUTER-4). Вывод команды tracert на этом этапе скопирован ниже.

Шаг 5. Команда tracert создаст и отправит сообщение ICMP Echo Request со значением TTL, равным 5, в пункт назначения

.

Опять же, исходный компьютер (JAJISH-PC-1) генерирует и отправляет следующее сообщение эхо-запроса ICMP со значением TTL заголовка IPv4, равным 5, на компьютер назначения.

Снимок экрана Wireshark с сообщением эхо-запроса ICMP со значением TTL заголовка IPv4, равным 5, скопирован ниже.

В этом случае значение TTL заголовка IPv4 достаточно велико, чтобы достичь целевого компьютера (JAJISH-PC-2). Четвертый маршрутизатор перенаправит сообщение ICMP Echo Request в подключенную к нему подсеть и, наконец, достигнет конечного компьютера 172.17.0.100. Когда он достигнет целевого компьютера (JAJISH-PC-2), он отправит сообщение ICMP Echo Reply обратно на исходный компьютер (JAJISH-PC-1).

Ниже скопирован снимок экрана Wireshark с сообщением ICMP Echo Reply, полученным обратно на исходном компьютере (JAJISH-PC-1).

После того, как программа traceroute/tracert, запущенная на исходном компьютере, получила эхо-ответ ICMP от конечного компьютера, она может убедиться, что на пути к целевому компьютеру нет отключенных каналов/маршрутизаторов.

Ниже скопирован вывод команды final traceroute/tracert.

Увеличение значения TTL заголовка IPv4 на 1 будет продолжаться до тех пор, пока от целевого компьютера не будет получено сообщение ICMP Echo Reply или до 30 переходов (по умолчанию).

Если какой-либо канал/маршрутизатор не работает на пути от исходного компьютера к целевому компьютеру, вы получите вывод traceroute/tracert, как показано ниже.

У вас есть предложения? Пожалуйста, дайте нам знать!

Связанные учебники

• Введение в TCP/IP, Особенности TCP/IP, История TCP/IP, Что такое RFC (Запрос комментариев)
• Семь уровней модели OSI и функции семи уровней модели OSI
. • Пятиуровневая модель TCP/IP
• Сетевой уровень (уровень 3)
• Инкапсуляция и декапсуляция данных TCP/IP
• Уровень канала передачи данных (уровень 2)
• Формат кадра Ethernet
• Что такое MAC-адрес, адрес уровня 2 или физический адрес
. • Протокол IPv4, заголовок IPv4 и поля заголовка IPv4
• Адреса IPv4, классы адресов IPv4, классификации адресов IPv4
• Что такое маска подсети
• Что такое сетевой адрес
? • Ограниченный широковещательный адрес
• Направленный широковещательный адрес
• Что такое ограниченная широковещательная рассылка в IPv4 и как работает ограниченная широковещательная рассылка
• Что такое направленная широковещательная рассылка в IPv4 и как работает направленная широковещательная рассылка
• Что такое шлюз по умолчанию
? • Что такое частные IP-адреса — частные адреса RFC 1918
. • Адреса APIPA (автоматические частные IP-адреса)
• Что такое петлевой адрес в IPv4
• Что такое локальный хост
• Сети класса A и IP-адреса класса A
• Сети класса B и IP-адреса класса B
• Сети класса C и IP-адреса класса C
• Многоадресные IP-адреса класса D
• Подсети — Часть 1
• Подсети — часть 2
• Подсети — часть 3
• Подсети — часть 4
• Подсети — часть 5
• Подсети — Часть 6
• Маскирование подсети переменной длины, VLSM, подсети IP V4, учебные пособия по подсетям, учебные пособия по IP, документация по IP, учебные пособия по IP
• Supernetting, IP Supernetting, Учебное пособие по IP Supernetting, How to Supernet, Guide Supernetting, Supernetting Concepts
. • Как узнать сетевой адрес и широковещательный адрес IPv4-адреса в подсети
. • Учебное пособие по протоколу разрешения адресов, принцип работы ARP, формат сообщения ARP
. • Протокол управляющих сообщений Интернета, ICMP, принцип работы ICMP, заголовок ICMP, заголовок сообщения ICMP
. • Типы сообщений ICMP
• Сообщения эхо-запроса и эхо-ответа ICMP
• Сообщения ICMP Destination Unreachable
• Сообщения ICMP Source Quench
• Сообщения объявления маршрутизатора ICMP
• Сообщения запроса маршрутизатора ICMP
• Сообщения о превышении времени ICMP
• Сообщения о проблемах с параметрами ICMP
• Сообщения ICMP Timestamp Request и Timestamp Reply
• ICMP-сообщения Photoris
• Командный инструмент Ping
• Опции команды Ping
• Как отобразить имя удаленного компьютера в выводе команды ping
• Как постоянно пинговать
• Как указать количество пакетов, отправляемых в команде ping
• Как указать размер данных для отправки в команде ping
• Что такое сетевая атака Ping of Death (PoD)
• Опции команды tracert
• Командный инструмент Pathping
• Параметры команды Pathping
• Разница между ping, traceroute/tracert и pathping

Как использовать Traceroute в Windows 10 (Tracert)

Сети строятся путем маршрутизации пакетов из точки А в точку В и в точку С. Каждый пакет проходит маршрут от источника к месту назначения. В Windows 10 вы можете использовать удобную утилиту traceroute под названием tracert , чтобы отслеживать, что происходит.

В этой статье вы узнаете все о команде traceroute ( tracert ) в Windows 10. Вы узнаете о ее назначении, различных переключателях и о том, как интерпретировать предоставляемую ею информацию. К концу этой статьи вы будете знать, как использовать этот инструмент в полной мере!

Связано: Как использовать Traceroute в Linux

Как работает Traceroute/Tracert?

В Windows 10 (и всех других операционных системах) основной целью traceroute является определение маршрута, по которому пакет проходит через сеть.Он делает это, используя сообщения об ошибках для сбора информации о различных маршрутизаторах, через которые проходит пакет.

Tracert использует поле Time-to-Live (TTL) в заголовках IP-пакетов. TTL ограничивает время жизни пакета, не позволяя ему оставаться в сети. Это важно, если путь не работает или существует петля маршрутизации.

Когда пакет достигает маршрутизатора, его значение TTL уменьшается до тех пор, пока не достигнет 0. Когда TTL пакета становится равным 0, маршрутизатор отбрасывает пакет и возвращает сообщение ICMP_TIME_EXCEEDED обратно в пакет, откуда он был отправлен.

Tracert, в отличие от своего собрата traceroute из Linux, использует UDP для отправки тестовых пакетов, а не эхо-запросов ICMP.

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

Терминология трассировки

Мы уже упомянули несколько терминов, но вы узнаете еще несколько, читая эту статью. Давайте сначала рассмотрим больше важных терминов.

  • Хост. Хост — это компьютер или устройство, с которого вы запускаете инструмент Traceroute. Это может быть ПК с Windows или Linux или устройство Cisco IOS.
  • Маршрутизатор
  • — Устройство, которое пересылает или маршрутизирует пакетов из сети в сеть через различные интерфейсы.
  • Прыжок — Прыжок — это маршрутизатор на сетевом пути. Думайте о маршрутизируемом пакете как о «скачке» от одного интерфейса маршрутизатора к другому, когда он проходит через сеть.
  • Маршрут. Маршрут — это путь между хостом и каждым интерфейсом маршрутизатора. Маршрут может быть разным каждый раз, когда инструмент traceroute. Это связано с протоколами и правилами маршрутизации, которые могут направлять трафик на разные интерфейсы.
  • Путь — Путь — это маршрут, по которому пакет перемещается от одного хоста к другому.

Демонстрация Traceroute в Windows 10

Возможно, вы столкнулись с проблемой устранения неполадок сети для приложения, которым вы управляете. Изучив некоторые файлы журналов, вы увидите, что запросы, которые приложение делает с удаленного сервера, занимают больше времени, чем обычно, или полностью отбрасывают пакеты.Это идеальный сценарий для использования утилиты traceroute в Windows 10, tracert .

Откройте командную строку ( cmd.exe ) или консоль Windows PowerShell. Во всех примерах, которые вы увидите в этом разделе, используется Windows PowerShell v5.1.

В поисках помощи

Давайте сначала познакомимся и узнаем, как эта утилита tracert работает в Windows 10. Эта утилита командной строки предоставляет вам удобный способ увидеть все параметры, которые у вас есть для ее запуска, запустив tracert -? .

В следующем фрагменте кода видно, что tracert имеет несколько различных параметров для настройки своего поведения. Утилита traceroute tracert для Windows 10 не содержит так много опций, как ее кузен из Linux.

Если ввести tracert -? , вы увидите все параметры команды.

  Использование: tracert [-d] [-h max_hops] [-j список хостов] [-w тайм-аут]
               [-R] [-S srcaddr] [-4] [-6] target_name

Опции:
    -d Не преобразовывать адреса в имена хостов.-h max_hops Максимальное количество переходов для поиска цели.
    -j список-хостов Свободный исходный маршрут по списку-хостов (только для IPv4).
    -w timeout Тайм-аут ожидания в миллисекундах для каждого ответа.
    -R Отследить путь туда и обратно (только для IPv6).
    -S srcaddr Исходный адрес для использования (только для IPv6).
    -4 Принудительно использовать IPv4.
    -6 Принудительно использовать IPv6.  

Вы, скорее всего, будете использовать только один или два из этих параметров при повседневном устранении неполадок.В описанном конкретном сценарии вы можете использовать tracert , за которым следует IP-адрес или полное доменное имя (FQDN) целевого сервера.

Трассировка: на примере

Предположим, ваше приложение должно достичь адреса www. google.com . Чтобы отследить путь приложения до www.google.com , вы должны просто указать адрес в качестве первого аргумента для traceroute в Windows 10 (tracert).

В следующей демонстрации вы можете увидеть путь, по которому пакет от хоста из примера проходит через 11 маршрутизаторов.

пример трассировки -q

Теперь давайте рассмотрим вывод, а затем рассмотрим результаты ниже.

  Отслеживание маршрута до www.google.com [172.217.8.164]
не более 30 переходов:

  1 1 мс 4 мс 1 мс www.routerlogin.com [192.168.1.1]
  2 56 мс 11 мс 12 мс 142.254.148.17
  3 65 мс 468 мс 29 мс agg63.vnwrohbt01h.midwest.rr.com [98.30.201.210]
  4 61 мс 22 мс 21 мс agg59.clmkohpe02r.midwest.rr.com [24.33.162.134]
  5 508 мс 23 мс 29 мс be27.clmkohpe01r.midwest.rr.com [65.29.1.34]
  6 73 мс 41 мс 31 мс bu-ether31-vinnva0510w-bcr00.tbone.rr.com [66.109.6.54]
  7 76 мс 33 мс 37 мс 66.109.5.136
  8 382 мс 29 мс 36 мс 66.109.7.83
  9 75 мс 32 мс 37 мс 209. 85.250.189
 10 * 1320 мс 29 мс 72.14.232.153
 11 28 мс 27 мс 27 мс ord37s08-in-f4.1e100.net [172.217.8.164]

Трассировка завершена.  

В выходных данных пять столбцов данных. Начиная слева направо:

  • Столбец 1 (количество переходов) — на этом маршруте 11 переходов.Имейте в виду, что вы можете запустить эту же команду еще раз и получить другой результат. Это ожидаемо, поскольку вы можете быть перенаправлены на другой интерфейс маршрутизатора или вообще на другой маршрутизатор.
  • Столбцы 2–4 (время прохождения пакета ICMP (ping) туда и обратно) — это время измеряется в миллисекундах. Следует помнить, что эти пакеты также содержат TTL, из-за которого маршрутизатор генерирует ошибку, содержащую информацию, используемую командой tracert.

Время отклика 5–30 мс считается хорошим временем отклика для высокоскоростных переходов.Чаще всего вы увидите время между 35-60 мс. Когда вы начинаете видеть время более 60 мс, это может указывать на задержку.

  • Столбец 5 (имя хоста или IP-адрес) — этот элемент возвращается маршрутизатором в пути. Иногда, если маршрутизатор настроен на то, чтобы не отвечать или недоступен по какой-либо причине, вместо этого вы увидите здесь * . По умолчанию tracert пытается выполнить обратный поиск DNS для каждого IP-адреса маршрутизатора. Вот как вы видите здесь DNS-имена вместо IP-адреса.

Вы можете немного ускорить tracert , если откажетесь от разрешения имен с помощью ключа -d . Эта опция предотвратит разрешение имени хоста и будет возвращать только IP-адреса.

Теперь у вас есть основная информация, которая будет полезна при устранении проблем с сетевой задержкой или маршрутизацией. У вас есть измерение времени, IP-адрес(а) и/или полное доменное имя(а) для маршрутизатора для исследования.

Заключение

Утилита traceroute в Windows 10 — это проверенная и удобная сетевая утилита командной строки. В этой статье мы не рассмотрели каждый параметр для каждой команды, но рассмотрели многие из наиболее полезных.

Если вы хотите узнать больше о внутренней работе traceroute в Windows, ознакомьтесь с документацией Microsoft по tracert.

Как запустить трассировку в Linux, Windows и macOS

Введение

Traceroute — важнейший инструмент сетевой диагностики. Вместе с другими командами Linux, такими как ping, ip и netstat (или более новая альтернатива ss), Traceroute определяет путь, по которому проходят пакеты от источника к месту назначения.Инструмент универсально доступен для Linux, Windows и macOS.

В этой статье объясняется команда traceroute или tracert , как она работает, а также как запускать и читать traceroute в Linux, Windows и macOS.

Предпосылки

  • Доступ к командной строке/терминалу.
  • Сетевое подключение.
  • Веб-сайт или IP-адрес для отслеживания (необязательно, указано в примерах).

Что такое трассировка?

traceroute — это команда, используемая при поиске и устранении неполадок в сети для сопоставления пути прохождения пакетов по сети.Инструмент помогает в обнаружении возможных маршрутов информации от источника к месту назначения. Кроме того, команда также помогает рассчитать время перехода между точками.

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

Как работает трассировка?

Протокол отправляет пакеты ICMP (Internet Control Message Protocol) каждому маршрутизатору, осуществляющему передачу между источником и пунктом назначения.Когда вы запускаете traceroute, вывод отображает:

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

Traceroute действует как серия команд ping. В то время как ping запрашивает ответ от пункта назначения, traceroute также собирает промежуточную информацию.

Для сбора информации, доступной между источником и получателем, traceroute снижает TTL (время жизни) пакета до минимума (1).Когда маршрутизатор получает информацию, он уменьшает значение TTL до 0, указывая, что он должен отправить информацию обратно источнику. Источник собирает информацию о промежуточном маршрутизаторе, сбрасывает значение TTL на 1 и увеличивает его.

Таким образом, пакет достигает следующего маршрутизатора в сети. Итеративный процесс повторяется до тех пор, пока последний пакет не достигнет IP-адреса назначения. Затем traceroute распознает IP-адрес назначения и выводит всю собранную промежуточную информацию.

Команда по умолчанию отправляет три зонда для каждого значения TTL и распечатывает время приема-передачи для каждого пакета.

Как запустить трассировку?

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

По умолчанию трассировка составляет 30 переходов для размера пакета 60 байтов для IPv4 и 80 байтов для IPv6.

Запустить трассировку в Linux

В Ubuntu команда traceroute по умолчанию недоступна. Установите инструмент с помощью диспетчера пакетов apt.

1. Откройте терминал ( CTLR + ALT + T ) и установите traceroute с помощью:

  sudo apt установить трассировку  

2. В терминале запустите traceroute с:

  traceroute [параметры] <имя хоста или IP> [длина пакета]  

Например, отследите один из IP-адресов теста скорости phoenixNAP:

  трассировка 131.153.40.84  

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

  трассировка phoenixnap. ком  

Примечание . Аналогичная команда с именем tracepath доступна для Linux. Основное различие между ними заключается в том, что traceroute предлагает больше опций, некоторые из которых требуют привилегий root. С другой стороны, tracepath доступен для всех пользователей и выводит меньше информации.

Дополнительные параметры для трассировки в Linux

По умолчанию traceroute отправляет UDP-пакеты.Добавьте опцию -I для тестовых пакетов ICMP:

  traceroute -I <имя хоста или IP>  

Включите параметр -n , чтобы скрыть имена устройств для более чистого вывода:

  traceroute -In   

По умолчанию количество отправляемых пакетов равно трем. Измените номер с помощью опции -q , за которой следует количество пакетов:

  traceroute -Inq <номер> <имя хоста или IP>  

Уменьшение количества пакетов до одного увеличивает скорость трассировки.

Для всех дополнительных параметров traceroute проверьте страницу руководства в терминале с помощью команды man:

  человек трассировка  

Руководство содержит информацию обо всех доступных параметрах команды и о том, как их применить к команде.

Запустить трассировку в Windows

Traceroute доступен для Windows с более коротким именем tracert . Чтобы запустить traceroute в Windows, выполните следующие действия:

1.Нажмите клавишу Windows и введите CMD .

2. Нажмите Введите и откройте командную строку.

3. Наконец, запустите traceroute с:

  tracert [опции] <имя хоста или IP>  

Выходные данные выводят на консоль сообщение Trace Complete после завершения traceroute.

Запустить трассировку в macOS

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

1. Щелкните значок Spotlight (увеличительное стекло).

2. Затем найдите Network Utility в поле поиска.

3. Дважды щелкните Network Utility в результатах поиска.

4. Найдите и щелкните вкладку Traceroute .

5. Наконец, введите IP-адрес или хост назначения и нажмите Trace . Текстовое поле под кнопкой Trace выводит результаты Traceroute.

Как читать трассировку?

При запуске traceroute выходные данные показывают путь, по которому пакеты перемещаются к точке назначения.Распечатанный результат делится на три общих столбца:

1. Каждая строка указывает переход маршрутизатора. Первый столбец показывает номер прыжка.

2. Следующие три столбца показывают время приема-передачи (RTT) для трех пакетов:

  • Для близлежащих сетей эти числа обычно меньше 100 мс.
  • Для удаленных сетей в других странах типичные значения RTT достигают 300 мс.

Три символа звездочки (* * *) вместо цифр, за которыми следует сообщение « Время ожидания запроса истекло », могут означать:

  • Маршрутизатор не работает.
  • Маршрутизатор настроен не возвращать результаты трассировки.
  • На маршрутизаторе включен брандмауэр.
  • Тайм-аут для одного из предыдущих маршрутизаторов.

3. В последнем столбце отображается IP-адрес назначения и, по возможности, разрешенное доменное имя.

Выходные строки traceroute сгруппированы в пять единиц:

1. Локальная сеть.

2. Интернет-провайдер (ISP) для локальной сети.

3.Интернет.

4. Сеть узла назначения.

5. Адрес получателя.

Примечание: Результаты у всех разные. Однако общие категории по-прежнему применимы к любой ситуации. Выясните каждый адрес, просматривая обратный DNS.

Добавьте > .txt в конце команды traceroute или tracert , чтобы сохранить результаты в текстовом файле для последующего использования и анализа. Например, в Linux и macOS:

.
  трассировка 8.8.8.8 > результаты.txt  

Пользователи Windows могут выполнить те же действия:

  tracert 8.8.8.8 > результат.txt  

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

Заключение

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

Если вы хотите узнать больше о traceroute по сравнению с другими терминальными программами, прочитайте нашу статью о tracepath и traceroute.

Дополнительные сетевые команды см. в нашем руководстве по сетевому сканеру nmap. Это полезный инструмент для сканирования открытых портов.

Использование команды traceroute (tracert)

Что такое команда traceroute

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

Запустите команду traceroute (tracert) с помощью Windows

Чтобы использовать команду traceroute с компьютерами под управлением операционной системы Microsoft Windows (XP):

  1. Выберите Пуск > Выполнить .
  2. Введите «cmd», затем нажмите OK .
  3. Введите «tracert», затем пробел и имя домена или IP-адрес (например: tracert example.com или tracert 10.0.2.1 ).
  4. Нажмите клавишу Enter , чтобы выполнить команду.

Для использования команды traceroute с компьютерами под управлением операционной системы Microsoft Windows (Vista, 7):

  1. Откройте панель управления на локальном компьютере.
  2. Щелкните Программы .
  3. В появившемся окне «Программы и компоненты» щелкните список в разделе «Включение или отключение компонентов Windows», чтобы развернуть его.
  4. В появившемся списке установите флажок рядом с «Клиент Telnet».
  5. Щелкните OK .
  6. Выберите Пуск > Выполнить .
  7. Введите «cmd», затем нажмите OK .
  8. Введите «tracert», затем пробел и имя домена или IP-адрес (например: tracert example.com или tracert 10.0.2.1 ).
  9. Нажмите клавишу Enter , чтобы выполнить команду.

После завершения появится сообщение «Трассировка завершена».Чтобы скопировать результаты команды traceroute:

  1. Щелкните правой кнопкой мыши окно командной строки и выберите Выбрать все .
  2. Нажмите клавишу Enter , чтобы скопировать эту информацию в буфер обмена вашего компьютера.
  3. Откройте новый пустой документ (с помощью Microsoft Word, Блокнота или аналогичной программы).
  4. Щелкните правой кнопкой мыши пустой документ и выберите Вставить .

Это позволит вставить скопированные результаты команды traceroute в документ, который затем можно будет сохранить на локальном компьютере для устранения неполадок в будущем.

Запустите команду traceroute с помощью Mac OSX

Чтобы использовать команду traceroute с компьютерами под управлением операционной системы Apple Macintosh (OSX):

  1. Откройте папку Приложения .
  2. Нажмите Сетевые утилиты .
  3. Выберите вкладку «Трассировка».
  4. Введите IP-адрес или доменное имя в текстовое поле, затем щелкните Trace .

После завершения появится сообщение «Трассировка завершена».Чтобы скопировать результаты команды traceroute:

  1. Удерживая левую кнопку мыши, выберите и выделите все отображаемые результаты команды traceroute.
  2. Скопируйте эти результаты, нажав одновременно клавишу Command ( ) , затем клавишу C (или щелкните результат правой кнопкой мыши и выберите Копировать ).
  3. Откройте новый пустой документ (используя TextEdit, Microsoft Word или аналогичную программу).
  4. Щелкните левой кнопкой мыши пустой документ, затем нажмите обе клавиши Command ( ) , затем клавишу V (или щелкните правой кнопкой мыши пустую страницу и выберите Вставить ).

Это позволит вставить скопированные результаты команды traceroute в документ, который затем можно будет сохранить на локальном компьютере для устранения неполадок в будущем.

Запустить трассировку в Linux

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

Некоторые примеры установки:

Ubuntu/Debia

$ sudo apt установить трассировку 

Федора

# dnf установить трассировку 

OpenSUSE

# зиппер в трассировке 

Arch Linux

# pacman -S трассировка 
Запуск трассировки

Запустите traceroute, введя команду, а затем IP-адрес или доменное имя.

$ traceroute yourdomain.com 

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

Как выполнить трассировку и эхо-запрос с помощью Windows

В этом руководстве вы узнаете, как использовать утилиты tracert и ping в командной строке Windows.Эти команды позволят вам устранять неполадки и проверять подключение к вашему веб-сайту или серверу через IP-адрес или доменное имя.

Что вам понадобится

Прежде чем приступить к этому руководству, вам потребуется следующее:

  • Компьютер, работающий под управлением операционной системы Windows.
  • IP-адрес или доменное имя, которое вы хотите проверить.

Шаг 1 — Запуск консоли командной строки Windows

  • Нажмите комбинацию клавиш Windows + R, чтобы открыть диалоговое окно «Выполнить».Введите cmd и нажмите кнопку OK , чтобы продолжить.

  • Откроется окно командной строки.

Шаг 2 — Использование команды ping

Команда ping используется для проверки соединения между двумя машинами. При устранении неполадок можно использовать команду ping для отправки эхо-запроса ICMP на доменное имя или IP-адрес.

  • Чтобы запустить утилиту ping, вам потребуется IP-адрес или доменное имя, с которым вы хотите проверить подключение.Например, просто введите ping example.com в окне командной строки и нажмите кнопку ENTER на клавиатуре, чтобы запустить утилиту ping. Вы увидите аналогичные результаты, как в окне выше.

ВАЖНО! Вы должны заменить example.com своим правильным доменным именем или IP-адресом.


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

Если ваш коэффициент потери пакетов равен 0%, это означает, что ваше соединение идеально и пакеты с вашего компьютера правильно достигают IP-адреса назначения.

Шаг 3. Использование команды tracert

Tracert — это диагностическая утилита, которую можно использовать для отслеживания пути, по которому пакеты с вашего компьютера достигают места назначения, которым часто является доменное имя или IP-адрес.

  • Чтобы запустить утилиту tracert, вам потребуется IP-адрес или доменное имя, подключение к которому вы хотите проверить.Например, просто введите tracert example.com в окно командной строки и нажмите кнопку ENTER на клавиатуре, чтобы запустить утилиту tracert. Вы увидите аналогичные результаты, как в окне выше.

ВАЖНО! Вы должны заменить example.com своим правильным доменным именем или IP-адресом.


Если вы получаете повторяющиеся сообщения Request Time Out в последовательных прыжках, это означает, что ваше соединение прерывается на прыжке до сообщения Request Time Out , и это позволяет вам определить, где ваши пакеты блокируются.

Заключение

Теперь вы можете использовать утилиты ping и tracert для проверки подключения к доменному имени или IP-адресу и устранения проблем с подключением.

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

Leave a comment