Команда Linux mtr
mtr (My Traceroute) — это сочетаниеtracerouteиpingфункций мощного инструмента сетевой диагностики. Он позволяет отображать путь передачи пакетов данных в сети в реальном времени и предоставлять подробную статистическую информацию. Это мощный инструмент для сетевых администраторов и разработчиков для устранения сетевых проблем.
Основные возможности mtr
- Обновление в реальном времени: непрерывное отображение информации о маршрутизации и задержке
- Двусторонняя диагностика: позволяет одновременно отображать пути в направлениях отправки и приёма
- Комплексная статистика: предоставляет ключевые показатели, такие как процент потерь пакетов и задержка
- Визуальный интерфейс: интерактивно отображает состояние сетевого пути
Установка команды mtr
Установка в распространённых дистрибутивах Linux
Пример
sudo apt-get install mtr
# Системы CentOS/RHEL
sudo yum install mtr
# Системы Fedora
sudo dnf install mtr
# Системы Arch Linux
sudo pacman -S mtr
Установка в macOS
Пример
brew install mtr
Базовый синтаксис mtr
Базовый формат синтаксиса команды mtr выглядит следующим образом:
mtr [选项] 目标主机
Описание общих опций и параметров
| Опция | Описание |
|---|---|
-4 |
Принудительное использование IPv4 |
-6 |
Принудительно использовать IPv6 |
-c COUNT |
Задать количество отправляемых ping-пакетов |
-i SECONDS |
Задать интервал времени ping (секунды) |
-n |
Не разрешать имена хостов, отображать IP-адреса |
-r |
Режим генерации отчёта (неинтерактивный) |
-s BYTES |
Задать размер ping-пакета (байты) |
-w |
Режим широкого вывода, отображать полные имена хостов |
-z |
Отображать номера AS (автономной системы) |
--report |
Эквивалентно-r, завершает работу после генерации отчёта |
--report-wide |
Отчёт в широком формате |
Примеры использования mtr
Базовое использование: диагностика сетевого пути до целевого хоста
mtr google.com
После выполнения будет отображён интерфейс, обновляющийся в реальном времени, содержащий следующую информацию:
- Количество переходов (Hop)
- Имя хоста или IP-адрес
- Уровень потери пакетов (Loss%)
- Последняя задержка (Last)
- Средняя задержка (Avg)
- Лучшая задержка (Best)
- Худшая задержка (Wrst)
- Стандартное отклонение (StDev)
Режим формирования отчёта (подходит для вызова из скриптов)
mtr -r -c 10 google.com > mtr_report.txt
Эта команда отправит 10 ping-пакетов на google.com, а затем сохранит результаты в файл mtr_report.txt.
Установить размер ping-пакета и интервал
mtr -s 100 -i 0.5 example.com
Эта команда устанавливает размер каждого пакета ping равным 100 байтам, а интервал времени — 0.5 секунды.
Также отображать номер AS
mtr -z example.com
Эта команда отобразит номер AS (автономной системы) каждого узла в результатах, помогая определить сетевую принадлежность.
Интерпретация вывода mtr
Объяснение интерактивного интерфейса
При запуске mtr вы увидите вывод, подобный следующему:
My traceroute [v0.92]
example.com (192.0.2.1) 2022-01-01T12:00:00+0000
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 192.168.1.1 0.0% 10 2.1 2.2 1.9 2.5 0.2
2. 10.0.0.1 0.0% 10 5.3 5.5 5.1 6.0 0.3
3. 203.0.113.1 0.0% 10 15.2 15.5 15.0 16.1 0.4
4. example.com 0.0% 10 20.1 20.3 20.0 21.0 0.3
Объяснение ключевых метрик
- Loss%: процент потерь пакетов; чем выше значение, тем нестабильнее сеть
- Snt: количество отправленных зондирующих пакетов
- Last: задержка последнего зондирования (миллисекунды)
- Avg: средняя задержка (миллисекунды)
- Best: наилучшая задержка (миллисекунды)
- Wrst: Наихудшая задержка (миллисекунды)
- StDev: Стандартное отклонение задержки, отражающее стабильность сети
Расширенное использование и советы
1. Одновременно трассировать пути IPv4 и IPv6
Пример
mtr -6 example.com # Путь IPv6
2. Использовать TCP SYN вместо ICMP (для обхода некоторых брандмауэров)
mtr --tcp example.com
3. Указать исходный порт (для тестирования конкретного маршрута)
mtr --port 8080 example.com
4. Сохранить результаты в формате CSV
mtr --csv example.com > result.csv
5. Сравнить состояние сети в двух временных точках
Пример
# Через некоторое время
mtr -c 60 -i 1 -w example.com > result2.txt
diff result1.txt result2.txt
Устранение распространённых проблем
1. Проблема высокой потери пакетов
Если на определённом узле наблюдается высокая потеря пакетов:
- Возможно, узел перегружен
- Возможно, это проблема конфигурации сетевого устройства
- Возможно, это проблема взаимодействия между интернет-провайдерами
2. Проблема внезапного увеличения задержки
Если задержка внезапно увеличивается на определённом узле:
- Возможно, это перегрузка сети
- Возможно, это изменение маршрутов
- Возможно, это проблема производительности устройства
3. Отображение звёздочки (*)
Если вместо IP-адреса вы видите звёздочку (*):
- Возможно, узел не отвечает на ICMP-запросы
- Возможно, межсетевой экран заблокировал пробные пакеты
Сравнение mtr с другими инструментами
| Инструмент | Обновления в реальном времени | Двунаправленная диагностика | Статистика потерь пакетов | Статистика задержек | Интерактивный интерфейс |
|---|---|---|---|---|---|
| ping | ❌ | ❌ | ✔️ | ✔️ | ❌ |
| traceroute | ❌ | ❌ | ❌ | ✔️ | ❌ |
| mtr | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Практические упражнения
- Используйте mtr для проверки сетевого пути к веб-сайтам, которые вы часто посещаете
- Сравните разницу в качестве сети между Wi-Fi и проводными подключениями
- Попробуйте протестировать производительность сети с разными размерами пакетов ping
- Настройте запланированную задачу для периодического создания отчётов о качестве сети
Пример
(crontab -l 2>/dev/null; echo "0 2 * * * /usr/sbin/mtr -r -c 100 google.com > ~/network_report_$(date +%Y%m%d).txt") | crontab -
Итог
mtr — мощный инструмент сетевой диагностики, который сочетает преимущества traceroute и ping, предоставляя возможности комплексного анализа сетевого пути в реальном времени. Прочитав эту статью, вы сможете:
- Понять основные принципы и методы работы mtr
- Умело использовать mtr для диагностики сетевых проблем
- Интерпретируйте различные показатели, выводимые mtr
- Применяйте mtr для решения реальных сетевых проблем
Освоение команды mtr значительно повысит вашу эффективность при устранении сетевых проблем, и это навык, которым должен обладать каждый системный администратор и разработчик.
Другие расширения
Энциклопедия команд Linux