MTR и WinMTR: как читать отчёт и отличить реальную потерю пакетов от ICMP-лимита
13 мин чтения
MTR и WinMTR: как читать отчёт и отличить реальную потерю пакетов от ICMP-лимита

MTR и WinMTR: как читать отчёт и отличить реальную потерю пакетов от ICMP-лимита

Хостер просит «пришлите MTR», в отчёте на третьем хопе горит Loss 47%, и кажется, что виноват провайдер. Чаще всего это не потеря, а роутер, который не хочет отвечать на ICMP. Разбираем установку, ключи, колонки и пять типовых картинок отчёта.

MTR — это traceroute и ping в одной утилите: она находит все узлы на пути до цели и непрерывно шлёт пакеты каждому из них, накапливая по каждому хопу процент потерь и статистику задержки. Однократная трассировка показывает маршрут в один момент; MTR показывает, как маршрут ведёт себя во времени. WinMTR — версия с графическим интерфейсом для Windows.

Чем mtr отличается от traceroute, ping и WinMTR

Ping измеряет одну конечную точку, traceroute показывает путь одним проходом, mtr делает и то и другое циклически. Как устроен сам механизм с TTL, разобрано в статье про трассировку маршрута — здесь только про инструмент.

Инструмент Что показывает ОС Протоколы Непрерывность
mtrВсе хопы + потери и задержки по каждомуLinux, macOS, BSDICMP, UDP, TCP, SCTPДа, цикл каждую секунду
WinMTRТо же, в окне с кнопками Start/StopWindowsТолько ICMPДа, пока не нажат Stop
traceroute / tracertСписок хопов, 3 замера на каждыйВсеUDP (Linux), ICMP (Windows), TCP по ключуНет, один проход
pingПотери и RTT только до целиВсеICMPДа, но без пути

