Kako uporabljati ukaz 'traceroute' v Linuxu
Kaj je treba vedeti
- Edini parameter, ki ga morate vključiti z ukazom traceroute, je ime gostitelja ali naslov IP cilja.
- Začnite sonde s TTL-jem ena in povečujte za eno, dokler ne dobite ICMP "vrata nedosegljiva" ali dosežete največjo vrednost poskusov.
Ta članek zajema informacije o traceroute, ki veljajo za stroje Linux, in vključuje razlage ukaznega stikala ter informacije o tem, kako interpretirati rezultate. Traceroute je v sistemu Windows se uporablja drugače.
Kako deluje Traceroute
Ukaz traceroute preslika pot, ki jo opravi paket informacij od svojega vira do cilja. Ena od načinov uporabe traceroute je locirati, kdaj pride do izgube podatkov v celotnem omrežju, kar bi lahko pomenilo, da je vozlišče izklopljeno.
Ker vsak skok v zapisu odraža nov strežnik ali usmerjevalnik med izvornim računalnikom in predvidenim cilj, pregled rezultatov skeniranja traceroute identificira počasne točke, ki lahko negativno vplivajo na vaše omrežje prometa.
Odpravljanje težav s Traceroute
Ocenjevanje posebne poti, po kateri sledi omrežni promet (ali iskanje napačnega prehoda, ki zavrže vaše pakete) predstavlja več izzivov pri odpravljanju težav. Traceroute uporablja protokol IP
Edini parameter, ki ga morate vključiti, ko izvedete ukaz traceroute, je ime gostitelja ali naslov IP cilja.
Sintaksa in stikala Traceroute
Traceroute sledi naslednji splošni sintaksi:
traceroute [ -dFInrvx ] [ -f prvi_ttl ] [ -g prehod ] [ -i iface ] [ -m max_ttl ] [ -p vrata ] [ -q npoizvedbe ] [ -s src_addr ] [ -t tos ] [ -w čakalna doba ] [ -z pausemsecs ] gostitelj [ packetlen ]
Zmogljivost ali izhod ukaza lahko spremenite tako, da podate eno ali več izbirnih stikal.
Ukazna stikala Traceroute | |
---|---|
Preklopi | Pojasnilo |
-f | Nastavite začetni čas življenja, uporabljen v prvem odhodnem paketu sonde. |
-F | Nastavite bit "ne razdrobi". |
-d | Omogoči odpravljanje napak na ravni vtičnice. |
-g | Določite ohlapen prehod izvorne poti (največ 8). |
-jaz | Določite omrežni vmesnik za pridobitev izvornega naslova IP za odhodne probne pakete. To je običajno uporabno samo na gostitelju z več domovi. (Glej -s označite za drug način za to.) |
-JAZ | Namesto tega uporabite ICMP ECHO UDP datagrami. |
-m | Nastavite najdaljši čas življenja (največje število skokov), ki se uporablja v odhodnih paketih sonde. Privzeta vrednost je 30 skokov (enaka privzeta vrednost se uporablja za povezave TCP). |
-n | Natisnite naslove skokov številčno in ne simbolično in številčno (shrani iskanje naslova do imena strežnika imen za vsak prehod, ki ga najdete na poti). |
-str | Nastavite osnovno številko vrat UDP, ki se uporabljajo v sondah (privzeto je 33434). Traceroute upa, da nič ne posluša na vratih UDP bazo do osnova + nhops - 1 na ciljnem gostitelju (zato bo vrnjeno sporočilo ICMP PORT_UNREACHABLE za prekinitev sledenja poti). Če nekaj posluša na vratih v privzetem obsegu, lahko to možnost uporabite za izbiro neuporabljenega obsega vrat. |
-r | Obidite običajne usmerjevalne tabele in pošljite neposredno gostitelju v priključenem omrežju. Če gostitelj ni v neposredno povezanem omrežju, se vrne napaka. To možnost je mogoče uporabiti za ping lokalnega gostitelja prek vmesnika, ki nima poti skozi njega (npr. po tem, ko je vmesnik opustil preusmerjen(8C)). |
-s | Uporabite naslednji naslov IP (ki je običajno podan kot številka IP, ne ime gostitelja) kot izvorni naslov v odhodnih paketih sondiranja. Na gostiteljih z več domovi (tistimi z več kot enim naslovom IP) je s to možnostjo mogoče prisiliti izvorni naslov, da je nekaj drugega kot naslov IP vmesnika, na katerega se pošlje sondalni paket. Če naslov IP ni eden od vmesniških naslovov te naprave, se vrne napaka in nič se ne pošlje. (Glej -jaz označite za drug način za to.) |
-t | Nastavite vrsta storitve v paketih sond na naslednjo vrednost (privzeto nič). Vrednost mora biti decimalno celo število v območju od 0 do 255. S to možnostjo lahko vidite, ali različne vrste storitev povzročijo različne poti. (Če ne uporabljate 4.4bsd, je to morda akademsko, saj običajne omrežne storitve, kot sta telnet in ftp ne dovolite, da nadzirate TOS.) Vse vrednosti TOS niso zakonite ali smiselne – glejte specifikacijo IP za definicije. Uporabne vrednosti so verjetno `-t16' (majhna zamuda) in-t8« (visoka prepustnost). |
-v | Podroben izhod. Navedeni so prejeti paketi ICMP, ki niso TIME_EXCEEDED in UNREACHABLE. |
-w | Nastavite čas (v sekundah) za čakanje na odziv na sondo (privzeto 5 sekund). |
-x | Preklopi IP kontrolne vsote. Običajno to prepreči, da bi traceroute izračunal kontrolne vsote IP. V nekaterih primerih, operacijski sistem lahko prepiše dele odhodnega paketa, vendar ne preračuna kontrolne vsote; tako je v nekaterih primerih privzeto, da ne izračunamo kontrolnih vsot in uporabo -x povzroči njihovo izračun. Upoštevajte, da so kontrolne vsote običajno potrebne za zadnji skok pri uporabi sond ICMP ECHO (-JAZ), zato se vedno izračunajo pri uporabi ICMP. |
-z | Nastavite čas (v milisekundah) za premor med sondami (privzeto 0). Nekateri sistemi, kot so Solaris in usmerjevalniki podjetja Cisco, omejujejo hitrost icmp sporočil. Dobra vrednost za uporabo s tem je 500 (npr. 1/2 sekunde). |
Interpretacija rezultatov
Traceroute oriše pot, ki jo paket IP sledi do internetnega gostitelja, tako da zažene pakete UDP sonde z majhnim TTL in nato posluša odgovor ICMP "presežen čas" iz prehoda. Začnite sonde s TTL eno in povečujte za eno, dokler ne dobite ICMP "vrata nedosegljiva" (kar pomeni paket prispel na cilj) ali dosegel največjo vrednost poskusov, ki je privzeto nastavljena na 30 skokov in jo je mogoče spremeniti z -m zastavo.
Ko se traceroute izvede, pošlje tri sonde pri vsaki nastavitvi TTL in nato na konzolo natisne vrstico, ki prikazuje TTL, naslov prehoda in povratni čas vsake sonde. Če odgovori na sondo prihajajo iz različnih prehodov, se natisne naslov vsakega odzivnega sistema. Če traceroute ne prejme odgovora v petih sekundah (spremenjeno z -w zastavo), natisne zvezdico za to sondo.
Da bi preprečili, da bi obdelava sondnega paketa UDP preobremenila ciljnega gostitelja, traceroute nastavi ciljna vrata na vrednost, ki je naprava verjetno ne bo uporabila. Če omrežje ali storitev na ciljnem mestu uporablja ta vrata, spremenite vrednost z -str zastavo.
Primeri rezultatov Traceroute
Vzorčna uporaba in izhod bosta vrnila rezultate, podobne temu primeru:
[jakov 71]% traceroute nis.nsf.net.
traceroute do nis.nsf.net (35.1.1.48), največ 30 skokov, 38-bajtni paket
1 helios.ee.lbl.gov (128.3.112.1) 19 ms 19 ms 0 ms
2 lila-dmc. Berkeley. EDU (128.32.216.1) 39 ms 39 ms 19 ms
3 lila-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-nerif22.Berkeley. EDU (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
Druga in tretja vrstica sta enaki. Ta rezultat se nanaša na hroščavo jedro na sistemu drugega skoka – lbl-csam.arpa –, ki posreduje pakete z ničelnim TTL (hrošček v porazdeljeni različici 4.3 BSD). Uganiti morate, po kateri poti gredo paketi med državami, saj NSFNet (129.140) ne zagotavlja prevodov naslova v ime za svoje NSS-je.
Primer tihega prehoda
Bolj zanimiv primer je:
[jakov 72]% traceroute allspice.lcs.mit.edu.
traceroute na allspice.lcs.mit.edu (18.26.0.115), največ 30 hmeljev
1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms
2 lila-dmc. Berkeley. EDU (128.32.216.1) 19 ms 19 ms 19 ms
3 lila-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
Upoštevajte, da prehodi na 12, 14, 15, 16 in 17 skokih stran bodisi ne pošiljajo sporočil ICMP »čas presežen« ali pa jih pošiljajo s premajhnim TTL, da bi dosegli nas. Vrstice od 14 do 17 izvajajo kodo prehoda MIT C, ki ne pošilja sporočil o "preseženem času".
Tihi prehod 12 v zgornjem primeru je lahko posledica napake v omrežni kodi 4.[23]BSD in njeni omrežni kodi. izpeljanke: stroji, ki uporabljajo kodo 4.3 in starejšo, pošljejo nedosegljivo sporočilo z uporabo kakršnega koli TTL, ki ostane v originalni datagram. Za prehode je preostali TTL nič, ICMP "presežen čas" zagotovo ne bo prišel nazaj k nam.
Primer tihega prehoda ciljnega sistema
Obnašanje te napake je nekoliko bolj zanimivo, ko se pojavi v ciljnem sistemu:
1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms
2 lila-dmc. Berkeley. EDU (128.32.216.1) 39 ms 19 ms 39 ms
3 lila-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) 59 ms! 39 ms! 39 ms!
Upoštevajte, da obstaja 12 "prehodov" (13 je končni cilj), zadnja polovica pa manjka. V resnici se dogaja, da je strežnik imenovan počivaj v miru (Sun-3 z operacijskim sistemom Sun OS 3.5) uporablja TTL iz našega prispelega datagrama kot TTL v svojem odgovoru ICMP. Torej bo odgovor na povratni poti potekel (brez nobenega obvestila, ker ICMP-ji niso poslani za ICMP-je) dokler ne testiramo s TTL, ki je vsaj dvakrat daljša od dolžine poti – z drugimi besedami, rip je v resnici le sedem skokov stran.
Odgovor, ki se vrne s TTL 1, je namig, da ta težava obstaja. Traceroute natisne a! po času, če je TTL manjši ali enak 1. Ker prodajalci pošiljajo veliko zastarele (DEC-jev Ultrix, Sun 3.x) ali nestandardne (HPUX) programske opreme, pričakujte, da boste to težavo pogosto opazili in bodite previdni pri izbiri ciljnega gostitelja vaših sond.
Druge možne opombe po času so !H, !N, oz !P (gostitelj, omrežje ali protokol nedosegljivi), !S (izvorna pot ni uspela), !F- (potrebna je fragmentacija – prikazana je vrednost odkrivanja MTU poti RFC1191), !X (upravno prepovedano komuniciranje), !V (kršitev prednosti gostitelja), !C (velja prekinitev prednosti), oz ! (Nedosegljiva koda ICMP). Te kode določa RFC1812, ki nadomešča RFC1716. Če skoraj vse sonde povzročijo nekakšen nedosegljiv gostitelj, bo traceroute obupal in zapustil.
Ta program je namenjen uporabi pri testiranju, merjenju in upravljanju omrežja. Uporabljati ga je treba predvsem za ročno izolacijo napak. Zaradi obremenitve, ki jo lahko povzroči omrežje, ni pametno uporabljati traceroute med običajnimi operacijami ali iz samodejnih skriptov.