Как да използвате командата traceroute в Linux

Можете да използвате командата traceroute на Linux, за да забележите бавния етап от пътуването на мрежовия пакет и да отстраните неизправности при бавни мрежови връзки. Ще ви покажем как!

Как работи traceroute

Когато оцените как работи traceroute, това прави разбирането на резултатите много по-лесно. Колкото по-сложен е маршрутът a мрежов пакет трябва да предприеме, за да стигне до местоназначението си, толкова по-трудно е да се определи къде може да възникнат забавяния.

Малка организация локална мрежа (LAN) може да е сравнително проста. Вероятно ще има поне един сървър и рутер или два. Сложността се увеличава на a широкообхватна мрежа (WAN), който комуникира между различни места или чрез интернет. След това вашият мрежов пакет среща (и се препраща и насочва от) много хардуер, като рутери и шлюзове.

Заглавките на метаданните на пакети данни описват тяхната дължина, откъде идват, къде отиват, протокола, който използва и т.н. Спецификацията на протокола определя заглавката. Ако можете да идентифицирате протокола, можете да определите началото и края на всяко поле в заглавката и да прочетете метаданните.

traceroute използва TCP/IP пакет от протоколи и изпраща Протокол за потребителска дейтаграма пакети. Заглавката съдържа Време за живот (TTL), което съдържа осем-битова стойност на цяло число. Въпреки това, което подсказва името, то представлява брой, а не продължителност.

Пакетът пътува от своя произход до местоназначението си чрез рутер. Всеки път, когато пакетът пристигне в рутер, той намалява брояча на TTL. Ако стойността на TTL някога достигне единица, рутерът, който получава пакета, намалява стойността и забелязва, че вече е нула. След това пакетът се изхвърля и не се препраща към следващия хоп от пътуването си, защото е „изтекъл“.

Рутерът изпраща ан Протокол за управление на интернет съобщения (ICMP) Превишено време съобщение обратно към произхода на пакета, за да го уведомите, че времето за изчакване на пакета е изтекло. Съобщението Time Exceeded съдържа оригиналната заглавка и първите 64 бита от данните на оригиналния пакет. Това е дефинирано на страница шеста от Искане за коментар 792.

Така че, ако traceroute изпрати пакет, но след това зададе TTL стойността на единица, пакетът ще стигне само до първия рутер, преди да бъде изхвърлен. Той ще получи съобщение за превишено ICMP време от рутера и може да записва времето, необходимо за двупосочното пътуване.

  Как да използвате Tidal Music от командния ред на Linux

След това повтаря упражнението с TTL, зададен на 2, което ще се провали след два скока. traceroute увеличава TTL до три и опитва отново. Този процес се повтаря, докато се достигне дестинацията или се тества максималният брой хопове (30, по подразбиране).

Някои рутери не играят добре

Някои рутери имат грешки. Те се опитват да препращат пакети с TTL нула, вместо да ги изхвърлят и да издигат съобщение за превишаване на ICMP време.

Според Cisco, някои доставчици на интернет услуги (ISP) ограничават скоростта на броя на ICMP съобщенията, които техните рутери предават.

Някои устройства са конфигурирани никога да не изпращат ICMP пакети. Това често се прави, за да се гарантира, че устройството не може неволно да бъде принудено да участва в a разпределен отказ от услуга, като смърф атака.

traceroute има изчакване по подразбиране за отговори от пет секунди. Ако не получи отговор в рамките на тези пет секунди, опитът се прекратява. Това означава, че отговорите от много бавни рутери се игнорират.

Инсталиране на traceroute

traceroute вече беше инсталиран на Fedora 31, но трябва да бъде инсталиран на Manjaro 18.1 и Ubuntu 18.04. За да инсталирате traceroute на Manjaro, използвайте следната команда:

sudo pacman -Sy traceroute

В

За да инсталирате traceroute в Ubuntu, използвайте следната команда:

sudo apt-get install traceroute

В

Използване на traceroute

Както споменахме по-горе, целта на traceroute е да предизвика отговор от рутера при всеки преход от вашия компютър до местоназначението. Някои може да са стиснати и да не издават нищо, докато други вероятно ще разлеят зърната без притеснения.

Като пример ще изпълним трасиране до Замъкът Бларни уебсайт в Ирландия, дом на известните Бларни Стоун. Легендата разказва, че ако целунете камъка Бларни, ще бъдете благословени с „дара на гавра“. Да се ​​надяваме, че рутерите, които срещаме по пътя, са подобаващо красноречиви.

Набираме следната команда:

traceroute www.blarneycastle.ie

В

Първият ред ни дава следната информация:

Дестинацията и нейния IP адрес.
Броят хмел traceroute ще опита, преди да се откаже.
Размерът на UDP пакетите, които изпращаме.

Всички останали редове съдържат информация за един от хмелите. Преди да се задълбочим в подробностите обаче, можем да видим, че има 11 прехода между нашия компютър и уебсайта на Blarney Castle. Хоп 11 също ни казва, че сме достигнали целта си.

  6-те най-добри инструменти за копаене на криптовалута за Linux

Форматът на всяка скачаща линия е както следва:

