Jak používat příkaz traceroute v systému Linux

Photo of author

By etechblogcz

Příkaz traceroute v operačním systému Linux je mocný nástroj, který vám umožňuje detailně sledovat cestu síťových paketů. Pomáhá při odhalování problematických míst na trase, kde dochází ke zpomalení přenosu dat, a tím usnadňuje řešení problémů s připojením. V následujícím textu si ukážeme, jak tento příkaz efektivně používat.

Princip fungování traceroute

Pro správné interpretování výstupů příkazu traceroute je klíčové pochopit jeho princip. Komplikovanější síťová trasa paketu může ztížit identifikaci místa, kde dochází ke zpomalení přenosu.

Zatímco jednoduchá lokální síť (LAN) v menší firmě může mít jen jeden nebo dva směrovače a server, u rozlehlých sítí (WAN), které propojují více poboček nebo jsou součástí internetu, je situace složitější. Síťový paket pak musí projít mnoha zařízeními, jako jsou směrovače a brány.

Datové pakety obsahují metadata v záhlaví, která definují například délku paketu, zdroj, cíl, použitý protokol atd. Struktura hlavičky je definována protokolem. Pokud znáte protokol, dokážete z hlavičky přečíst potřebná data.

Příkaz traceroute využívá sadu protokolů TCP/IP a odesílá UDP pakety. V hlavičce se nachází pole TTL (Time to Live), které představuje 8bitovou číselnou hodnotu. Tato hodnota vyjadřuje počet skoků, nikoli časový interval.

Když paket putuje mezi směrovači, hodnota TTL se na každém směrovači snižuje. Pokud hodnota TTL klesne na 1, směrovač ji sníží na 0, paket zahodí a neposílá ho dále, protože „vypršel časový limit“.

Směrovač v takovém případě odešle ICMP zprávu typu „Time Exceeded“ o překročení časového limitu zpět odesílateli paketu. Tato zpráva obsahuje původní hlavičku a prvních 64 bitů dat paketu, jak popisuje dokument RFC 792.

traceroute tak odesláním paketu s TTL nastaveným na 1 zjistí první směrovač na trase. Po obdržení ICMP zprávy o překročení času zaznamená čas potřebný pro cestu paketu tam a zpět.

Následně opakuje proces, ale tentokrát s TTL nastaveným na 2, což způsobí selhání po dvou skocích. Takto traceroute postupně zvyšuje hodnotu TTL a zjišťuje další skoky, dokud nedosáhne cíle nebo nedosáhne maximálního počtu skoků (ve výchozím nastavení 30).

Potíže s některými směrovači

Některé směrovače se chovají nestandardně. Místo aby zahodily pakety s TTL=0 a odeslaly zprávu ICMP o překročení času, se je snaží přeposílat dál.

Podle Cisco někteří poskytovatelé internetu (ISP) omezují počet ICMP zpráv, které jejich směrovače odesílají.

Některá zařízení jsou nakonfigurována tak, aby vůbec neodesílala ICMP pakety, aby se předešlo možnému útoku typu DoS, jako je například Smurf útok.

traceroute má výchozí časový limit pro odpovědi 5 sekund. Pokud během této doby nepřijme žádnou odpověď, pokus selže. To znamená, že odpovědi od pomalých směrovačů se ignorují.

Instalace traceroute

Na Fedoře 31 je traceroute již nainstalovaný, ale na Manjaro 18.1 a Ubuntu 18.04 je nutné ho doinstalovat.

Pro instalaci na Manjaru použijte tento příkaz:

sudo pacman -Sy traceroute

Pro instalaci na Ubuntu použijte tento příkaz:

sudo apt-get install traceroute

Použití traceroute

Účelem traceroute je získat odpověď od každého směrovače na trase. Některé směrovače však neodesílají informace, zatímco jiné ano.

Jako příklad si ukážeme použití traceroute na webové stránky hradu Blarney v Irsku, který je známý svým Blarney Stone. Podle legendy políbení tohoto kamene přináší „dar výřečnosti“. Doufejme, že směrovače, kterými budeme procházet, budou s námi také „výřečné“.

Zadejte následující příkaz:

traceroute www.blarneycastle.ie

První řádek poskytuje tyto informace:

  • Cíl a jeho IP adresa
  • Počet skoků, které se traceroute pokusí než se vzdá.
  • Velikost UDP paketů, které odesíláme.

Ostatní řádky obsahují informace o jednotlivých skocích. Vidíme, že mezi naším počítačem a webem hradu Blarney je 11 skoků. Skok 11 znamená, že jsme dosáhli cíle.

Formát každého řádku s informacemi o skoku je následující:

  • Název zařízení, nebo pokud se zařízení neidentifikuje, tak IP adresa.
  • IP adresa.
  • Čas, který trvala zpáteční cesta pro každý ze tří testů. Hvězdička znamená, že na tento test nebyla žádná odpověď. Pokud zařízení vůbec nereaguje, uvidíte tři hvězdičky a žádný název ani IP adresu.

