A „traceroute” parancs használata Linuxban

Mit kell tudni

  • Az egyetlen paraméter, amelyet a traceroute paranccsal meg kell adni, a cél gazdagépneve vagy IP-címe.
  • Indítsa el a vizsgálatokat 1-es TTL-lel, és növelje eggyel, amíg az ICMP-port "nem érhető el", vagy el nem éri a kísérletek maximális értékét.

Ez a cikk a Linux-gépekre vonatkozó traceroute-információkat tartalmazza, a parancskapcsolók magyarázatait, valamint az eredmények értelmezésére vonatkozó információkat tartalmaz. A Traceroute az másként használják a Windows rendszerben.

Hogyan működik a Traceroute

A traceroute parancs leképezi azt az utat, amelyet egy információs csomag megtesz a forrástól a célállomásig. A traceroute egyik felhasználási módja annak meghatározása, hogy mikor történik adatvesztés a hálózaton, ami azt jelezheti, hogy a csomópont nem működik.

Mivel a rekord minden ugrása egy új szervert vagy útválasztót tükröz az eredeti számítógép és a tervezett között A traceroute vizsgálat eredményeinek áttekintése olyan lassú pontokat azonosít, amelyek hátrányosan érinthetik a hálózatot forgalom.

Hibaelhárítás a Traceroute segítségével

A hálózati forgalom által követett konkrét útvonal kiértékelése (vagy a csomagokat eldobó rossz átjáró megtalálása) számos hibaelhárítási kihívást jelent. A Traceroute az IP protokollt használja itt az ideje élni mezőt, hogy ICMP TIME_EXCEEDED választ kérjen minden átjárótól a célállomáshoz vezető úton.

A traceroute parancs végrehajtásakor az egyetlen paraméter, amelyet meg kell adnia, a cél hosztneve vagy IP-címe.

Traceroute szintaxis és kapcsolók

Képernyőkép az Ubuntu traceroute szintaxisáról
Traceroute szintaxis az Ubuntuban.

A Traceroute a következő általános szintaxist követi:

traceroute [ -dFInrvx ] [ -f first_ttl ] [ -g gateway ] [ -i iface ] [ -m max_ttl ] [ -p port ] [ -q nqueries ] [ -s src_addr ] [ -t tos ] [ -w várakozási idő ] [ -z pausemsecs ] host [ packetlen ] 

Egy vagy több opcionális kapcsoló megadásával módosíthatja a parancs teljesítményét vagy kimenetét.

