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

Когда один из узлов сети не функционирует, и непонятно что не работает - используется команда traceroute в Linux.

Утилита ping говорить только что есть проблема, traceroute - где проблема.

Принцип работы

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

traceroute - делает трассировку маршрута до указанного узла, отправляя серию пакетов, это может быть UDP по умолчанию, TCP, ICMP-пакеты, с временем жизни TTL =1, увеличивая этот параметр с каждым хостом на единицу.

Осталось разобраться что такое TTL?

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

То есть возможно два варианта:

  1. IP-пакет доходит до точки назначения;
  2. IP-пакет уничтожается маршрутизатором при TTL=1.

Синтаксис

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

traceroute параметры адрес узла

Основные параметры:

  • -4 - использовать IP-адрес версии 4.
  • -6 - IP-адрес версии 6.
  • -I или M icmp - посылать ICMP-пакеты, вместо UDP.
  • -T или -M tcp - посылать TCP-сегменты, вместо UDP.
  • -f - с какого TTL (время жизни) начать,  по умолчанию 1.
  • -g - через какой шлюз передавать запросы.
  • -i - через какой интерфейс делать трассировку.
  • -m - максимальное количество хостов.
  • -q -сколько пакетов отправить сразу, по умолчанию 3.
  • -n - не узнать домены.
  • -p - через какой порт посылать запросы.
  • -w - назначить время ожидания от хоста, по умолчанию 0,5 секунд.
  • -r - назначить другой роутер, отличный от таблицы маршрутизации.
  • -z - назначить минимальный интервал между запросами.
  • -V - показать версию программы.
  • --help - показать справочную информацию.

Адрес узла - это IP-адрес или доменное имя.

Примеры

Сделаем трассировку до сайта vseprolinux.ru без аргументов.

traceroute vseproliux.ru

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

Как видно на скриншоте выше, путь до сайта составил 13 узлов. На каждый узел было отправлено по 3 пакета и зафиксировано время.

Чтобы замерить время выполнения всей трассировки, необходимо использовать дополнительную утилиты time. Данная программа используется для определения времени выполнения команды.

 time traceroute vseproliux.ru

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

Видим время выполнения 2 минуты 5, 408 секунд.

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

Для проверки отправляют запросы ICMP (аргумент -I) и tcp (-T).

traceroute -I vseproliux.ru

traceroute -T vseproliux.ru