На сентябрь 2026 актуальная версия mtr — 0.96 (репозиторий traviscross/mtr, июль 2025). Проект ведёт историю с 1997 года («Matt's traceroute» Мэтта Кимбалла). Оригинальный WinMTR от Appnor остановился на версии 0.92 в 2011 году; форк WinMTR-Redux (White-Tiger) в 2014-м выпустил 1.00 с IPv6. Новых версий с тех пор нет ни у одного, оба работают на современных Windows; ставить стоит Redux.

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

mtr есть в репозиториях всех дистрибутивов и в Homebrew; WinMTR ставить не нужно — это один exe-файл. mtr шлёт сырые пакеты, поэтому процессу mtr-packet нужны права: пакет из дистрибутива обычно ставит ему setuid или CAP_NET_RAW; если запуск падает с ошибкой сокета — добавьте sudo.

sudo apt install mtr-tiny        # Debian/Ubuntu, без GTK — для серверов
sudo dnf install mtr             # RHEL / Fedora / Alma / Rocky
brew install mtr               # macOS; запуск через sudo, setuid не ставится

# Windows: WinMTR-Redux — архив с GitHub (White-Tiger/WinMTR),
# распаковать, запустить WinMTR.exe. Установщика нет.

Запуск для отчёта хостеру — одна команда. Интерактивный режим без -r удобен для наблюдения, но в тикет нужен именно report:

mtr -rwc 100 example.ru        # отчёт, широкие имена, 100 циклов
mtr -rwc 100 -n example.ru     # без резолва имён: быстрее, однозначнее
mtr -rwc 100 -T -P 443 example.ru   # TCP SYN на 443 вместо ICMP
mtr -s 1000 -r -c 200 example.ru    # формат Hetzner: 200 циклов по 1000 байт

Какие ключи mtr нужны на практике

Из полусотни опций в man mtr на практике хватает десятка. Ключи ниже сверены с man-страницей mtr.

Ключ Что делает
-r / --reportРежим отчёта: отработать заданное число циклов, напечатать таблицу, выйти
-c NЧисло циклов (пакетов на каждый хоп). По умолчанию 10, для тикета — 100–200
-w / --report-wideНе обрезать длинные имена хостов в отчёте
-n / --no-dnsТолько IP-адреса, без обратного резолва; -b / --show-ips — и имя, и IP
-T / --tcpTCP SYN вместо ICMP Echo. Размер пакета игнорируется
-u / --udpUDP-датаграммы вместо ICMP, как у классического traceroute
-P портЦелевой порт для -T, -u или -S. С ICMP не работает; без -P для TCP берётся порт 80
-s байтРазмер пакета вместе с IP- и ICMP-заголовками. Ловит проблемы с MTU
-z / --aslookupНомер автономной системы рядом с каждым хопом — видно, где кончается ваш провайдер
--json / --csv / --xmlМашиночитаемый вывод для скриптов. JSON есть с версии 0.87, переписан в 0.94

Ключ -T стоит запоминать первым: TCP SYN на порт 443 выглядит для файрволов как начало обычного HTTPS-соединения — вы измеряете тот же путь, которым идут пользователи.

Что означают колонки Loss%, Snt, Last, Avg, Best, Wrst, StDev

Loss% и Avg — две колонки, по которым принимают решение; остальные объясняют, можно ли этим двум верить (Last — RTT последнего пакета, в отчёте почти шум). Главное правило: Loss% на одном хопе сам по себе ничего не значит, смотреть нужно на то, что происходит с потерями после него.

Колонка Смысл Как читать
Loss%Доля пакетов, на которые хоп не ответилВажна только если сохраняется на всех следующих хопах вплоть до цели
SntСколько пакетов отправленоМеньше 100 — статистика ненадёжна: при 10 пакетах один потерянный даёт 10%
AvgСредний RTTОсновная оценка задержки; должна расти к цели монотонно или почти
BestМинимальный RTTБлиже всего к «физике» пути. Best нормальный, Avg высокий — очереди
WrstМаксимальный RTTОдин выброс — не диагноз; смотрите вместе со StDev
StDevСтандартное отклонение RTTДжиттер. Большой StDev при нормальном Avg — нестабильный канал, плохо для звонков и игр

«Нормальной» задержки в абсолютных числах не существует — она определяется расстоянием и числом узлов. Ориентиры ниже — не норматив, а разовый снимок матрицы межточечных задержек Пруфена со страницы /status на 22 сентября 2026 (ICMP между точками мониторинга, не пользовательский трафик):

Направление из Москвы (MSK-1) RTT в снимке
Санкт-Петербург (SPB-1)9,6 мс
Минск (MIN-1)15,3 мс
Новосибирск (NSK-1)44,7 мс
Испания (ESP-1)61,5 мс
Владивосток (VLD-1)106 мс

Если ваш Avg до сервера в Москве из Москвы — 90 мс, это не «медленный интернет», это маршрут, который ушёл через другой регион; ключ -z покажет, через чьи автономные системы.

Паттерн 1: потеря на промежуточном хопе, которая не доходит до цели

Если на хопе 3 Loss 47%, а на хопах 4–6 ноль — это не потеря пакетов, а ограничение частоты ICMP-ответов на роутере. Транзитный трафик через этот узел проходит целиком: следующие хопы получили все 100 пакетов, а они физически прошли через третий.

$ mtr -rwc 100 -n 203.0.113.80        # пример отчёта
HOST: workstation              Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- 192.168.1.1             0.0%   100    0.4   0.5   0.3   2.1   0.2
  2.|-- 100.64.12.1             0.0%   100    2.8   3.1   2.4   9.7   0.9
  3.|-- 198.51.100.33          47.0%   100    3.5   3.6   3.0   6.2   0.5
  4.|-- 198.51.100.65           0.0%   100    4.1   4.4   3.6  11.3   1.0
  5.|-- 203.0.113.1             0.0%   100    5.0   5.2   4.4  12.0   1.1
  6.|-- 203.0.113.80            0.0%   100    5.3   5.5   4.7  13.8   1.2

Причина описана в RFC 1812 (требования к IP-маршрутизаторам, раздел 4.3.2.8): роутеру следует уметь ограничивать частоту генерации ICMP-сообщений об ошибках, включая Time Exceeded — а именно на это сообщение опирается mtr, чтобы «увидеть» промежуточный хоп. Cloudflare называет то же явление control plane policing: ответы ICMP генерирует управляющий процессор роутера, и он защищён лимитом, тогда как транзит идёт через коммутационную плату и лимиту не подчиняется.

Паттерн 2: потеря начинается на хопе N и сохраняется до цели

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

$ mtr -rwc 100 -n 203.0.113.80        # пример отчёта
HOST: workstation              Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- 192.168.1.1             0.0%   100    0.4   0.5   0.3   1.8   0.2
  2.|-- 100.64.12.1             0.0%   100    2.9   3.0   2.5   8.4   0.8
  3.|-- 198.51.100.33           0.0%   100   36.1  36.8  35.9  41.0   0.9
  4.|-- 198.51.100.9           12.0%   100   38.2  41.7  36.9  95.4  10.3
  5.|-- 203.0.113.17           11.0%   100   39.0  42.1  37.2  97.8  10.9
  6.|-- 203.0.113.80           12.0%   100   39.6  42.9  37.8  99.1  11.4

Обратите внимание на StDev: вместе с потерями на хопе 4 подскочил разброс задержки, а Wrst вырос вдвое — типичная перегрузка линка, очередь на интерфейсе то переполняется, то нет. Величину реальной потери оценивайте по наименьшему проценту среди хвостовых хопов (здесь 11%): бо́льшие значения на отдельных строках — сложение реальной потери с ICMP-лимитом самого узла. Документация Linode (Akamai) формулирует то же правило: при расходящихся цифрах верить более поздним хопам.

Паттерн 3: высокая задержка на одном хопе, дальше нормально

Если Avg на хопе 3 — 200 мс, а на хопе 4 — 41 мс, третий хоп ничего не тормозит: пакеты через него доходят до четвёртого за 41 мс. Высокая цифра — время, за которое управляющий процессор роутера сгенерировал ICMP-ответ, а не задержка транзита.

  2.|-- 100.64.12.1             0.0%   100    2.9   3.0   2.5   8.4   0.8
  3.|-- 198.51.100.33           0.0%   100  212.4 198.7  40.1 480.3  71.2
  4.|-- 198.51.100.9            0.0%   100   41.0  41.3  40.2  47.6   1.1
  5.|-- 203.0.113.80            0.0%   100   42.2  42.5  41.0  49.3   1.3

Подсказка в колонке Best: 40,1 мс — когда роутер отвечал без очереди, RTT до него был нормальным. Задержка на транзитном узле становится проблемой, только когда её наследуют все следующие хопы.

Паттерн 4: строка ??? или звёздочки

Хоп с ??? в mtr (или с «No response from host» в WinMTR) не ответил ни разу, но трафик через него идёт — следующие строки заполнены. Это узел, где ICMP Time Exceeded отключён политикой, MPLS-туннель или файрвол на границе сети.

  4.|-- 198.51.100.9            0.0%   100   38.0  38.4  37.1  44.2   1.0
  5.|-- ???                    100.0   100    0.0   0.0   0.0   0.0   0.0
  6.|-- 203.0.113.17            0.0%   100   40.9  41.3  39.8  48.7   1.2
  7.|-- 203.0.113.80            0.0%   100   41.5  41.9  40.3  50.1   1.3

Тревожный вариант только один: ??? начинается с некоторого хопа и продолжается до конца отчёта, включая цель. Тогда путь физически обрывается перед первым ???, и это уже паттерн 2 со 100% потерь.

Паттерн 5: потеря 100% на последнем хопе

Если весь путь чист, а сама цель показывает Loss 100%, сервер почти наверняка жив — его файрвол не отвечает на ICMP Echo. Проверяется тем же mtr с -T и портом сервиса.

$ mtr -rwc 50 -n 203.0.113.80          # ICMP: цель молчит
  6.|-- 203.0.113.1             0.0%    50    5.0   5.2   4.4  12.0   1.1
  7.|-- 203.0.113.80          100.0     50    0.0   0.0   0.0   0.0   0.0

$ mtr -rwc 50 -n -T -P 443 203.0.113.80   # TCP SYN на 443: цель отвечает
  6.|-- 203.0.113.1             0.0%    50    5.1   5.3   4.5  11.7   1.0
  7.|-- 203.0.113.80            0.0%    50    5.4   5.6   4.8  13.2   1.1

Если и TCP даёт 100% на цели при чистом пути — сервер выключен или отбрасывает всё входящее. Почему хост молчит на ICMP при работающем сайте, разобрано в статье про ping и молчащие серверы.

Сводная таблица: паттерн → вывод → что делать

Что в отчёте Вывод Что делать
Loss на хопе N, на N+1 и далее — 0%ICMP-лимит, не проблемаНичего. В тикет не писать
Loss с хопа N сохраняется до целиРеальная потеря на N или линке перед нимОтчёт в обе стороны, -z для владельца AS, тикет провайдеру или хостеру
Avg высокий на одном хопе, дальше низкийПриоритет ICMP на роутереНичего
Avg растёт с хопа N и не падаетПерегрузка или длинный обход после NСравнить Best и Avg; -z — не сменился ли транзит
??? в середине, дальше ответы естьУзел скрыт, трафик идётНичего
??? с хопа N до конца, включая цельПуть обрывается перед NПовторить с -T; отчёт от хостера в обратную сторону
100% только на последнем хопеФайрвол цели режет ICMPПовторить с -T -P 443; если 0% — всё в порядке
Loss 1–3% на всех хопах, включая первыйПроблема на вашей стороне: Wi-Fi, кабель, роутерПрогнать mtr до 192.168.x.1, сменить кабель

Зачем нужен обратный MTR

Отчёт из одной точки показывает только маршрут «туда», а пакеты «обратно» почти всегда идут другим путём — каждая сеть выбирает исходящий маршрут независимо. Поэтому потеря с хопа N физически может происходить на обратном пути, которого в вашем отчёте нет: Loss% на хопе — сумма потерь в обе стороны.

Linode (сейчас Akamai) прямо пишет, что поддержка «часто запрашивает MTR как до сервера, так и от него». Hetzner формулирует жёстче: 200 циклов пакетами по 1000 байт, каждая трассировка в обоих направлениях, результат приложить файлом TXT или HTML с сохранённым выравниванием колонок. Просьба хостеру звучит просто: «прошу выполнить mtr -rwc 200 до моего адреса X.X.X.X с сервера». Свой внешний IP укажите явно — за NAT его не видно.

Отчёт снимайте в момент проблемы, а не после

MTR, снятый через час, когда всё уже прошло, покажет чистый путь и ничего не докажет. Если проблема плавающая, оставьте интерактивный mtr или WinMTR работать 20–30 минут во время «плохого» окна: Snt в несколько тысяч сглаживает ICMP-лимиты, и реальные потери в хвосте отчёта становятся очевидны.

WinMTR: как пользоваться и чего в нём нет

В WinMTR один экран: поле Host, кнопки Start/Stop и Options, четыре кнопки экспорта — Copy Text, Copy HTML, Export TEXT, Export HTML. Ввели адрес, нажали Start, дождались Sent хотя бы 100–200, нажали Stop и Export TEXT — этот файл и прикладывают в тикет.

|------------------------------------------------------------------|
|                        WinMTR statistics                         |
|       Host       -   % | Sent | Recv | Best | Avrg | Wrst | Last |
|------------------------|------|------|------|------|------|------|
|      192.168.1.1 -   0 |  312 |  312 |    0 |    1 |   14 |    1 |
|      100.64.12.1 -   0 |  312 |  312 |    2 |    3 |   21 |    3 |
|    198.51.100.33 -  38 |  312 |  194 |    3 |    4 |   19 |    3 |
|     198.51.100.9 -   0 |  312 |  312 |   36 |   38 |   61 |   37 |
|     203.0.113.80 -   0 |  312 |  312 |   38 |   40 |   66 |   39 |
|________________________|______|______|______|______|______|______|
   (пример экспорта)

Колонки те же, что в mtr, только Recv показан явно, а StDev нет. Читается отчёт по тем же пяти паттернам: здесь на третьем хопе 38% при нулевых потерях дальше — ICMP-лимит.

Возможность mtr 0.96 WinMTR-Redux 1.00
TCP / UDP / SCTP-зондыДа, -T / -u / -S с -PНет, только ICMP
IPv6ДаДа (в оригинале 0.92 — нет)
StDev / джиттерДаНет
Номер AS у хопаДа, -zНет
JSON / CSV для скриптовДаНет, только TEXT и HTML

Отсутствие TCP-режима — главное ограничение: если целевой сервер режет ICMP (паттерн 5), WinMTR покажет 100% на последнем хопе и ничем не поможет. Обход — запустить mtr из WSL: wsl sudo mtr -rwc 100 -T -P 443 example.ru. Штатный tracert в Windows, как и WinMTR, использует только ICMP.

Как следить за потерями постоянно, а не по жалобе

MTR отвечает на вопрос «где теряется» из одной точки и в один момент. Он не скажет, что путь из Новосибирска сломался в три ночи, если вы сидите в Москве. Для этого нужен мониторинг из нескольких регионов: сравнение локаций показывает, что сервер жив, а сломан конкретный маршрут.

В Пруфене за это отвечают два типа проверок: ICMP-пинг отправляет Echo Request и фиксирует ответ и RTT, а проверка порта устанавливает TCP-соединение — аналог mtr -T для серверов, которые на ICMP не отвечают. Обе выполняются из 13 точек мониторинга: 11 в России, а также Минск и Испания. Инцидент открывается по кворуму — когда цель не отвечает из настроенной доли точек, — поэтому сбой маршрута до одной локации не становится ложной тревогой, а виден во вкладке «По локациям».

MTR — для разбора, мониторинг — для обнаружения

Пруфен проверяет ping и TCP-порт с интервалом от 2 минут из 13 точек мониторинга и присылает уведомление в Email, Telegram или Макс, когда хост перестал отвечать; если ресурс так и не поднялся, подключается голосовой звонок. История по каждой локации показывает, из какого региона путь потерялся, — с этим уже можно идти к хостеру и снимать MTR с нужной стороны. Бесплатный план — 5 проверок.

Частые вопросы

Почему хостер просит MTR, а не traceroute?

Traceroute даёт три пакета на хоп — по ним нельзя отличить лимит ICMP от потери и увидеть плавающую проблему. MTR за 100–200 циклов накапливает по каждому узлу статистику, в которой видно, где потери начинаются и сохраняются ли до цели.

Работает ли MTR через VPN?

Работает, но покажет маршрут от VPN-сервера: первым хопом будет туннельный шлюз, участок до него схлопнется в одну строку, и потери внутри туннеля припишутся ему. Для отчёта провайдеру VPN отключите; для диагностики самого VPN снимите два отчёта, с ним и без.

Сколько пакетов нужно для отчёта?

Не меньше 100, Hetzner требует 200. Отчёт с дефолтными 10 циклами бесполезен: один потерянный пакет — уже 10%, и отличить лимит от реальной потери невозможно.

Почему mtr показывает не тот маршрут, что traceroute?

Разные протоколы — разные пути: traceroute в Linux по умолчанию шлёт UDP, mtr — ICMP, а балансировка на роутерах раскидывает потоки по протоколу и портам. Чтобы сравнивать одинаковое, запустите mtr с -u или traceroute с -I; путь пользователей точнее покажет mtr -T -P 443. Как измерить задержку до цели без трассировки, описано в статье про ping-тест.

Была ли статья полезна?

Начните мониторинг прямо сейчас

Бесплатный тариф — до 5 проверок. 150 ₽ на баланс при регистрации.

Создать аккаунт