Діагностика мережі є важливою частиною роботи будь-якого мережевого/системного адміністратора, яка включає аналіз та усунення різних типів мережевих проблем.
Знання шляху, який IP-пакет проходить між двома точками в мережі, дає багато корисної інформації для навченого ока.
Одним із таких популярних і широко використовуваних кросплатформних інструментів, який допомагає аналізувати мережевий шлях і вирішувати проблеми, є traceroute.
Простіше кажучи, traceroute відстежує шлях IP-пакету між джерелом і одержувачем, надсилаючи пробні пакети (ймовірно, ICMP ECHO або TCP SYN), а потім прослуховуючи їхні відповіді ICMP «перевищено час». TTL цих пакетів навмисно зберігається як один і збільшується на одиницю, доки ми не отримаємо ICMP «порт недоступний», що означає, що ми дісталися до хоста або досягли максимального значення (за замовчуванням як 30 стрибків).
Приклад результату traceroute виглядає приблизно так:
$ traceroute google.com traceroute to google.com (172.217.169.14), 30 hops max, 60 byte packets 1 140.91.200.22 (140.91.200.22) 0.129 ms 140.91.200.19 (140.91.200.19) 0.151 ms 140.91.200.77 (140.91.200.77) 0.114 ms 2 linxbgp1.iwscloud.com (195.66.226.34) 0.735 ms 0.701 ms 1.024 ms 3 195.66.224.125 (195.66.224.125) 0.603 ms 0.591 ms 0.591 ms 4 108.170.246.129 (108.170.246.129) 0.583 ms 0.745 ms 0.714 ms 5 209.85.241.95 (209.85.241.95) 1.576 ms 209.85.241.93 (209.85.241.93) 1.545 ms 209.85.241.95 (209.85.241.95) 1.520 ms 6 lhr25s26-in-f14.1e100.net (172.217.169.14) 0.584 ms 0.547 ms 0.507 ms $
Вихідні дані traceroute за замовчуванням, як показано вище, показують TTL (Time To Live) або час проходження трьох пакетів, максимальну кількість переходів і розмір пакета в байтах, а також IP-адресу та дозволене доменне ім’я, якщо це можливо.
Traceroute дуже корисний для визначення затримок відповіді та маршрутизації між двома вузлами. Крім того, це допомагає визначити точки збою на маршруті до місця призначення. Багато брандмауерів і маршрутизаторів блокують повідомлення traceroute в Інтернеті, тому його вихід не завжди може бути правильним.
До певної міри можна вирішити проблему, змінивши тип повідомлень зонду, але це може допомогти лише певною мірою обійти цю проблему. Тому при використанні цієї утиліти потрібно пам’ятати про це.
Деякі параметри в traceroute вимагають підвищених привілеїв суперкористувача, які дозволяють змінювати необроблені пакети.
Команда tracepath
Red Hat Enterprise Linux або RHEL 8 і похідні дистрибутиви Linux не постачаються з командою traceroute, встановленою за замовчуванням. Це може здатися значною зміною для тих, хто використовує утиліту traceroute у попередніх версіях Red Hat Linux або CentOS.
Але в RHEL8 за замовчуванням доступна така ж ефективна команда під назвою tracepath, яка має подібні можливості, як і аналог tracepath, і готова до використання під час встановлення ОС.
Крім того, tracepath підтримує параметр MTU, який дозволяє визначити значення MTU або максимальну одиницю передачі, яке є найбільшим пакетом, який tracepath може надіслати через мережу.
Зразок результату tracepath наведено нижче для довідки:
$ tracepath 131.153.76.66 1?: [LOCALHOST] pmtu 9000 1: 140.91.200.23 0.416ms asymm 2 1: 140.91.200.23 0.239ms asymm 2 2: 140.91.200.74 0.194ms pmtu 1500 2: oracle-svc071175-lag003322.ip.twelve99-cust.net 1.344ms 3: ldn-b7-link.ip.twelve99.net 19.996ms asymm 2 4: ldn-bb1-link.ip.twelve99.net 0.803ms asymm 5 5: prs-bb1-link.ip.twelve99.net 8.548ms asymm 6 6: mei-b5-link.ip.twelve99.net 18.111ms asymm 5 7: no reply 8: phoenix-svc071932-ic358857.ip.twelve99-cust.net 179.691ms asymm 7 9: 131.153.47.139 163.358ms asymm 8 10: no reply 11: 131.153.76.66 159.071ms !H Resume: pmtu 1500 $
Вихідні дані tracepath за замовчуванням, як показано вище, показують TTL (Time To Live) або час проходження пакета, MTU (Maximum Transmission Unit), який можна надіслати через мережу tracepath і дозволене ім’я домену, де це можливо.
Синтаксис tracepath
Загальний синтаксис команди tracepath:
$ tracepath <options> <destination DNS or IP>
#1. Без прапорів tracepath показує шлях до місця призначення, як показано нижче:
$ tracepath 131.153.56.85 1?: [LOCALHOST] pmtu 9000 1: 140.91.200.77 0.226ms asymm 2 1: 140.91.200.79 0.497ms asymm 2 2: 140.91.200.74 0.216ms pmtu 1500 2: oracle-svc071174-lag003319.ip.twelve99-cust.net 0.691ms 3: slou-b1-link.ip.twelve99.net 1.249ms asymm 2 4: ldn-bb4-link.ip.twelve99.net 0.749ms asymm 3 5: nyk-bb1-link.ip.twelve99.net 80.617ms asymm 8 6: rest-bb1-link.ip.twelve99.net 153.250ms asymm 21 7: nyk-bb1-link.ip.twelve99.net 83.084ms asymm 6 8: nash-bb1-link.ip.twelve99.net 280.770ms asymm 9 9: no reply 10: dls-b23-link.ip.twelve99.net 110.820ms asymm 9 11: phx-b1-link.ip.twelve99.net 131.524ms 12: phx-b1-link.ip.twelve99.net 131.632ms asymm 11 13: giglinx-ic305413-phx-b1.ip.twelve99-cust.net 132.583ms asymm 12 14: no reply 15: giglinx-ic305414-phx-b1.ip.twelve99-cust.net 142.685ms asymm 12 16: PHOENIX-NAP.ear3.Chicago2.Level3.net 135.245ms asymm 4 17: no reply 18: no reply 19: speedchi.phoenixnap.com 133.809ms reached Resume: pmtu 1500 hops 19 back 8 $
#2. Якщо ви хочете надрукувати лише IP-адресу, ви можете використати прапорець -n:
$ tracepath -n 131.153.56.85 1?: [LOCALHOST] pmtu 1500 1: 140.91.200.74 0.393ms asymm 2 1: 140.91.200.21 0.180ms asymm 2 2: 213.248.69.255 0.576ms 3: 213.248.98.246 1.210ms asymm 2 4: 62.115.117.122 1.371ms asymm 3 5: 62.115.133.239 141.920ms asymm 20 6: 62.115.141.244 77.732ms asymm 7 7: no reply 8: 62.115.137.55 881.711ms asymm 9 9: no reply 10: 62.115.137.55 914.855ms asymm 9 11: 62.115.125.97 132.182ms 12: 62.115.125.97 131.686ms asymm 11 13: 62.115.42.6 133.132ms asymm 12 14: no reply 15: 62.115.42.10 143.880ms asymm 12 16: 4.14.13.150 134.869ms asymm 4 17: no reply 18: 4.14.13.150 145.263ms asymm 4 19: 131.153.56.85 133.636ms reached Resume: pmtu 1500 hops 19 back 8 $
#3. Щоб надрукувати як імена хостів, так і IP-адреси, використовуйте прапорець -b:
$ tracepath -b 131.153.56.85 1?: [LOCALHOST] pmtu 1500 1: 140.91.200.19 (140.91.200.19) 0.197ms asymm 2 1: 140.91.200.74 (140.91.200.74) 0.141ms asymm 2 2: oracle-svc071175-lag003322.ip.twelve99-cust.net (213.248.98.247) 1.186ms 3: slou-b1-link.ip.twelve99.net (213.248.98.246) 10.273ms asymm 2 4: ldn-bb4-link.ip.twelve99.net (62.115.141.246) 0.941ms asymm 3 5: prs-bb2-link.ip.twelve99.net (62.115.133.239) 141.858ms asymm 20 6: rest-bb1-link.ip.twelve99.net (62.115.141.244) 76.210ms asymm 7 7: no reply 8: rest-bb1-link.ip.twelve99.net (62.115.141.244) 89.209ms asymm 7 9: no reply 10: dls-b23-link.ip.twelve99.net (62.115.136.119) 110.335ms asymm 9 11: phx-b1-link.ip.twelve99.net (62.115.125.97) 132.091ms 12: phx-b1-link.ip.twelve99.net (62.115.125.97) 131.844ms asymm 11 13: giglinx-ic315451-phx-b1.ip.twelve99-cust.net (80.239.195.78) 142.975ms asymm 14 14: no reply 15: no reply 16: PHOENIX-NAP.ear3.Chicago2.Level3.net (4.14.13.150) 135.233ms asymm 4 17: no reply 18: no reply 19: speedchi.phoenixnap.com (131.153.56.85) 133.871ms reached Resume: pmtu 1500 hops 19 back 8 $
#4. Щоб установити настроюване значення довжини пакета замість використання значення за замовчуванням tracepath, тобто 65535, укажіть значення з прапорцем -l:
$ tracepath -l 300 131.153.56.85 1: 140.91.200.77 0.405ms asymm 2 2: oracle-svc071174-lag003319.ip.twelve99-cust.net 0.589ms 3: slou-b1-link.ip.twelve99.net 1.448ms asymm 2 4: ldn-bb4-link.ip.twelve99.net 0.960ms asymm 3 5: nyk-bb1-link.ip.twelve99.net 81.564ms asymm 8 6: rest-bb1-link.ip.twelve99.net 78.414ms asymm 7 7: nyk-bb1-link.ip.twelve99.net 84.286ms asymm 6 8: rest-bb1-link.ip.twelve99.net 87.529ms asymm 7 9: no reply 10: dls-b23-link.ip.twelve99.net 110.534ms asymm 9 11: phx-b1-link.ip.twelve99.net 131.449ms 12: phx-b1-link.ip.twelve99.net 131.303ms asymm 11 13: giglinx-ic315451-phx-b1.ip.twelve99-cust.net 143.059ms asymm 14 14: phx-b1-link.ip.twelve99.net 142.348ms asymm 11 15: giglinx-ic--305416-phx-b1.ip.twelve99-cust.net 143.554ms asymm 12 16: PHOENIX-NAP.ear3.Chicago2.Level3.net 134.790ms asymm 4 17: no reply 18: PHOENIX-NAP.ear3.Chicago2.Level3.net 145.926ms asymm 4 19: speedchi.phoenixnap.com 133.736ms reached Resume: pmtu 300 hops 19 back 8 $
#5. Ми також можемо встановити початковий порт призначення за допомогою прапора -p як:
$ tracepath -p 9000 131.153.56.85 1?: [LOCALHOST] pmtu 1500 1: 140.91.200.18 0.160ms asymm 2 1: 140.91.200.74 0.177ms asymm 2 2: oracle-svc071175-lag003322.ip.twelve99-cust.net 1.151ms 3: slou-b1-link.ip.twelve99.net 1.727ms asymm 2 4: no reply 5: nyk-bb1-link.ip.twelve99.net 81.357ms asymm 8 6: rest-bb1-link.ip.twelve99.net 78.325ms asymm 7 7: no reply 8: rest-bb1-link.ip.twelve99.net 87.908ms asymm 7 9: no reply 10: dls-b23-link.ip.twelve99.net 109.797ms asymm 9 11: phx-b1-link.ip.twelve99.net 132.036ms 12: dls-b23-link.ip.twelve99.net 121.404ms asymm 9 13: giglinx-ic315450-phx-b1.ip.twelve99-cust.net 136.322ms asymm 12 14: phx-b1-link.ip.twelve99.net 142.596ms asymm 11 15: no reply 16: PHOENIX-NAP.ear3.Chicago2.Level3.net 135.182ms asymm 4 17: no reply 18: no reply 19: speedchi.phoenixnap.com 133.562ms reached Resume: pmtu 1500 hops 19 back 8 $
#6. Максимальну кількість переходів, яка за замовчуванням встановлено як 30, можна налаштувати за допомогою прапорця -m, як показано нижче:
$ tracepath -m 20 131.153.56.85 1?: [LOCALHOST] pmtu 1500 1: 140.91.200.18 0.175ms asymm 2 1: 140.91.200.77 0.169ms asymm 2 2: oracle-svc071174-lag003319.ip.twelve99-cust.net 0.669ms 3: slou-b1-link.ip.twelve99.net 2.443ms asymm 2 4: no reply 5: prs-bb2-link.ip.twelve99.net 142.778ms asymm 20 6: rest-bb1-link.ip.twelve99.net 76.756ms asymm 7 7: no reply 8: rest-bb1-link.ip.twelve99.net 89.272ms asymm 7 9: no reply 10: dls-b23-link.ip.twelve99.net 110.378ms asymm 9 11: phx-b1-link.ip.twelve99.net 132.582ms 12: phx-b1-link.ip.twelve99.net 132.135ms asymm 11 13: phx-b1-link.ip.twelve99.net 142.154ms asymm 11 14: no reply 15: giglinx-ic305414-phx-b1.ip.twelve99-cust.net 142.298ms asymm 12 16: PHOENIX-NAP.ear3.Chicago2.Level3.net 134.362ms asymm 4 17: no reply 18: no reply 19: speedchi.phoenixnap.com 133.474ms reached Resume: pmtu 1500 hops 19 back 8 $
Зауважте, що tracepath не підтримує підвищені привілеї суперкористувача, такі як traceroute, оскільки він не підтримує розширену функцію модифікації пакетів.
Резюме
У цій статті підсумовано використання команди traceroute, як вона використовується для усунення несправностей, пов’язаних з мережею, і як ми можемо виконувати ті самі завдання в системах RHEL8 за допомогою команди tracepath.
Щоб дізнатися більше про ці команди, скористайтеся відповідною довідковою сторінкою інструменту.
$ man traceroute $ man tracepath