Името на устройството или, ако устройството не се идентифицира, IP адреса.
IP адресът.
Времето, което отне обиколката за всеки от трите теста. Ако тук има звездичка, това означава, че няма отговор за този тест. Ако устройството изобщо не отговори, ще видите три звездички и няма име на устройството или IP адрес.

Нека прегледаме какво имаме по-долу:

Хоп 1: Първото пристанище на повикване (без каламбур) е DrayTek Vigor Router в локалната мрежа. Ето как нашите UDP пакети напускат локалната мрежа и влизат в интернет.
Хоп 2: Това устройство не отговори. Може би е конфигуриран никога да не изпраща ICMP пакети. Или може би отговори, но беше твърде бавен, така че времето за изчакване на traceroute изтече.
Хоп 3: Устройство отговори, но не получихме името му, а само IP адреса. Имайте предвид, че в този ред има звездичка, което означава, че не сме получили отговор и на трите заявки. Това може да означава загуба на пакет.
Хмел 4 и 5: Още анонимен хмел.
Хоп 6: Тук има много текст, защото различно отдалечено устройство обработва всяка от трите ни UDP заявки. Бяха отпечатани (доста дългите) имена и IP адреси за всяко устройство. Това може да се случи, когато срещнете „богато населена“ мрежа, в която има много хардуер за обработка на голям обем трафик. Този хоп е в рамките на един от най-големите доставчици на интернет услуги в Обединеното кралство. Така че би било малко чудо, ако едно и също парче отдалечен хардуер обработи нашите три заявки за връзка.
Хоп 7: Това е скокът, който нашите UDP пакети направиха, когато напуснаха мрежата на интернет доставчиците.
Хоп 8: Отново получаваме IP адрес, но не и името на устройството. И трите теста се върнаха успешно.
Хмел 9 и 10: Още два анонимни хмела.
Хоп 11: Пристигнахме в уебсайта на замъка Бларни. Замъкът е в Корк, Ирландия, но според Геолокация на IP адрес, уебсайтът е в Лондон.

И така, това беше смесена чанта. Някои устройства играха на топка, някои отговориха, но не ни казаха имената си, а други останаха напълно анонимни.

Въпреки това стигнахме до дестинацията, знаем, че е на 11 хопа, а времето за пътуването е 13,773 и 14,715 милисекунди.

Скриване на имена на устройства

Както видяхме, понякога включването на имена на устройства води до претрупан дисплей. За да улесните прегледа на данните, можете да използвате опцията -n (без съпоставяне).

  Как да настроите шестнадесетичен редактор на Kali Linux

За да направим това с нашия пример, въвеждаме следното:

traceroute -n blarneycastle.ie

В

Това улеснява избирането на големи числа за времена за двупосочно пътуване, които биха могли да показват затруднение.

Хоп 3 започва да изглежда малко подозрителен. Миналия път отговори само два пъти, а този път отговори само веднъж. В този сценарий това е извън нашия контрол, разбира се.

Въпреки това, ако проучвате вашата корпоративна мрежа, би си струвало да копаете малко по-дълбоко в този възел.

Задаване на стойност за изчакване на трасиране

Може би, ако удължим периода на изчакване по подразбиране (пет секунди), ще получим повече отговори. За да направим това, ще използваме опцията -w (време за изчакване), за да я променим на седем секунди. (Обърнете внимание, че това е число с плаваща запетая.)

Набираме следната команда:

traceroute -w 7.0 blarneycastle.ie

В

Това не направи голяма разлика, така че отговорите вероятно изтичат. Вероятно анонимните хмели са целенасочено потайни.

Задаване на броя на тестовете

По подразбиране traceroute изпраща три UDP пакета към всеки хоп. Можем да използваме опцията -q (брой заявки), за да коригираме това нагоре или надолу.

За да ускорим теста за трасиране, въвеждаме следното, за да намалим броя на пакетите UDP сонда, които изпращаме до един:

traceroute -q 1 blarneycastle.ie

В

Това изпраща една сонда към всеки хоп.

Задаване на начална TTL стойност

Можем да зададем първоначалната стойност на TTL на нещо различно от едно и да пропуснем някои скокове. Обикновено стойностите на TTL се задават на една за първия набор от тестове, две за следващия набор от тестове и т.н. Ако го зададем на пет, първият тест ще се опита да стигне до пет и да пропусне скокове от едно до четири.

Тъй като знаем, че уебсайтът Blarney Castle е на 11 хопа от този компютър, въвеждаме следното, за да преминем направо към Hop 11:

traceroute -f 11 blarneycastle.ie

В

Това ни дава хубав, съкратен отчет за състоянието на връзката с дестинацията.

Бъди разумен

traceroute е чудесен инструмент за изследване на мрежовото маршрутизиране, проверка на скоростите на връзката или идентифициране на тесни места. Windows също има команда tracert, която функционира по подобен начин.

Въпреки това, не искате да бомбардирате неизвестни устройства с торенти от UDP пакети и внимавайте да включвате traceroute в скриптове или задачи без надзор.

Проследяването на натоварването, което може да постави в мрежа, може да повлияе неблагоприятно на нейната производителност. Освен ако не сте в ситуация, в която се поправите сега, може да искате да го използвате извън нормалното работно време.