Поиск по сайту:

Как использовать Traceroute и MTR для диагностики сетевых проблем


Введение

Важной частью администрирования серверов является мониторинг сетевого подключения.

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

Мы также рассмотрим утилиту под названием mtr, которая объединяет большую часть функций ping и traceroute в одном интерфейсе.

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

traceroute — это простой инструмент для отображения пути к удаленному серверу. Это может быть что угодно, от веб-сайта, который вы пытаетесь посетить, до принтера в вашей локальной сети.

Программа traceroute установлена по умолчанию почти в каждом дистрибутиве Linux, поэтому вам не нужно ее устанавливать.

Чтобы вызвать его, нам просто нужно указать веб-сайт или IP-адрес, который мы хотели бы изучить:

  1. traceroute google.com

Вы получите вывод, подобный следующему:

Output
traceroute to google.com (173.194.38.137), 30 hops max, 60 byte packets 1 192.241.160.253 (192.241.160.253) 0.564 ms 0.539 ms 0.525 ms 2 192.241.164.241 (192.241.164.241) 0.487 ms 0.435 ms 0.461 ms 3 xe-3-0-6.ar2.nyc3.us.nlayer.net (69.31.95.133) 1.801 ms 1.802 ms 1.762 ms 4 144.223.28.73 (144.223.28.73) 0.583 ms 0.562 ms 0.550 ms 5 144.232.1.21 (144.232.1.21) 1.044 ms 1.048 ms 1.036 ms 6 74.125.49.212 (74.125.49.212) 0.494 ms 0.688 ms 0.643 ms 7 209.85.248.180 (209.85.248.180) 0.650 ms 209.85.248.178 (209.85.248.178) 0.621 ms 0.625 ms 8 72.14.236.208 (72.14.236.208) 0.618 ms 72.14.236.206 (72.14.236.206) 0.898 ms 72.14.236.208 (72.14.236.208) 0.872 ms 9 72.14.239.93 (72.14.239.93) 7.478 ms 7.989 ms 7.466 ms 10 72.14.232.73 (72.14.232.73) 20.002 ms 19.969 ms 19.975 ms 11 209.85.248.228 (209.85.248.228) 30.490 ms 72.14.238.106 (72.14.238.106) 34.463 ms 209.85.248.228 (209.85.248.228) 30.707 ms 12 216.239.46.54 (216.239.46.54) 42.502 ms 42.507 ms 42.487 ms 13 216.239.46.159 (216.239.46.159) 76.578 ms 74.585 ms 74.617 ms 14 209.85.250.126 (209.85.250.126) 80.625 ms 80.584 ms 78.514 ms 15 72.14.238.131 (72.14.238.131) 80.287 ms 80.560 ms 78.842 ms 16 209.85.250.228 (209.85.250.228) 171.997 ms 173.668 ms 170.068 ms 17 66.249.94.93 (66.249.94.93) 238.133 ms 235.851 ms 235.479 ms 18 72.14.233.79 (72.14.233.79) 233.639 ms 239.147 ms 233.707 ms 19 sin04s01-in-f9.1e100.net (173.194.38.137) 236.241 ms 235.608 ms 236.843 ms

Первая строка сообщает нам условия, в которых работает traceroute:

Output
traceroute to google.com (173.194.38.137), 30 hops max, 60 byte packets

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

Максимальное количество переходов можно настроить с помощью флага -m. Если хост, к которому вы пытаетесь выполнить маршрутизацию, находится на расстоянии более 30 прыжков, вам может потребоваться указать здесь большее значение. Максимальное значение, которое вы можете установить, равно 255.

  1. traceroute -m 255 obiwan.scrye.net

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

  1. traceroute google.com 70

Вы увидите такой вывод:

Output
traceroute to google.com (173.194.38.128), 30 hops max, 70 byte packets 1 192.241.160.254 (192.241.160.254) 0.364 ms 0.330 ms 0.319 ms 2 192.241.164.237 (192.241.164.237) 0.284 ms 0.343 ms 0.321 ms

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

Каждая строка имеет следующий формат:

