linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
  • Введение
  • Уроки
  • How it works
  • Симулятор
  • База знаний
  • Собеседование
Index
Categories
All entries
Footer
linuxlab-УчебникиЦеныО платформеКонфиденциальность и куки
Copyright © 2026 LinuxLab. Все права защищены.
home/linux/kb/Команды/cmd-mtr

kb/commands ── Команды ── beginner

mtr - traceroute + ping в одном

mtr = traceroute + ping. Непрерывно опрашивает каждый hop, показывает loss% и latency. Помогает за секунду найти где в маршруте теряются пакеты или растёт задержка.

view as markdownaka: mtr, my-traceroute

Зачем mtr вместо traceroute

Обычный traceroute делает по 3 проба на каждый hop и показывает один результат. Если потеря 50% - traceroute может её пропустить.

mtr опрашивает все hop'ы непрерывно (раз в секунду), накапливает статистику и показывает в реальном времени:

  • loss % на каждом hop
  • последний RTT, среднее, лучшее, худшее, jitter
  • количество отправленных проб

Это первый инструмент при жалобах «лагает», «теряются пакеты».

Минимальный запуск

bash
mtr example.com

Интерактивный режим: каждую секунду строки обновляются. q - выйти.

Типичный вывод:

HOST: myhost                Loss%   Snt   Last   Avg  Best  Wrst
 1. _gateway                 0.0%    20    0.5   0.6   0.4   1.2
 2. 10.0.0.1                 0.0%    20    1.1   1.3   1.0   2.5
 3. provider-router          0.0%    20    5.2   5.4   5.1   8.0
 4. ???                     100.0%   20    0.0   0.0   0.0   0.0
 5. core1.isp.net            5.0%    20   12.1  12.5  11.8  15.0
 6. example.com             5.0%    20   25.3  25.5  24.9  28.0

Hop 4 = ICMP не отвечает (фильтруется), но трафик через него идёт - loss 5% на hop 5 и 6 настоящий, на hop 4 не считаем.

Как читать loss

  • Loss растёт постепенно с одного hop'а - этот hop теряет пакеты (или его аплинк)
  • Loss появляется и держится одинаковый дальше - проблема на том hop, где впервые появился
  • Loss 100% на hop, но 0% на следующих - просто rate-limit ICMP, нормально, не баг

Опции

-n - без DNS-резолва

bash
mtr -n 8.8.8.8

Не делает [[dns-resolution|reverse DNS]] для каждого hop'а - быстрее, меньше шума на медленном DNS.

-r - report mode (без интерактива)

bash
mtr -r -c 100 example.com > report.txt

Сделать 100 проб, вывести один раз и выйти. Удобно скрипту или в issue.

-c N - количество проб

По дефолту бесконечно (в интерактиве). С -c 10 сделает 10 раундов.

-T - TCP вместо ICMP

bash
mtr -T -P 443 example.com

Многие firewall'ы блокируют ICMP, но пускают TCP. -T -P 443 шлёт TCP SYN на 443 - реалистичная картина для веб-трафика.

-u - UDP

bash
mtr -u -P 53 example.com

По дефолту traceroute классический работал через UDP - mtr с -u делает то же.

-i N - интервал

bash
mtr -i 0.5 example.com

Раз в 0.5 секунды - чаще проб. Для быстрого набора статистики.

-s N - размер пакета

bash
mtr -s 1500 example.com

Шлём 1500-байтные пакеты (или больше) - проверка MTU и фрагментации.

JSON-вывод

bash
mtr -j -r -c 10 example.com > mtr.json

Структурированный вывод. Удобно автоматическому мониторингу.

Что mtr не покажет

  • Возвратный путь (asymmetric routing) - mtr видит только прямой. Loss может быть на обратной дороге. Запусти mtr с целевого хоста обратно к источнику для проверки.
  • L7-проблемы - если приложение виснет на TCP-handshake'е, а не на pure latency, mtr этого не увидит.
  • QoS / shaping - провайдер может приоритизировать ICMP отдельно от TCP. Тогда mtr -T -P 443 покажет другую картину.

Когда что-то пошло не так

  • Loss с первого hop'а - проблема на твоей машине / её аплинке
  • Loss с какого-то hop'а внутри ISP - жалобу сетевикам ISP, не починишь
  • Loss только в обратку - mtr -T к целевому, потом mtr с целевого хоста сюда
  • «Loss 100% на hop X, но всё работает» - просто фильтрация ICMP, не настоящая потеря
  • mtr не запускается - root нужен для raw socket; либо setuid, либо setcap cap_net_raw+ep $(which mtr)

Альтернативы

  • traceroute - классика, без realtime stats
  • pathping - аналог mtr в Windows
  • tcptraceroute - traceroute через TCP SYN
  • nexttrace - современный, быстрый, JSON-output
  • WhatsMyMTR - онлайн-сервис когда нет доступа к консоли

§ команды

bash
mtr example.com

Интерактивно. q для выхода

bash
mtr -rn -c 100 example.com

Report mode, без DNS, 100 проб - удобно для бага в issue

bash
mtr -T -P 443 example.com

TCP-проверка через 443; обходит ICMP-фильтрацию

bash
mtr -i 0.2 -c 50 example.com

Быстрая 10-секундная диагностика - 50 проб с шагом 200мс

bash
mtr -j -r -c 10 example.com

JSON-вывод для скриптов и мониторинга

§ см. также

  • tracerouteTraceroute - как увидеть путь пакета через интернетУтилита, показывающая каждый роутер на пути до удалённого хоста. Работает через хитрый трюк: шлёт пакеты с **возрастающим TTL** (1, 2, 3, ...) и собирает ответы «time exceeded» от роутеров, которые дропают такие пакеты.
  • icmpICMPICMP - служебный протокол поверх IP для control-сообщений: echo (ping), destination-unreachable, time-exceeded (используется traceroute), MTU discovery. Не для данных.
  • default-gatewayDefault gateway - выход из своей сетиIP-адрес роутера в твоей подсети, куда стек шлёт пакеты для всех адресов, которые **не лежат локально**. Один gateway на хост - но в multi-homed сетапах их может быть несколько.
  • routing-tableRouting tableТаблица маршрутизации - список «куда направлять пакеты с таким destination». Самая длинная (longest-prefix) подходящая запись выигрывает.
  • conntrackConntrack - память Linux о всех сетевых соединенияхПодсистема ядра Linux, которая помнит каждое активное соединение. Без неё NAT не развернёт ответ на нужный приватный IP, а фаервол не отличит «новый коннект» от «уже установленного». Видна в `/proc/net/nf_conntrack`.
Footer
linuxlab-УчебникиЦеныО платформеКонфиденциальность и куки
Copyright © 2026 LinuxLab. Все права защищены.