Existují scénáře, ve kterých by člověk chtěl znát trasu, kterou spojení sleduje. Trasou zde rozumíme IP adresy všech přeposílání entit (jako jsou routery mezi nimi).
Ačkoli není zaručeno, že trasa zůstane stejná pro všechny pakety připojení, obvykle je stejná. Tyto informace týkající se trasy mohou být velmi užitečné při ladění problémů souvisejících se sítí.
Nástroj traceroute vytiskne kompletní trasu k určitému cíli. V tomto článku probereme, jak traceroute funguje, a uvidíme několik praktických příkladů.
Jak Traceroute funguje?
Než začneme s příklady, pojďme pochopit koncept, na kterém traceroute funguje.
Obslužný program Traceroute používá pole TTL v hlavičce IP k dosažení své činnosti. Pro uživatele, kteří jsou v poli TTL noví, toto pole popisuje, kolik skoků zabere konkrétní paket při cestování po síti.
To tedy efektivně nastiňuje životnost paketu v síti. Toto pole je obvykle nastaveno na 32 nebo 64. Pokaždé, když je paket zadržen na mezilehlém směrovači, sníží hodnotu TTL o 1. Když směrovač nalezne v přijatém paketu hodnotu TTL 1, pak tento paket není předán, ale místo toho vyřazeno.
Po zahození paketu směrovač odešle chybovou zprávu ICMP „Překročení času“ zpět do zdroje, odkud byl paket vygenerován. Paket ICMP, který je odeslán zpět, obsahuje adresu IP směrovače.
Takže nyní lze snadno pochopit, že traceroute funguje tak, že odesílá pakety s hodnotou TTL začínající od 1 a poté se pokaždé zvyšuje o jednu. Pokaždé, když router přijme paket, zkontroluje pole TTL, pokud je pole TTL 1, paket zahodí a odešle chybový paket ICMP obsahující jeho IP adresu, a to je to, co traceroute vyžaduje. Takže traceroute postupně načítá IP všech směrovačů mezi zdrojem a cílem.
Měli byste také rozumět polím záhlaví IP, o kterých jsme mluvili před časem.
Příklady Traceroute
1. Jak spustit traceroute?
$ traceroute <server-name>
Výše uvedený server-name je cílový název nebo IP adresa. Například traceroute se používá k nalezení síťové cesty z mého počítače na google.com:
$ traceroute google.com traceroute to google.com (74.125.236.132), 30 hops max, 60 byte packets 1 220.224.141.129 (220.224.141.129) 89.174 ms 89.094 ms 89.054 ms 2 115.255.239.65 (115.255.239.65) 109.037 ms 108.994 ms 108.963 ms 3 124.124.251.245 (124.124.251.245) 108.937 ms 121.322 ms 121.300 ms 4 * 115.255.239.45 (115.255.239.45) 113.754 ms 113.692 ms 5 72.14.212.118 (72.14.212.118) 123.585 ms 123.558 ms 123.527 ms 6 72.14.232.202 (72.14.232.202) 123.499 ms 123.475 ms 143.523 ms 7 216.239.48.179 (216.239.48.179) 143.503 ms 95.106 ms 95.026 ms 8 bom03s02-in-f4.1e100.net (74.125.236.132) 94.980 ms 104.989 ms 104.954 ms
Každý řádek poskytuje podrobnosti o interakci s každým nalezeným routerem. Vidíme tedy, že traceroute nedává pouze IP adresy zprostředkujících směrovačů, ale také tři zpáteční časy pro tento konkrétní směrovač, protože pro každý směrovač příkazy traceroute vystřelí tři pakety.
Pole „*“ ve výstupu
Jsou chvíle, kdy se ve výstupu můžete setkat se znakem „*“ spíše než s hodnotou. To ukazuje, že požadované pole nebylo možné načíst. Důvodem může být cokoli, od selhání zpětného vyhledávání DNS po pakety, které nezasáhnou cílový směrovač, až po ztrátu paketů na cestě zpět. Vidíme tedy, že důvodů může být mnoho, ale pro všechny tyto typy případů poskytuje nástroj traceroute ve výstupu *.
2. Zakázat mapování IP adresy a názvu hostitele
Traceroute poskytuje možnost, pomocí které je zakázáno mapování IP adres s názvem hostitele (který traceroute zkouší). Možnost, jak to udělat, je „-n“ . Následující příklad to ilustruje:
$ traceroute google.com -n traceroute to google.com (173.194.36.7), 30 hops max, 60 byte packets 1 220.224.141.129 109.352 ms 109.280 ms 109.248 ms 2 115.255.239.65 131.633 ms 131.598 ms 131.573 ms 3 124.124.251.245 131.554 ms 131.529 ms 131.502 ms 4 115.255.239.45 131.478 ms 131.464 ms 199.741 ms 5 72.14.212.118 199.674 ms 199.637 ms 199.603 ms 6 209.85.241.52 199.578 ms 199.549 ms 209.838 ms 7 209.85.241.187 199.488 ms 177.264 ms 177.196 ms 8 173.194.36.7 177.159 ms 187.463 ms 187.434 ms
Vidíme tedy, že ve výstupu není zobrazen žádný název hostitele.
3. Nakonfigurujte dobu čekání na odezvu
Lze také nakonfigurovat dobu, po kterou obslužný program traceroute čeká po vydání sondy. To lze provést pomocí volby „-w“, kterou poskytuje. Volba -w očekává hodnotu, kterou obslužný program vezme jako dobu odezvy na čekání. V tomto příkladu je čekací doba 0,1 sekundy a obslužný program traceroute nemohl čekat na žádnou odpověď a vytiskl všechny *.
$ traceroute google.com -w 0.1 traceroute to google.com (74.125.236.101), 30 hops max, 60 byte packets 1 * * * 2 * * * 3 * * * .. 26 * * * 27 * * * 28 * * * 29 * * * 30 * * *
Vidíme tedy, že traceroute zkusil 30 pokusů (maximální počet pokusů o skok) a pak to vzdal, protože za 0,1 sekundy nebyl přijat žádný ICMP paket.
4. Nakonfigurujte počet dotazů na skok
Jak již bylo vysvětleno dříve, obslužný program traceroute odešle 3 pakety na jeden skok, aby poskytl 3 zpáteční časy. Tato výchozí hodnota 3 je konfigurovatelná pomocí volby ‚-q‘. Tato volba očekává celé číslo, které nastaví jako novou hodnotu počtu sond na skok.
$ traceroute google.com -q 5 traceroute to google.com (173.194.36.46), 30 hops max, 60 byte packets 1 220.224.141.129 (220.224.141.129) 91.579 ms 91.497 ms 91.458 ms 91.422 ms 91.385 ms 2 115.255.239.65 (115.255.239.65) 91.356 ms 91.325 ms 98.868 ms 98.848 ms 98.829 ms 3 124.124.251.245 (124.124.251.245) 94.581 ms 107.083 ms 107.044 ms 107.017 ms 106.981 ms 4 115.255.239.45 (115.255.239.45) 106.948 ms 106.918 ms 144.432 ms 144.412 ms 144.392 ms 5 72.14.212.118 (72.14.212.118) 115.565 ms 115.485 ms 115.446 ms 115.408 ms 115.381 ms 6 72.14.232.202 (72.14.232.202) 115.351 ms 87.232 ms 117.157 ms 117.123 ms 117.049 ms 7 209.85.241.189 (209.85.241.189) 126.998 ms 126.973 ms 126.950 ms 126.929 ms 126.912 ms 8 bom04s02-in-f14.1e100.net (173.194.36.46) 126.889 ms 95.526 ms 95.450 ms 95.418 ms 105.392 ms
Vidíme tedy, že po nakonfigurování počtu sond na 5 začal výstup ukazovat pět zpátečních časů na jeden skok.
5. Nakonfigurujte hodnotu TTL na začátek
Nástroj Traceroute je dostatečně flexibilní, aby přijal hodnotu TTL, se kterou chce uživatel nástroj spustit. Ve výchozím nastavení je jeho hodnota 1, což znamená, že začíná prvním routerem v cestě, ale pomocí volby „-f“ (která očekává novou hodnotu TTL) lze nastavit novou hodnotu pole TTL. Vyzkoušel jsem například normální operaci traceroute a pak jsem zkusil traceroute s jinou hodnotou TTL.
$ traceroute google.com traceroute to google.com (74.125.236.132), 30 hops max, 60 byte packets 1 220.224.141.129 (220.224.141.129) 89.181 ms 101.540 ms 101.503 ms 2 115.255.239.65 (115.255.239.65) 101.468 ms 101.431 ms 101.324 ms 3 124.124.251.245 (124.124.251.245) 121.373 ms 121.350 ms 158.694 ms 4 115.255.239.45 (115.255.239.45) 101.223 ms 141.135 ms 123.932 ms 5 72.14.212.118 (72.14.212.118) 123.867 ms 123.832 ms 123.802 ms 6 72.14.232.202 (72.14.232.202) 123.773 ms 123.742 ms 587.812 ms 7 216.239.48.179 (216.239.48.179) 587.723 ms 587.681 ms 587.642 ms 8 bom03s02-in-f4.1e100.net (74.125.236.132) 577.548 ms 577.524 ms 587.512 ms $ traceroute google.com -f 8 traceroute to google.com (74.125.236.129), 30 hops max, 60 byte packets 8 bom03s02-in-f1.1e100.net (74.125.236.129) 96.961 ms 96.886 ms 96.849 ms
Vidíme tedy, že po použití volby -f s hodnotou 8 se zobrazil pouze poslední (8.) řádek z předchozího výstupu.