Использование Traceroute и mtr для диагностики сети

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

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

Кроме того, руководство охватывает использование утилиты mtr, интерфейс которой объединяет функции ping и traceroute.

Использование traceroute

Traceroute – это простой инструмент для определения пути к удаленному серверу. Это может быть что угодно: от сайта до принтера, подключенного к локальной сети.

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

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

traceroute google.com
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

Первая строка вывода говорит об условиях работы traceroute:

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

В ней содержится указанный хост, IP-адрес, который DNS возвращает для этого домена, максимальное количество хопов (так называемых «прыжков» – промежуточных участков) и размер пакета, который будет использоваться.

Максимальное количество хопов можно изменить при помощи флага –m. Если до необходимого хоста больше 30 хопов, нужно указать большее значение. Программа traceroute позволяет задать максимум 225 хопов.

traceroute -m 255 obiwan.scrye.net

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

traceroute google.com 70
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

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

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

hop_number   host_name   (IP_address)  packet_round_trip_times

Вот пример хопа:

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-адреса в доменное имя, если адрес доступен). Если информация не возвращается, будет указан сам IP-адрес.
  • IP_address: данное поле содержит IP-адрес сетевого хопа.
  • packetroundtrip_times: остальная часть строки указывает время прохождения пакетов на хост и обратно. По умолчанию на каждый хост посылается три пакета, и каждая такая попытка вносится в конец строки.

Примечание: чтобы изменить количество отправляемых пакетов, используйте опцию –q:

traceroute -q1 google.com

Чтобы отключить обратный DNS-запрос с целью ускорить мониторинг, используйте флаг -n:

traceroute -n google.com
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 возвращает звездочки (*), значит, с трассировкой пакетов к хосту возникли проблемы.

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 останавливается на определенном хопе и не может продолжить трассировку маршрута.

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

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

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

Использование MTR

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

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

  • Ubuntu/Debian:

sudo apt-get install mtr

  • CentOS/Fedora:

yum install mtr

  • Arch:

pacman -S mtr

Установив программу, вызовите ее при помощи команды:

mtr google.com
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; но mtr имеет существенное преимущество – ее вывод постоянно обновляется. Это позволяет собирать  средние показатели, а также отслеживать тенденции и изменения производительности сети.

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

Кроме того, mtr можно запустить с опцией –report, которая вернет результаты отправки 10 пакетов на каждый хоп:

mtr --report google.com
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 помогают вычислить, какой из серверов на пути к определенному домену/адресу вызывают проблемы. Это очень полезно при диагностике и  устранении неполадок внутренней сети, а также при необходимости предоставить информацию провайдеру или специалистам поддержки для решения проблем сети.

Tags: , , , , , ,

1 комментарий

Добавить комментарий