В Linux команда traceroute
позволяет проследить маршрут данных до удалённого IP-адреса пункта назначения в сети TCP/IP.
Команда 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
— отличный инструмент для исследования сетевой маршрутизации, проверки скорости соединения или выявления узких мест.