Traceroute Linux

traceroute диагностика сети в Linux

Traceroute в Linux — утилита, используемая при диагностике сетевых неполадок. Traceroute работает иначе чем tracert в Windows, фактически это две разные утилиты, использующие различные протоколы. Утилита Traceroute в Linux использует UDP, тогда как аналог в Windows отправляет ICMP пакеты.

Принцип работы traceroute в Linux

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

После достижения первого узла запрос возвращается, при этом замеряется RTT (Round Trip Time). RTT — основная характеристика каждого hop-а (прыжка из точки назначения до очередного роутера по пути к хосту назначения).

Когда запрос вернулся утилита увеличивает счетчик на единицу и при следующем заходе проходит уже два узла по пути к целевому сервера. Когда после прохождения двух узлов возвращается ответ счетчик вновь увеличивается.

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

Значение выдаваемое traceroute измеряется миллисекундах.

traceroute linux

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

Прохождение запроса и звездочки в выводе traceroute

Интернет провайдеры также могут менять сетевые маршруты выстраивая самый оптимальный — с минимальными задержками и без потерь. Маршрутизация может задаваться вручную или с помощью протоколов динамической маршрутизациии — чаще всего применяются OSPF и BGP.

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

Пример traceroute в Linux

Таким образом выглядит traceroute, запущенный с персонального компьютера до сайта example.com.

Ключ -n сообщает утилите, что не нужно разрешать ip адреса в доменные имена.

traceroute -n example.com

traceroute to example.com (123.123.123.123), 30 hops max
1 192.168.0.1 0.574 ms 0.553 ms 0.699 ms
2 45.46.18.14 3.131 ms 3.225 ms 3.231 ms
3 192.22.295.18 2.993 ms 3.051 ms 3.063 ms
4 * * *
5 81.45.10.759 30.130 ms 30.122 ms 30.221 ms
6 82.82.82.82 20.626 ms 3.585 ms 3.601 ms
7 * * *
8 123.123.123.123 2.063 ms 2.101 ms 2.382 ms

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

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

Также применяются и другие ключи traceroute:

-T (или tcptraceroute) — вместо udp будут отправляться tcp пакеты

-6 (или traceroute6) — тестовые пакеты IPv6

-I — сетевым узлам будут отправляться ICMP ECHO пакеты

-s — интерфейс, из которого отправляются пакеты (его можно задать флагом)

-d — дебаг, в консоль при использовании ключа будет выводиться расширенная информация

—mtu — будет выводить значения MTU узлов

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

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

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

О недоступности свидетельствует трассировка при которой пакеты не достигают целевого хоста и звездочки в трассировке напротив него.

На что обратить внимание при диагностике с помощью Linux утилиты traceroute

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

Дополнительно всегда стоит проверять соседние хосты (меняя ip адрес в последнем октете). Это позволит выявить есть ли сложности с конкретным адресом или со всей подсетью, в которой он существует.

Утилита кажется простой, но таковой не является. Но при её использовании никогда не нужно забывать периодически обращаться к man traceroute.

Документация по утилите traceroute:

Документация по утилите traceroute

Также для диагностики часто используется утилита mtr.

Друзья помогите этому контенту стать доступнее в социальных сетях.

Не проходи мимо жмакни по кнопке возможно кому то еще он будет полезен!