Traceroute parancskapcsolók
Kapcsoló Magyarázat
-f Állítsa be az első kimenő vizsgálócsomagban használt kezdeti élettartamot.
-F Állítsa be a "nem töredezett" bitet.
-d Socket szintű hibakeresés engedélyezése.
-g Adjon meg egy laza forrásútvonal-átjárót (legfeljebb 8).
-én Adjon meg egy hálózati interfészt a forrás IP-címének megszerzéséhez a kimenő vizsgálócsomagokhoz. Ez általában csak több otthonos gazdagépen hasznos. (Lásd a -s jelölje meg ennek egy másik módja érdekében.)
-ÉN Használja az ICMP ECHO-t helyette UDP datagramok.
-m Állítsa be a kimenő vizsgálócsomagokban használt maximális élettartamot (max. ugrások számát). Az alapértelmezett 30 ugrás (ugyanaz az alapértelmezett, mint a TCP-kapcsolatoknál).
-n Print hop címek numerikusan, nem pedig szimbolikusan és numerikusan (névszerver cím-név keresést ment el minden, az elérési úton talált átjáróhoz).
-o Állítsa be a vizsgálókban használt alap UDP-port számát (alapértelmezett 33434). A Traceroute reméli, hogy semmi sem figyel az UDP-portokon bázis nak nek alap + nhops - 1 a célállomáson (tehát egy ICMP PORT_UNREACHABLE üzenet kerül visszaküldésre az útvonal követésének befejezéséhez). Ha valami az alapértelmezett tartományban lévő porton figyel, akkor ezzel a lehetőséggel kiválaszthat egy nem használt porttartományt.
-r Kerülje ki a normál útválasztási táblákat, és küldje el közvetlenül a csatolt hálózaton lévő gazdagépnek. Ha a gazdagép nincs közvetlenül csatlakoztatott hálózaton, hibaüzenet jelenik meg. Ezzel az opcióval egy helyi gazdagép pingelésére használható olyan interfészen keresztül, amelyen nincs útvonal (pl. miután az interfészt eldobta irányított(8C)).
-s Használja a következő IP-címet (amelyet általában IP-számként adnak meg, nem állomásnévként) forráscímként a kimenő vizsgálócsomagokban. Többotthonos gazdagépeken (amelyek egynél több IP-címmel rendelkeznek) ezzel az opcióval kikényszeríthető, hogy a forráscím valami más legyen, mint annak az interfésznek az IP-címe, amelyre a vizsgálócsomagot küldik. Ha az IP-cím nem tartozik a készülék interfészcímei közé, hibaüzenetet ad vissza, és nem küld semmit. (Lásd a -én jelölje meg ennek egy másik módja érdekében.)
-t Állítsa be a szolgáltatás típusa próbacsomagokban a következő értékre (alapértelmezett nulla). Az értéknek decimális egész számnak kell lennie a 0 és 255 közötti tartományban. Ezzel a beállítással megnézheti, hogy a különböző típusú szolgáltatások különböző útvonalakat eredményeznek-e. (Ha nem 4.4bsd-t futtatsz, ez lehet tudományos, mivel a normál hálózati szolgáltatások, például a telnet és az ftp ne engedje, hogy irányítsa a TOS-t.) A TOS nem minden értéke törvényes vagy értelmes – lásd az IP-specifikációt definíciók. A hasznos értékek valószínűleg `-t16" (alacsony késleltetés) és "-t8' (nagy áteresztőképesség).
-v Bőbeszédű kimenet. A TIME_EXCEEDED és az UNREACHABLE-től eltérő fogadott ICMP-csomagok listája.
-w Állítsa be az időt (másodpercben), ameddig várni kell a szondára adott válaszra (alapértelmezett 5 mp).
-x Kapcsolja be az IP-t ellenőrző összegeket. Általában ez megakadályozza, hogy a traceroute IP-ellenőrző összegeket számítson ki. Egyes esetekben a operációs rendszer felülírhatja a kimenő csomag részeit, de nem tudja újraszámolni az ellenőrző összeget; így bizonyos esetekben az alapértelmezett az, hogy nem számítanak ki ellenőrző összegeket és használnak -x kiszámítását okozza. Vegye figyelembe, hogy az utolsó ugráshoz általában ellenőrző összegekre van szükség, ha ICMP ECHO próbákat használ (-ÉN), ezért az ICMP használatakor mindig kiszámításra kerülnek.
-z Állítsa be az időt (ezredmásodpercben), hogy szüneteljen a szondák között (alapértelmezett 0). Egyes rendszerek, például a Solaris és a Cisco útválasztói korlátozzák az icmp üzenetek sebességét. Ezzel jó érték az 500 (pl. 1/2 másodperc).

Az eredmények értelmezése

A Traceroute felvázolja azt az utat, amelyet az IP-csomag követ egy internetes gazdagéphez úgy, hogy kis TTL-lel elindítja az UDP-próbacsomagokat, majd meghallgatja az ICMP „időtúllépés” válaszát egy átjárótól. Indítsa el a szondákat 1-es TTL-lel, és növelje eggyel, amíg egy ICMP „port elérhetetlen” (ami azt jelenti, hogy a csomag megérkezett a rendeltetési helyére), vagy eléri a kísérletek maximális értékét, amely alapértelmezés szerint 30 ugrás, és módosítható a... val -m zászló.

Amikor a traceroute végrehajtódik, minden TTL-beállításnál három szondát küld, majd egy sort nyomtat a konzolra, amelyen a TTL, az átjáró címe és az egyes szondák körideje látható. Ha a szonda válaszai különböző átjárókról érkeznek, a rendszer minden válaszoló rendszer címét kinyomtatja. Ha a traceroute nem kap választ öt másodpercen belül (megváltozott a -w zászló), csillagot nyomtat az adott szondához.

Annak megakadályozása érdekében, hogy az UDP-próbacsomag-feldolgozás túlterhelje a célállomást, a traceroute olyan értékre állítja a célportot, amelyet az eszköz valószínűleg nem fog használni. Ha a célállomás hálózata vagy szolgáltatása ezt a portot használja, módosítsa az értéket a gombbal -o zászló.

Példák a Traceroute eredményére

A mintahasználat és kimenet a példához hasonló eredményeket ad vissza:

[jak 71]% traceroute nis.nsf.net.
traceroute to nis.nsf.net (35.1.1.48), max. 30 ugrás, 38 bájtos csomag
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

A második és a harmadik sor ugyanaz. Ez az eredmény a második ugrásrendszer – lbl-csam.arpa – hibás kernelére vonatkozik, amely nulla TTL-lel továbbítja a csomagokat (a 4.3-as BSD elosztott verziójában ez a hiba). Ki kell találnia, hogy a csomagok milyen útvonalon haladnak az országok között, mivel az NSFNet (129.140) nem biztosít cím-név fordítást az NSS-ekhez.

Példa a csendes átjáróra

Egy érdekesebb példa:

[jak 72]% traceroute allspice.lcs.mit.edu.
traceroute az allspice.lcs.mit.edu címre (18.26.0.115), max. 30 komló
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

Vegye figyelembe, hogy a 12, 14, 15, 16 és 17 ugrásnyira lévő átjárók vagy nem küldenek ICMP "időtúllépés" üzeneteket, vagy túl kicsi TTL-lel küldik el őket ahhoz, hogy elérjenek minket. A 14–17. sorok az MIT C Gateway kódját futtatják, amely nem küld „időtúllépés” üzenetet.

A fenti példában a csendes 12-es átjáró a 4[23]BSD hálózati kód és annak hibájának eredménye lehet. származékok: A 4.3-as vagy korábbi kódot futtató gépek elérhetetlen üzenetet küldenek a TTL-ben maradó eredeti datagram. Átjáróknál a maradék TTL nulla, az ICMP "túllépési ideje" garantáltan nem érkezik vissza hozzánk.

Példa a célrendszer csendes átjárójára

A hiba viselkedése kissé érdekesebb, ha megjelenik a célrendszeren:

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!

Figyeljük meg, hogy 12 „átjáró” létezik (13 a végső cél), és ezek utolsó fele hiányzik. Valójában az történik, hogy a szerver neve Nyugodj békében (a Sun-3, amelyen a Sun OS 3.5 fut) az érkező datagramunkból származó TTL-t használja TTL-ként az ICMP-válaszában. Tehát a válasz időkorlátja a visszatérési útvonalon (nem küldenek értesítést senkinek, mivel az ICMP-ket nem küldik el az ICMP-khez) amíg nem vizsgálunk egy olyan TTL-t, amely legalább kétszerese az útvonal hosszának – más szóval a rip valójában csak hét ugrás el.

Az 1-es TTL-t tartalmazó válasz arra utal, hogy ez a probléma fennáll. Traceroute nyomatok a! az idő után, ha a TTL kisebb vagy egyenlő, mint 1. Mivel a gyártók sok elavult (DEC Ultrix, Sun 3.x) vagy nem szabványos (HPUX) szoftvert szállítanak, számítson arra, hogy gyakran látni fogja ezt a problémát, és ügyeljen a szondák célállomásának kiválasztására.

További lehetséges megjegyzések az idő után !H, !N, vagy !P (a gazdagép, a hálózat vagy a protokoll nem érhető el), !S (forrásútvonal sikertelen), !F- (töredezettség szükséges – megjelenik az RFC1191 Path MTU Discovery értéke), !X (a kommunikáció adminisztratívan tilos), !V (a gazdagép elsőbbségének megsértése), !C (elsőbbségi korlát érvényben), ill ! (ICMP elérhetetlen kód). Ezeket a kódokat az RFC1812 határozza meg, amely felülírja az RFC1716-ot. Ha szinte az összes szonda valamilyen elérhetetlen gazdagépet eredményez, a traceroute feladja és kilép.

Ez a program hálózati tesztelésre, mérésre és felügyeletre szolgál. Elsősorban kézi hibaelhárításra célszerű használni. A hálózatot terhelő terhelés miatt nem bölcs dolog a traceroute használata normál műveletek során vagy automatizált szkriptekből.