Podívejme se na to, co nám výstup říká:

Skok 1: Prvním zařízením na trase je směrovač DrayTek Vigor v lokální síti. Zde naše UDP pakety opouštějí lokální síť a míří do internetu.

Skok 2: Toto zařízení nereagovalo. Možná je nakonfigurováno tak, aby nikdy neposílalo ICMP pakety, nebo bylo příliš pomalé a traceroute vypršel časový limit.

Skok 3: Zařízení odpovědělo, ale neposkytlo svůj název, pouze IP adresu. V řádku se objevila hvězdička, což znamená, že jsme nedostali odpověď na všechny tři požadavky. To může signalizovat ztrátu paketů.

Skoky 4 a 5: Další anonymní skoky.

Skok 6: V tomto případě je více textu, protože každý z našich tří požadavků zpracovalo jiné vzdálené zařízení. Byly zobrazeny názvy a IP adresy pro každé zařízení. To se může stát v „hustě osídlené“ síti, kde je mnoho zařízení, která zpracovávají velký objem provozu. Tento skok je u jednoho z největších poskytovatelů internetu ve Spojeném Království, takže by byl malý zázrak, kdyby stejné zařízení zvládlo všechny tři naše požadavky.

Skok 7: Toto je skok, kdy naše UDP pakety opustily síť ISP.

Skok 8: Opět dostáváme IP adresu, ale ne název zařízení. Všechny tři testy se úspěšně vrátily.

Skoky 9 a 10: Další dva anonymní skoky.

Skok 11: Dorazili jsme na web hradu Blarney. Hrad se nachází v irském Corku, ale podle geolokace IP adresy se web nachází v Londýně.

Je vidět, že některé směrovače komunikovaly dobře, jiné reagovaly, ale neposkytly svá jména, a některé zůstaly zcela anonymní.

Nicméně, dosáhli jsme cíle, víme, že je to 11 skoků a zpáteční cesta trvala mezi 13,773 a 14,715 milisekundami.

Skrytí názvů zařízení

Jak jsme viděli, zobrazení názvů zařízení může vést k nepřehlednému výstupu. Pro zjednodušení zobrazení dat můžeme použít volbu -n (bez mapování).

V našem případě použijeme příkaz:

traceroute -n blarneycastle.ie

Díky tomu můžeme snadněji identifikovat skoky s delšími časy odezvy, které mohou naznačovat potenciální úzké místo.

Skok 3 vypadá trochu podezřele, protože minule odpověděl pouze dvakrát a tentokrát jen jednou. V této konkrétní situaci nemáme nad tím kontrolu.

Pokud byste však zkoumali vlastní firemní síť, stálo by za to se tomuto bodu podívat blíže.

Úprava hodnoty časového limitu

Zvýšením výchozí hodnoty časového limitu (5 sekund) můžeme získat více odpovědí. To se provádí volbou -w (doba čekání), kterou změníme například na 7 sekund. (Je důležité, že tato hodnota je s desetinnou čárkou).

Zadejte tento příkaz:

traceroute -w 7.0 blarneycastle.ie

Výsledek se příliš nezměnil, takže odpovědi pravděpodobně vyprší. Je velmi pravděpodobné, že anonymní skoky jsou záměrně skryté.

Nastavení počtu testů

Ve výchozím nastavení traceroute posílá tři UDP pakety do každého skoku. To můžeme upravit pomocí volby -q (počet dotazů).

Pro urychlení testu můžeme snížit počet odeslaných paketů na jeden:

traceroute -q 1 blarneycastle.ie

Tím se do každého skoku odešle pouze jeden paket.

Nastavení počáteční hodnoty TTL

Počáteční hodnotu TTL můžeme nastavit i na jinou hodnotu než 1 a tím přeskočit některé skoky. Obvykle je TTL nastavená na 1 pro první sérii testů, 2 pro druhou atd. Pokud nastavíme TTL na 5, první test se pokusí dosáhnout skoku 5 a přeskočí tak skoky 1 až 4.

Vzhledem k tomu, že víme, že web Blarney Castle je vzdálený 11 skoků, můžeme přeskočit přímo na skok 11 použitím tohoto příkazu:

traceroute -f 11 blarneycastle.ie

Tím získáme stručnou zprávu o stavu spojení do cíle.

Buďte ohleduplní

traceroute je užitečný nástroj pro zkoumání směrování sítě, kontrolu rychlosti připojení nebo identifikaci slabých míst. Podobný příkaz tracert je dostupný i pro Windows.

Je ale důležité si uvědomit, že nechceme neznámá zařízení zahlcovat velkým množstvím UDP paketů a měli bychom být opatrní, pokud používáme traceroute ve skriptech nebo automatizovaných úlohách.

Používání traceroute může negativně ovlivnit výkon sítě. Pokud zrovna neřešíte problémy se sítí, doporučuje se ho používat mimo špičku.