Команда Linux traceroute

Опубликовано admin - сб, 08/27/2022 - 14:01

В Linux команда traceroute позволяет проследить маршрут данных до удалённого IP-адреса пункта назначения в сети TCP/IP.

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

Команда traceroute выводит маршрут, по которому пакет достигает хоста.

Утилита полезна, когда вы хотите узнать о маршруте и обо всех переходах (hops), через которые проходит пакет.

Содержание

Синтаксис

traceroute [опции]  адрес_хоста

Опции

-4
Использовать протокол IPv4
-6
Использовать протокол IPv6
-F--dont-fragment
Не фрагментировать пакеты
-f first_ttl--first=first_ttl
Указать начальный TTL (вместо 1)
-g gate,...--gateway=gate,...
Направлять пакеты через указанный шлюз (максимум 8 для IPv4 и 127 для IPv6)
-T--tcp
Использовать пакеты TCP (порт по умолчанию 80)
-i device--interface=device
Указать сетевой интерфейс
-m max_ttl--max-hops=max_ttl
Установить максимальное количество переходов (максимальное значение TTL, которое должно быть достигнуто). Значение по умолчанию равно 30
-n
Не преобразовывать IP-адреса в доменные имена
-p port--port=port
Установить порт назначения для использования
-z sendwait--sendwait=sendwait
Минимальный интервал времени между зондами (по умолчанию 0)
-U--udp
Использовать UDP для определенного порта для трассировки маршрутизации (порт по умолчанию равен 53)

Установка

В большинстве дистрибутивов Linux утилита traceroute установлена. При её отсутствии проблем с установкой не возникнет.

Установка в Manjaro:

$ sudo pacman -S traceroute

Установка в Ubuntu:

$ sudo apt install traceroute

Примеры использования команды traceroute в Linux

Использование протокола IPv4

В качестве простейшего примера проверим маршрут до google.com с опцией -4:

oleg@mobile:~:$ traceroute google.com
traceroute to google.com (216.58.214.142), 30 hops max, 60 byte packets
 1  _gateway (192.168.1.1)  4.633 ms  4.785 ms  5.073 ms
 2  192.168.0.1 (192.168.0.1)  11.862 ms  11.928 ms  12.136 ms
 3  * 5.183.230.254 (5.183.230.254)  20.419 ms  20.473 ms
 4  80.78.232.113 (80.78.232.113)  20.461 ms  20.417 ms  21.173 ms
 5  94.72.149.17 (94.72.149.17)  27.954 ms  24.121 ms  26.303 ms
 6  185.148.160.40 (185.148.160.40)  28.312 ms  23.313 ms  23.145 ms
 7  108.170.250.161 (108.170.250.161)  24.882 ms 108.170.250.177 (108.170.250.177)  15.343 ms  19.180 ms
 8  142.250.235.225 (142.250.235.225)  20.313 ms  19.534 ms 142.250.235.223 (142.250.235.223)  18.624 ms
 9  fra16s06-in-f142.1e100.net (216.58.214.142)  18.550 ms  20.483 ms  21.758 ms
oleg@mobile:~:$ 

Из первой строки мы получаем следующую информацию:

  • пункт назначения и его IP-адрес;
  • максимальное количество переходов по умолчанию;
  • размер пакетов UDP, которые мы отправляем.

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

Формат каждой строки перехода:

  • имя устройства или IP-адрес;
  • IP-адрес;
  • время, затраченное на сигнал туда/обратно для каждого из трёх тестов. Наличие здесь символа * означает, что на этот тест не было ответа. При отсутствии вообще какого-либо ответа вы увидите ***, а не имя устройства или IP-адрес.

Пример:

