mtr в Linux: traceroute и ping в едно
Командата mtr е комбинация от traceroute и ping в един инструмент. Показва целия път до отдалечен хост и същевременно мери закъснението и загубите на всеки междинен възел, обновявайки числата в реално време. За търсене на проблем в мрежа това е първата команда, която пускам.
sudo apt install mtr # текстов режим
sudo apt install mtr-tiny # без графичния интерфейс
Стартиране
mtr google.com
Целевият хост може да е име или IP адрес. Изходът се обновява непрекъснато, докато не го спрете с q.
Как се чете изходът
Това е половината от работата с mtr — колоните значат следното:
Host Loss% Snt Last Avg Best Wrst StDev
1. 192.168.1.1 0.0% 50 0.4 0.5 0.3 1.2 0.1
2. 87.246.47.17 0.0% 50 1.1 1.3 0.9 4.5 0.4
3. 195.68.208.1 12.0% 50 8.2 9.1 7.8 45.0 6.2
4. 213.155.66.1 0.0% 50 9.4 9.6 9.1 11.0 0.3
- Loss% — процент изгубени пакети към този възел
- Snt — колко пакета са изпратени дотук
- Last / Avg / Best / Wrst — последно, средно, най-добро и най-лошо време за отговор
- StDev — разсейване на времената; голяма стойност значи нестабилна връзка дори при добро средно
Капанът, който подвежда всички
На реда 3 по-горе се вижда 12% загуба, а на реда 4 — нула. Изкушението е да се обвини третият възел. Почти винаги това е грешка.
Междинните маршрутизатори често ограничават нарочно колко ICMP отговора генерират — това е защитна мярка, не повреда. Загубата се вижда само за пакетите, адресирани до самия рутер; трафикът, който минава през него, не страда.
Правилото: загуба на междинен възел, която не се пренася до последния ред, е фалшива тревога. Истинският проблем е този, който започва на някой възел и остава до края на пътя.
Полезните опции
-r отчет вместо интерактивен режим — за прилагане към сигнал
-c 100 брой пакети преди спиране (с -r)
-n без обратни DNS заявки; много по-бърз изход
-b показва и името, и адреса
-T TCP вместо ICMP — минава там, където ICMP е филтриран
-P 443 порт при TCP режим
-u UDP пакети
-4 / -6 принудително IPv4 или IPv6
-s 1400 размер на пакета — за търсене на MTU проблеми
Комбинацията за отчет, който се праща на доставчик или се прилага към заявка:
mtr -rnc 100 8.8.8.8
Когато ICMP е филтриран
Някои мрежи блокират ICMP изцяло и mtr показва звездички по целия път, при положение че връзката работи. Тогава се минава на TCP към порт, който със сигурност е отворен:
mtr -T -P 443 example.com
Кога mtr не помага
mtr показва пътя в едната посока — от вас към целта. Обратният път може да е съвсем различен и проблемът да е там. Затова при спор с доставчик се пуска mtr и от двете страни; един изход рядко доказва нещо сам по себе си.
Не помага и при проблем на приложно ниво: ако mtr е чист, а сайтът не се отваря, търсете нагоре — в DNS, TLS или самото приложение.