Output
hop_number host_name (IP_address) packet_round_trip_times

Вот пример прыжка, который вы можете увидеть:

Output
3 nyk-b6-link.telia.net (62.115.35.101) 0.311 ms 0.302 ms 0.293 ms

Вот что означает каждое поле:

  • hop_number: Последовательный подсчет количества степеней отделения хоста от вашего компьютера. Трафик от хостов с более высокими номерами должен пройти через большее количество компьютеров для маршрутизации.
  • host_name: это поле содержит результат обратного поиска DNS по IP-адресу хоста, если он доступен. Если из обратного DNS-запроса не возвращается никакой информации, предоставляется сам IP-адрес.
  • IP_address: это поле содержит IP-адрес для этого сетевого прыжка.
  • packet_round_trip_times: в оставшейся части строки указано время прохождения пакета в обоих направлениях до хоста и обратно. По умолчанию на каждый хост отправляется три пакета, и каждая попытка добавляется в конец строки.

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

  1. traceroute -q1 google.com

Если вы хотите отказаться от обратного просмотра DNS для ускорения трассировки, вы можете передать флаг -n:

  1. traceroute -n google.com

Вы получите такой вывод:

Output
traceroute to google.com (74.125.235.7), 30 hops max, 60 byte packets 1 192.241.160.253 0.626 ms 0.598 ms 0.588 ms 2 192.241.164.241 2.821 ms 2.743 ms 2.819 ms 3 69.31.95.133 1.470 ms 1.473 ms 1.525 ms

Если ваш traceroute распадается на несколько звездочек (*), проблема с маршрутом до хоста.

Output
... 15 209.85.248.220 (209.85.248.220) 121.809 ms 72.14.239.12 (72.14.239.12) 76.941 ms 209.85.248.220 (209.85.248.220) 78.946 ms 16 72.14.239.247 (72.14.239.247) 101.001 ms 92.478 ms 92.448 ms 17 * * 209.85.250.124 (209.85.250.124) 175.083 ms 18 * * * 19 * * *

Что означает проблема с маршрутом?

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

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

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

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

Как использовать ССО

Динамической альтернативой программе traceroute является mtr. Сочетая в себе функции ping и traceroute, mtr позволяет постоянно опрашивать удаленный сервер и видеть, как со временем меняется задержка и производительность.

В отличие от traceroute, mtr не устанавливается по умолчанию в большинстве систем. Вы можете получить его, введя следующие команды.

Убунту/Дебиан:

  1. sudo apt-get install mtr

ЦенОС/Федора:

  1. yum install mtr

Арка:

  1. pacman -S mtr

После установки вы можете вызвать его, набрав:

  1. mtr google.com

Вы получите такой вывод:

Output
My traceroute [v0.80] traceroute (0.0.0.0) Tue Oct 22 20:39:42 2013 Resolver: Received error response 2. (server failure)er of fields q uit Packets Pings Host Loss% Snt Last Avg Best Wrst StDev 1. 192.241.160.253 0.0% 371 0.4 0.6 0.1 14.3 1.0 2. 192.241.164.241 0.0% 371 7.4 2.5 0.1 37.5 4.8 3. xe-3-0-6.ar2.nyc3.us. 2.7% 371 3.6 2.6 1.1 5.5 1.1 4. sl-gw50-nyc-.sprintli 0.0% 371 0.7 5.0 0.1 82.3 13.1

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

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

Также можно запустить mtr с параметром --report, который возвращает результаты отправки 10 пакетов на каждый переход.

  1. mtr --report google.com

Отчет выглядит так:

Output
HOST: traceroute Loss% Snt Last Avg Best Wrst StDev 1.|-- 192.241.160.254 0.0% 10 1.5 0.9 0.4 1.5 0.4 2.|-- 192.241.164.237 0.0% 10 0.6 0.9 0.4 2.7 0.7 3.|-- nyk-b6-link.telia.net 0.0% 10 0.5 0.5 0.2 0.7 0.2 4.|-- nyk-bb2-link.telia.net 0.0% 10 67.5 18.5 0.8 87.3 31.8

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

Заключение

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