oleg@mobile:~:$ traceroute -4 linuxcookbook.ru
traceroute to linuxcookbook.ru (139.162.132.20), 30 hops max, 60 byte packets
 1  _gateway (192.168.1.1)  3.760 ms  3.738 ms  3.765 ms
 2  192.168.0.1 (192.168.0.1)  8.397 ms  9.479 ms  9.483 ms
 3  5.183.230.254 (5.183.230.254)  15.626 ms  22.765 ms  22.744 ms
 4  80.78.232.113 (80.78.232.113)  18.337 ms  22.647 ms  19.184 ms
 5  te0-7-0-5-4.ccr31.sof02.atlas.cogentco.com (149.6.68.37)  22.649 ms  22.632 ms  22.587 ms
 6  be3421.ccr51.beg03.atlas.cogentco.com (130.117.0.94)  27.653 ms  28.083 ms  28.253 ms
 7  be3422.ccr31.bud01.atlas.cogentco.com (130.117.0.125)  30.851 ms  27.363 ms  23.935 ms
 8  be3263.ccr22.bts01.atlas.cogentco.com (154.54.59.177)  25.974 ms be3261.ccr21.bts01.atlas.cogentco.com (130.117.3.137)  27.958 ms  32.047 ms
 9  be3463.ccr52.vie01.atlas.cogentco.com (154.54.59.185)  36.589 ms be2988.ccr51.vie01.atlas.cogentco.com (154.54.59.86)  36.789 ms be3463.ccr52.vie01.atlas.cogentco.com (154.54.59.185)  35.561 ms
10  be2974.ccr21.muc03.atlas.cogentco.com (154.54.58.5)  40.961 ms  42.003 ms  42.201 ms
11  * be2960.ccr42.fra03.atlas.cogentco.com (154.54.36.253)  41.559 ms be2959.ccr41.fra03.atlas.cogentco.com (154.54.36.53)  46.521 ms
12  be2501.rcr21.b015749-1.fra03.atlas.cogentco.com (154.54.39.178)  47.952 ms be2502.rcr21.b015749-1.fra03.atlas.cogentco.com (154.54.39.182)  47.444 ms be2501.rcr21.b015749-1.fra03.atlas.cogentco.com (154.54.39.178)  48.132 ms
13  * * *
14  if-4-4.router2-fra.linode.com (139.162.129.15)  39.787 ms if-4-3.router1-fra.linode.com (139.162.129.11)  46.925 ms  46.613 ms
15  li1398-20.members.linode.com (139.162.132.20)  46.311 ms  44.750 ms  45.539 ms
oleg@mobile:~:$ 

Из примера следует, что на 13 переходе не было вообще никакого ответа.

Протокол IPv6 используется аналогично.

Указание начального TTL

Первые два перехода происходят в локальной сети и поэтому мы можем прослеживать маршрут начиная например с 3 перехода, используя опцию -f:

oleg@mobile:~:$ traceroute -f 3 google.com
traceroute to google.com (216.58.214.142), 30 hops max, 60 byte packets
 3  * 5.183.230.254 (5.183.230.254)  23.126 ms  19.971 ms
 4  80.78.232.113 (80.78.232.113)  23.336 ms  23.332 ms  23.880 ms
 5  94.72.149.17 (94.72.149.17)  24.190 ms  24.199 ms  44.754 ms
 6  185.148.160.40 (185.148.160.40)  28.687 ms  31.212 ms  30.096 ms
 7  108.170.250.161 (108.170.250.161)  26.942 ms 108.170.250.177 (108.170.250.177)  31.150 ms  31.155 ms
 8  142.250.235.225 (142.250.235.225)  31.114 ms  16.287 ms 142.250.235.223 (142.250.235.223)  21.453 ms
 9  fra16s06-in-f142.1e100.net (216.58.214.142)  20.730 ms  20.708 ms  28.229 ms
oleg@mobile:~:$

Не преобразовывать IP-адреса в доменные имена

Для этого используется опция -n:

oleg@mobile:~:$ traceroute -nf 3 google.com
traceroute to google.com (216.58.214.142), 30 hops max, 60 byte packets
 3  5.183.230.254  28.133 ms  29.291 ms  29.240 ms
 4  80.78.232.113  31.769 ms  31.796 ms  31.755 ms
 5  94.72.149.17  56.007 ms  31.732 ms  55.964 ms
 6  185.148.160.40  33.685 ms  33.633 ms  34.447 ms
 7  108.170.250.177  34.474 ms 108.170.250.161  33.190 ms *
 8  * 142.250.235.223  14.442 ms  20.401 ms
 9  216.58.214.142  18.414 ms  14.799 ms  21.235 ms
oleg@mobile:~:$ 

Заключение

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

Поделиться с друзьями