Діагностика мережі за допомогою MTR
Перш ніж прийти до пункту призначення, пакети приходять з різних вузлів, деталі цих переходів корисні для діагностики проблем з продуктивністю і затримкою в системі. Визначити маршрутизацію переданих пакетів, знати доступність вузлів можна, використовуючи спеціальні команди ping і traceroute.
Утиліта MTR об'єднує в собі відразу дві команди ping і traceroute, тим самим представляє максимальну кількість доступної інформації для аналізу стану мережі. При запуску йде перевірка мережевого з'єднання між локальним хостом із запущеною MTR і віддаленим, через відправку пакетів з низьким TTL, після аналізується час відгуку проміжних маршрутизаторів. MTR часто використовується в роботі на хостингу при виникненні проблем з доступністю віддаленого сервера, для визначення вузла, на якому виникають втрати.
Як встановити MTR?
На відміну від стандартних traceroute і ping, MTR може бути не встановленої за замовчуванням. Процес установки є дуже простим і багато часу не займе. Утиліта доступна для всіх популярних ОС.
Щоб виконати установку MTR використовуйте одну з представлених нижче команд для вашої системи, використовуючи менеджер пакетів:
- Ubuntu / Debian:
sudo apt-get install mtr
- CentOS / Fedora:
yum install mtr
- Arch:
pacman -S mtr
- BSD:
pkg install mtr
- macOS:
Через диспетчер пакетів, той же Homebrew або MacPorts. наприклад:
brew install mtr
- Windows:
Виконується через програму WinMTR, інсталяційний архів можна завантажити з оф.сайту.
Командний рядок та ключі
MTR має наступний синтаксис: спочатку mrt, далі список опцій, і після задається домен IP-адреса/хост віддаленого сервера. Сервіс «Мій IP» допоможе вам дізнатися IP-адресу вашого пристрою, з якого ви підключені до інтернету.
mrt [ключі] домен/IPадреса/хост
Основні ключі:
-h - виклик довідки.
-r / - report - запуск утиліти в режимі звіту в консолі, кількість відправок пакетів задається ключем -c / - report-cycles.
-c / - report-cycles - кількість повних спроб відправки запитів від вихідного сервера до приймаючого.
-u / - tcp - використовувати тип пакетів tcp замість "ICMP ECHO".
-t / - udp - використовувати тип пакетів udp замість "ICMP ECHO".
--no-dns - не вказувати хостнейм, тільки ІР.
Вивід команди і аналіз результатів
Розглянемо результат роботи програми. У прикладі ми запустили 5 циклів відправки пакетів, і через відсутність ключа --no-dns ми можемо спостерігати хостнейм серверів.
[root@fortest ~]# mtr -r google.com.ua -c 5
Start: Sat Jan 30 14:27:06 2021
HOST: fortest.hyperhost.name Loss% Snt Last Avg Best Wrst StDev
1.|-- gw.ipv4.layer6.net 0.0% 5 0.4 0.8 0.4 1.7 0.0
2.|-- speed-ix.google.com 0.0% 5 2.7 2.8 2.6 3.0 0.0
3.|-- 108.170.241.193 0.0% 5 2.7 2.7 2.7 2.8 0.0
4.|-- 108.170.227.3 0.0% 5 3.5 3.7 3.3 4.6 0.0
5.|-- ams16s32-in-f3.1e100.net 0.0% 5 2.7 2.7 2.6 2.7 0.0
- поле HOST вказує на ім'я хоста;
- поле Loss% на відсоток втрат пакетів;
- поле Snt на кількість відправлених пакетів на вузлі;
- поле Last на час затримки останнього відправленого пакета, в мілісекундах;
- поле Avg на середній час затримки, в мілісекундах;
- поле Best на мінімальний час затримки, в мілісекундах;
- поле Wrst на максимальний час затримки, в мілісекундах;
- поле StDev на середньоквадратичне відхилення часу затримки, в мілісекундах.
Після виконання перевірки, завжди потрібно звертати уваги на значення втрат в поле Loss на перших і останніх вузлах. На деяких вузлах втрати можуть ставити 100%, але якщо при цьому пакети проходять далі, це означає, що вузол працює, але у нього закриті відповіді на ICMP пакети.
Якщо втрати на 1-2 вузлах, що в підсумку дає втрати на всіх інших вузлах, потрібно перевіряти налаштування і ситуацію на своєму комп'ютері і роутері, тому що саме на них відбуваються втрати.Якщо втрати на останніх 1-2 вузлах, проблема може бути на вашому сервері (запущено якесь ПЗ, яке заповнює весь канал, ддос-атака на ваш сайт/сервер і т.д.). Якщо у вас віртуальний сервер, тоді, можливо, проблема на всьому фізичному сервері, в подібних випадках краще відразу звертатися в тех. підтримку для перевірки.