Diagnostika sítě je nezbytnou součástí každé práce správce sítě/systému, která zahrnuje analýzu a řešení různých typů síťových problémů.
Znalost cesty, kterou IP paket prochází mezi dvěma body v síti, přináší mnoho užitečných informací pro trénované oči.
Jedním takovým populárním a běžně používaným multiplatformním nástrojem, který pomáhá při analýze síťových cest a odstraňování problémů, je traceroute.
Jednoduše řečeno, traceroute sleduje cestu IP paketu mezi zdrojem a cílem odesláním testovacích paketů (pravděpodobně ICMP ECHO nebo TCP SYN) a poté naslouchá jejich ICMP odpovědím „překročení času“. TTL těchto paketů jsou záměrně udržovány jako jeden a jsou zvyšovány o jeden, dokud nedostaneme ICMP „port nedostupný“, což znamená, že jsme se dostali na hostitele nebo dosáhli maximální hodnoty (ve výchozím nastavení 30 skoků).
Příklad výstupu traceroute vypadá nějak takto:
$ traceroute google.com traceroute to google.com (172.217.169.14), 30 hops max, 60 byte packets 1 140.91.200.22 (140.91.200.22) 0.129 ms 140.91.200.19 (140.91.200.19) 0.151 ms 140.91.200.77 (140.91.200.77) 0.114 ms 2 linxbgp1.iwscloud.com (195.66.226.34) 0.735 ms 0.701 ms 1.024 ms 3 195.66.224.125 (195.66.224.125) 0.603 ms 0.591 ms 0.591 ms 4 108.170.246.129 (108.170.246.129) 0.583 ms 0.745 ms 0.714 ms 5 209.85.241.95 (209.85.241.95) 1.576 ms 209.85.241.93 (209.85.241.93) 1.545 ms 209.85.241.95 (209.85.241.95) 1.520 ms 6 lhr25s26-in-f14.1e100.net (172.217.169.14) 0.584 ms 0.547 ms 0.507 ms $
Výchozí výstup traceroute, jak je znázorněno výše, zobrazuje TTL (Time To Live) nebo dobu zpáteční cesty tří paketů, maximální počet skoků a velikost paketu v bajtech a IP adresu a přeložený název domény, je-li to možné.
Traceroute je velmi užitečný pro určení zpoždění odezvy a směrování mezi dvěma uzly. Dále pomáhá určit body selhání na trase do cíle. Mnoho firewallů a routerů blokuje zprávy traceroute na internetu, takže jejich výstup nemusí být vždy správný.
Existují do určité míry možná řešení změnou typu zpráv sondy, ale tento problém může pomoci obejít jen do určité míry. Při používání tohoto nástroje je tedy třeba na to pamatovat.
Některé možnosti v traceroute vyžadují zvýšená oprávnění superuživatele, která umožňují úpravu nezpracovaných paketů.
Table of Contents
Příkaz tracepath
Red Hat Enterprise Linux nebo RHEL 8 a jeho odvozené linuxové distribuce se standardně nedodávají s nainstalovaným příkazem traceroute. To se může zdát jako významná změna pro ty, kteří jsou zvyklí na nástroj traceroute na předchozích verzích Red Hat Linux nebo CentOS.
Ale na RHEL8 je standardně dostupný stejně schopný příkaz s názvem tracepath, který má podobné schopnosti jako jeho protějšek tracepath a je připraven k použití s instalací OS.
Navíc tracepath podporuje volbu MTU, která umožňuje detekovat hodnotu MTU nebo Maximum Transmission Unit, což je největší paket, který může tracepath poslat přes síť.
Ukázkový výstup tracepath je uveden níže pro referenci:
$ tracepath 131.153.76.66 1?: [LOCALHOST] pmtu 9000 1: 140.91.200.23 0.416ms asymm 2 1: 140.91.200.23 0.239ms asymm 2 2: 140.91.200.74 0.194ms pmtu 1500 2: oracle-svc071175-lag003322.ip.twelve99-cust.net 1.344ms 3: ldn-b7-link.ip.twelve99.net 19.996ms asymm 2 4: ldn-bb1-link.ip.twelve99.net 0.803ms asymm 5 5: prs-bb1-link.ip.twelve99.net 8.548ms asymm 6 6: mei-b5-link.ip.twelve99.net 18.111ms asymm 5 7: no reply 8: phoenix-svc071932-ic358857.ip.twelve99-cust.net 179.691ms asymm 7 9: 131.153.47.139 163.358ms asymm 8 10: no reply 11: 131.153.76.66 159.071ms !H Resume: pmtu 1500 $
Výchozí výstup tracepath, jak je znázorněno výše, ukazuje TTL (Time To Live) nebo dobu zpětného přenosu paketu, MTU (Maximum Transmission Unit), který lze odeslat přes síť pomocí tracepath a vyřešeného názvu domény, kdykoli je to možné.
Syntaxe tracepath
Obecná syntaxe použití příkazu tracepath je následující:
$ tracepath <options> <destination DNS or IP>
#1. Bez příznaků zobrazuje tracepath cestu k cíli, jak je uvedeno níže:
$ tracepath 131.153.56.85 1?: [LOCALHOST] pmtu 9000 1: 140.91.200.77 0.226ms asymm 2 1: 140.91.200.79 0.497ms asymm 2 2: 140.91.200.74 0.216ms pmtu 1500 2: oracle-svc071174-lag003319.ip.twelve99-cust.net 0.691ms 3: slou-b1-link.ip.twelve99.net 1.249ms asymm 2 4: ldn-bb4-link.ip.twelve99.net 0.749ms asymm 3 5: nyk-bb1-link.ip.twelve99.net 80.617ms asymm 8 6: rest-bb1-link.ip.twelve99.net 153.250ms asymm 21 7: nyk-bb1-link.ip.twelve99.net 83.084ms asymm 6 8: nash-bb1-link.ip.twelve99.net 280.770ms asymm 9 9: no reply 10: dls-b23-link.ip.twelve99.net 110.820ms asymm 9 11: phx-b1-link.ip.twelve99.net 131.524ms 12: phx-b1-link.ip.twelve99.net 131.632ms asymm 11 13: giglinx-ic305413-phx-b1.ip.twelve99-cust.net 132.583ms asymm 12 14: no reply 15: giglinx-ic305414-phx-b1.ip.twelve99-cust.net 142.685ms asymm 12 16: PHOENIX-NAP.ear3.Chicago2.Level3.net 135.245ms asymm 4 17: no reply 18: no reply 19: speedchi.phoenixnap.com 133.809ms reached Resume: pmtu 1500 hops 19 back 8 $
#2. Pokud chcete vytisknout pouze IP adresu, můžete použít parametr -n:
$ tracepath -n 131.153.56.85 1?: [LOCALHOST] pmtu 1500 1: 140.91.200.74 0.393ms asymm 2 1: 140.91.200.21 0.180ms asymm 2 2: 213.248.69.255 0.576ms 3: 213.248.98.246 1.210ms asymm 2 4: 62.115.117.122 1.371ms asymm 3 5: 62.115.133.239 141.920ms asymm 20 6: 62.115.141.244 77.732ms asymm 7 7: no reply 8: 62.115.137.55 881.711ms asymm 9 9: no reply 10: 62.115.137.55 914.855ms asymm 9 11: 62.115.125.97 132.182ms 12: 62.115.125.97 131.686ms asymm 11 13: 62.115.42.6 133.132ms asymm 12 14: no reply 15: 62.115.42.10 143.880ms asymm 12 16: 4.14.13.150 134.869ms asymm 4 17: no reply 18: 4.14.13.150 145.263ms asymm 4 19: 131.153.56.85 133.636ms reached Resume: pmtu 1500 hops 19 back 8 $
#3. Chcete-li vytisknout názvy hostitelů i IP adresy, použijte příznak -b:
$ tracepath -b 131.153.56.85 1?: [LOCALHOST] pmtu 1500 1: 140.91.200.19 (140.91.200.19) 0.197ms asymm 2 1: 140.91.200.74 (140.91.200.74) 0.141ms asymm 2 2: oracle-svc071175-lag003322.ip.twelve99-cust.net (213.248.98.247) 1.186ms 3: slou-b1-link.ip.twelve99.net (213.248.98.246) 10.273ms asymm 2 4: ldn-bb4-link.ip.twelve99.net (62.115.141.246) 0.941ms asymm 3 5: prs-bb2-link.ip.twelve99.net (62.115.133.239) 141.858ms asymm 20 6: rest-bb1-link.ip.twelve99.net (62.115.141.244) 76.210ms asymm 7 7: no reply 8: rest-bb1-link.ip.twelve99.net (62.115.141.244) 89.209ms asymm 7 9: no reply 10: dls-b23-link.ip.twelve99.net (62.115.136.119) 110.335ms asymm 9 11: phx-b1-link.ip.twelve99.net (62.115.125.97) 132.091ms 12: phx-b1-link.ip.twelve99.net (62.115.125.97) 131.844ms asymm 11 13: giglinx-ic315451-phx-b1.ip.twelve99-cust.net (80.239.195.78) 142.975ms asymm 14 14: no reply 15: no reply 16: PHOENIX-NAP.ear3.Chicago2.Level3.net (4.14.13.150) 135.233ms asymm 4 17: no reply 18: no reply 19: speedchi.phoenixnap.com (131.153.56.85) 133.871ms reached Resume: pmtu 1500 hops 19 back 8 $
#4. Chcete-li nastavit vlastní hodnotu délky paketu namísto použití výchozí hodnoty tracepath, tj. 65535, zadejte hodnotu s parametrem -l:
$ tracepath -l 300 131.153.56.85 1: 140.91.200.77 0.405ms asymm 2 2: oracle-svc071174-lag003319.ip.twelve99-cust.net 0.589ms 3: slou-b1-link.ip.twelve99.net 1.448ms asymm 2 4: ldn-bb4-link.ip.twelve99.net 0.960ms asymm 3 5: nyk-bb1-link.ip.twelve99.net 81.564ms asymm 8 6: rest-bb1-link.ip.twelve99.net 78.414ms asymm 7 7: nyk-bb1-link.ip.twelve99.net 84.286ms asymm 6 8: rest-bb1-link.ip.twelve99.net 87.529ms asymm 7 9: no reply 10: dls-b23-link.ip.twelve99.net 110.534ms asymm 9 11: phx-b1-link.ip.twelve99.net 131.449ms 12: phx-b1-link.ip.twelve99.net 131.303ms asymm 11 13: giglinx-ic315451-phx-b1.ip.twelve99-cust.net 143.059ms asymm 14 14: phx-b1-link.ip.twelve99.net 142.348ms asymm 11 15: giglinx-ic--305416-phx-b1.ip.twelve99-cust.net 143.554ms asymm 12 16: PHOENIX-NAP.ear3.Chicago2.Level3.net 134.790ms asymm 4 17: no reply 18: PHOENIX-NAP.ear3.Chicago2.Level3.net 145.926ms asymm 4 19: speedchi.phoenixnap.com 133.736ms reached Resume: pmtu 300 hops 19 back 8 $
#5. Počáteční cílový port můžeme také nastavit pomocí parametru -p jako:
$ tracepath -p 9000 131.153.56.85 1?: [LOCALHOST] pmtu 1500 1: 140.91.200.18 0.160ms asymm 2 1: 140.91.200.74 0.177ms asymm 2 2: oracle-svc071175-lag003322.ip.twelve99-cust.net 1.151ms 3: slou-b1-link.ip.twelve99.net 1.727ms asymm 2 4: no reply 5: nyk-bb1-link.ip.twelve99.net 81.357ms asymm 8 6: rest-bb1-link.ip.twelve99.net 78.325ms asymm 7 7: no reply 8: rest-bb1-link.ip.twelve99.net 87.908ms asymm 7 9: no reply 10: dls-b23-link.ip.twelve99.net 109.797ms asymm 9 11: phx-b1-link.ip.twelve99.net 132.036ms 12: dls-b23-link.ip.twelve99.net 121.404ms asymm 9 13: giglinx-ic315450-phx-b1.ip.twelve99-cust.net 136.322ms asymm 12 14: phx-b1-link.ip.twelve99.net 142.596ms asymm 11 15: no reply 16: PHOENIX-NAP.ear3.Chicago2.Level3.net 135.182ms asymm 4 17: no reply 18: no reply 19: speedchi.phoenixnap.com 133.562ms reached Resume: pmtu 1500 hops 19 back 8 $
#6. Maximální skoky, které jsou standardně nastaveny na 30, lze upravit pomocí parametru -m, jak je znázorněno níže:
$ tracepath -m 20 131.153.56.85 1?: [LOCALHOST] pmtu 1500 1: 140.91.200.18 0.175ms asymm 2 1: 140.91.200.77 0.169ms asymm 2 2: oracle-svc071174-lag003319.ip.twelve99-cust.net 0.669ms 3: slou-b1-link.ip.twelve99.net 2.443ms asymm 2 4: no reply 5: prs-bb2-link.ip.twelve99.net 142.778ms asymm 20 6: rest-bb1-link.ip.twelve99.net 76.756ms asymm 7 7: no reply 8: rest-bb1-link.ip.twelve99.net 89.272ms asymm 7 9: no reply 10: dls-b23-link.ip.twelve99.net 110.378ms asymm 9 11: phx-b1-link.ip.twelve99.net 132.582ms 12: phx-b1-link.ip.twelve99.net 132.135ms asymm 11 13: phx-b1-link.ip.twelve99.net 142.154ms asymm 11 14: no reply 15: giglinx-ic305414-phx-b1.ip.twelve99-cust.net 142.298ms asymm 12 16: PHOENIX-NAP.ear3.Chicago2.Level3.net 134.362ms asymm 4 17: no reply 18: no reply 19: speedchi.phoenixnap.com 133.474ms reached Resume: pmtu 1500 hops 19 back 8 $
Všimněte si, že tracepath nepodporuje zvýšená oprávnění superuživatele, jako je traceroute, protože nepodporuje pokročilé funkce úpravy paketů.
souhrn
Tento článek shrnul použití příkazu traceroute, jak se používá při odstraňování problémů souvisejících se sítí a jak můžeme provádět stejné úkoly v systémech RHEL8 pomocí příkazu tracepath.
Chcete-li se o těchto příkazech dozvědět více, použijte příslušnou manuálovou stránku nástroje.
$ man traceroute $ man tracepath