0887 371 498 support@itservice-bg.net
mtr в Linux: traceroute и ping в едно
07.12.2023 · Самуил Арсов · Debian, Linux commands, Ubuntu

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 или самото приложение.