Командата traceroute се използва в Линукс, за да начертае пътуването, което пакетът от информация поема от своя източник до местоназначението си. Една употреба за traceroute е да се намери, когато загуба на данни се случва в мрежата, което може да означава възел, който е надолу.
Тъй като всеки хоп в записа отразява нов сървър или маршрутизатор между създадения компютър и планираната цел, прегледът на резултатите от сканирането на traceroute ви позволява да идентифицирате бавни точки, които могат да повлияят неблагоприятно на мрежовия трафик.
Как работи
Оценяването на конкретния маршрут, който трае мрежовият трафик (или намирането на недобросъвестния шлюз, който изхвърля пакетите ви), представя няколко предизвикателства за отстраняване на неизправности. Traceroute използва IP протокола време за живот за да поискате отговор ICMP TIME_EXCEEDED от всеки шлюз по пътя към целевия хост.
Единственият параметър, който трябва да включите, когато изпълнявате командата traceroute, е името на хоста или IP адреса на местоназначението.
Traceroute синтаксис и превключватели
проследяващи -dFInrvx -f first_ttl -g врата -i iface -м max_ttl -p порт -q nqueries -с src_addr -T TOS -w waittime -Z pausemsecs домакин packetlen
Докато горното е как командата traceroute трябва да бъде изписана, за да работи в командния ред, изпълнението или изхода на командата може да се промени, като се посочат един или повече опционални превключватели.
- Г: Задайте началното време за изпълнение, използвано в първия пакет от изходящи сонди.
- -F: Задайте бита "не фрагментирай".
- -д: Активирайте отстраняването на грешки на ниво гнездо.
- -g: Посочете шлюз на маршрут за свободен източник (максимум 8).
- -i: Посочете мрежов интерфейс, за да получите IP адреса на източника за пакети от изходящи сонди. Това обикновено е полезно само за хост с множество хостове. (Вижте-с флаг за друг начин да направите това.)
- -Аз: Използвайте ICMP ECHO вместо UDP дейтаграми.
- -м: Задайте максималната продължителност на живот (максимален брой хмел), използвана в пакетите за изходящи сонди. По подразбиране е 30 хмела (същото се използва за TCP връзки).
- -н: Отпечатва се хомейно адресно число, а не символично и числено (запазва търсене на адрес от имейл адреса до име за всеки шлюз, намерен в пътя).
- -p: Задайте номера на базовия UDP порт, използван в сондите (по подразбиране е 33434). Traceroute се надява, че нищо не слуша на UDP портовете база да се база + nhops - 1 (за да бъде прекратено проследяването на маршрута, ще се върне съобщение ICMP PORT_UNREACHABLE). Ако нещо се слуша на порт в обхвата по подразбиране, тази опция може да се използва за избор на неизползван обхват на портове.
- -r: Прескочите нормалните таблици за маршрутизиране и изпратете директно до хост на прикачена мрежа. Ако хостът не е в пряко прикачена мрежа, връща се грешка. Тази опция може да се използва за пинг на локален хост чрез интерфейс, който няма маршрут през него (например, след като интерфейсът е бил премахнат от маршрутирана (8С)).
- -с: Използвайте следния IP адрес (който обикновено се посочва като IP адрес, а не като име на хост) като изходен адрес в пакетите за изходящи сонди. На хостовете с множество хостове (тези с повече от един IP адрес) тази опция може да се използва, за да принуди източника на адреса да бъде нещо различно от IP адреса на интерфейса, на който се изпраща пакета сонда. Ако IP адресът не е един от адресите на интерфейса на машината, се връща грешка и нищо не се изпраща. (Вижте-i флаг за друг начин да направите това.)
- -T: Нагласи тип на услуга в пакетите сонди до следната стойност (нула по подразбиране). Стойността трябва да е десетично число в диапазона от 0 до 255. Тази опция може да се използва, за да видите дали различните типове услуги водят до различни пътища. (Ако не използвате 4.4bsd, това може да е академично, тъй като обичайните мрежови услуги като telnet и ftp не ви позволяват да контролирате TOS.) Не всички стойности на TOS са законни или смислени - вижте спецификациите за IP. Полезни стойности вероятно са "-T 16 "(ниско забавяне) и"-T 8 "(висока производителност).
- -V: Подробен изход. Посочени са ICMP пакети, различни от TIME_EXCEEDED и UNREACHABLEs.
- -w: Задайте време (в секунди) да изчакате отговор на дадена сонда (по подразбиране 5 сек.).
- -х: Превключвайте контролните суми на IP. Обикновено това не позволява на traceroute да изчислява контролни суми за IP. В някои случаи операционната система може да презапише части от изходящия пакет, но да не преизчисли контролната сума; По този начин в някои случаи неизпълнението е да не се изчисляват контролни суми и да се използва-х ги кара да се изчисляват. Обърнете внимание, че обикновено се изискват контролни суми за последния хоп, когато използвате ICMP ECHO сонди (-I), така че те винаги се изчисляват при използване на ICMP.
- -Z: Задайте време (в милисекунди) за пауза между сонди (по подразбиране 0). Някои системи, като Solaris и маршрутизатори от Cisco, ограничават скоростта на ICMP съобщенията. Добрата стойност, с която да се използва, е 500 (например 1/2 секунда).
Интерпретиране на резултатите
Traceroute очертава пътя, който IP пакетът следва за интернет хост, като стартира UDP пакетите с малко TTL (време за живеене), а след това слуша за ICMP "време надхвърлен" отговор от шлюз. Стартираме нашите сонди с TTL от един и увеличаваме с един, докато не получим ICMP "порт недостижим" (което означава, че пакетът е пристигнал към местоназначението си) или удари максимална стойност на опитите, които по подразбиране са 30 хмела и могат да бъдат променяни на-м флаг.
Когато се изпълни traceroute, той изпраща три сонди при всяка настройка на TTL и след това отпечатва линия към конзолата, показваща TTL, адреса на шлюза и времето за завъртане на всяка сонда. Ако отговорите на сондата идват от различни шлюзове, ще се отпечата адреса на всяка отговаряща система. Ако няма отговор в интервал от 5 секунди (променен с-w флаг), за тази сонда се отпечатва звездичка.
За да се предотврати претоварването на целевия хост от обработката на пакета с протоколи UDP, пристанището на целта е настроено на стойност, която е малко вероятно да бъде използвана от това устройство. Ако мрежа или услуга в дестинацията използва този порт, променете стойността с помощта на-p флаг.
Една примерна употреба и изход ще връща резултати, подобни на този пример:
yak 71% traceroute nis.nsf.net. traceroute към nis.nsf.net (35.1.1.48), 30 хмела максимум, 38 байта пакет 1 helios.ee.lbl.gov (128.3.112.1) 19 ms 19 ms 0 ms 2 lilac-dmc.Berkeley.EDU (128.32. 216.1) 39 ms 39 ms 19 ms 3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 39 ms 5 ccn (128.32.168.22) 39 ms 39 ms 39 ms 6 128.32.197.4 (128.32.197.4) 40 ms 59 ms 59 ms 7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 59 ms 8 129.140. 70.13 (129.140.70.13) 99 ms 99 ms 80 ms 9 129.140.71.6 (129.140.71.6) 139 ms 239 ms 319 ms 10 129.140.81.7 (129.140.81.7) 220 ms 199 ms 199 ms 11 nic.merit.edu (35.1 .1.48) 239 ms 239 ms 239 ms
Имайте предвид, че вторият и третият ред са еднакви. Този резултат се отнася до бъгче ядрото на втората система за хоп - lbl-csam.arpa, което изпраща пакети с нулева TTL (грешка в разпределената версия на 4.3 BSD). Трябва да познаете какъв е пътят, по който се извършват пакетите, тъй като NSFNet (129.140) не предоставя преводи от адрес до име за своите НСС.
По-интересен пример е:
yak 72% traceroute allspice.lcs.mit.edu. traceroute to allspice.lcs.mit.edu (18.26.0.115), 30 хмела max 1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms 2 lilac-dmc.Berkeley.EDU (128.32.216.1) 19 ms 19 ms 19 ms 3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 19 ms 19 ms 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 19 ms 39 ms 39 ms 5 ccn-nerif22 .Berkeley.EDU (128.32.168.22) 20 ms 39 ms 39 ms 6 128.32.197.4 (128.32.197.4) 59 ms 119 ms 39 ms 7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 39 ms 8 129.140.70.13 ( 129.140.70.13) 80 ms 79 ms 99 ms 9 129.140.71.6 (129.140.71.6) 139 ms 139 ms 159 ms 10 129.140.81.7 (129.140.81.7) 199 ms 180 ms 300 ms 11 129.140.72.17 (129.140.72.17) 300 ms 239 ms 239 ms 12 * * * 13 128.121.54.72 (128.121.54.72) 259 ms 499 ms 279 ms 14 * * * 15 * * * 16 * * * 17 * * * 18 ALLSPICE.LCS.MIT.EDU (18.26 .0.115) 339 ms 279 ms 279 ms
Имайте предвид, че шлюзовете на 12, 14, 15, 16 и 17 хмела или не изпращат ICMP "превишени време" съобщения или ги изпращат с TTL твърде малък, за да стигнете до нас. Линии 14 до 17 изпълняват кода на MIT C Gateway, който не изпраща съобщения "превишени време".
Безшумен шлюз 12 в горния пример може да е резултат от грешка в мрежата 4. 23 BSD мрежов код и неговите производни: Машини, работещи с 4.3 код и по-рано, изпращат съобщение, което не може да бъде достигнато, използвайки каквото остава TTL в оригиналната дейтаграма. Тъй като за шлюзовете останалият TTL е нулев, ICMP "времето превишено" е гарантирано, че няма да ни върне обратно. Поведението на тази грешка е малко по-интересно, когато се появява на целевата система:
1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms 2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 19 ms 39 ms 3 lilac-dmc.Berkeley.EDU (128.32.216.1) ) 19 ms 39 ms 19 ms 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 19 ms 5 ccn-nerif35.Berkeley.EDU (128.32.168.35) 39 ms 39 ms 39 ms 6 csgw. Berkeley.EDU (128.32.133.254) 39 ms 59 ms 39 ms 7 * * * 8 * * * 9 * * * 10 * * * 11 * * * 12 * * * 13 rip.Berkeley.EDU (128.32.131.22) Госпожица ! 39 ms! 39 ms!
Забележете, че има 12 "портала" (13 е крайната дестинация), а последната половина липсват. Това, което наистина се случва, е, че сървърът е кръстен Почивай в мир (Sun-3, работеща със Sun OS 3.5) използва TTL от нашата пристигаща дейтаграма като TTL в своя ICMP отговор. Така че отговорът ще изтече по пътя за връщане (без съобщение, изпратено до никого, тъй като ICMP не се изпраща за ICMP), докато не проследим с TTL, който е поне два пъти по-дълъг от пътя - с други думи, rip е наистина само седем Хмел далеч.
Отговорът, който се връща с TTL от 1, е улика, че този проблем съществува. Traceroute отпечатва "!" след време, ако TTL е по-малък или равен на 1. Тъй като продавачите изпращат доста остарели (DECtrix Ultrix, Sun 3.x) или нестандартни (HPUX) софтуер, очакват да видят този проблем често и да се грижат за бране на целевия хост на вашите сонди.
Други възможни пояснения след времето са! Н, ! N, или! P (хост, мрежа или протокол недостъпен),!С (маршрутът източник е неуспешен),! F- (необходимо е фрагментацията - се показва стойността на RFC1191 MTU Discovery);!Х (комуникацията е забранена административно),! V (нарушение на предимство на хост),!° С (преклузивен ефект в сила), или! (ICMP недостижим код). Тези кодове се определят от RFC1812, който заменя RFC1716. Ако почти всички сонди водят до някакъв вид недостъпен хост, traceroute ще се откаже и излезе.
Тази програма е предназначена за използване при тестване, измерване и управление на мрежата. Той трябва да се използва основно за ръчна изолация на повредите. Поради натоварването, което може да наложи на мрежата, не е разумно да се използва traceroute по време на нормални операции или от автоматизирани скриптове.