Spor nettverksruten: Lær å bruke traceroute og tracepath

Nettverksdiagnostikk med Traceroute og Tracepath

Nettverksdiagnostikk er en vital del av hverdagen for enhver nettverks- eller systemadministrator. Dette omfatter grundig analyse og feilsøking av en rekke nettverksproblemer som kan oppstå.

For en erfaren administrator er det av stor betydning å forstå den veien en IP-pakke tar mellom to punkter i et nettverk. Denne kunnskapen gir verdifull innsikt.

Et populært og flittig brukt verktøy for å analysere og feilsøke nettverksveier på tvers av ulike plattformer er traceroute.

I sin enkelhet fungerer traceroute ved å spore banen til en IP-pakke fra kilde til destinasjon. Dette oppnås ved å sende ut testpakker (vanligvis ICMP ECHO eller TCP SYN) og deretter analysere de ICMP-svarene som kommer tilbake, spesielt «tidsavbrudd»-meldingene. Hver pakke sendes med en «Time To Live» (TTL)-verdi som starter på én og økes for hver overføring. Denne prosessen fortsetter til enten ICMP «port utilgjengelig» mottas, som indikerer at destinasjonen er nådd, eller maksimalt antall hopp er nådd (standard er 30 hopp).

Et typisk eksempel på hvordan traceroute ser ut:

$ 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
$

En standard traceroute-utskrift gir oss informasjon som TTL (Time To Live), tur-retur-tid for tre pakker, maksimalt antall hopp og pakkestørrelse i byte, i tillegg til IP-adressen og løst domenenavn (hvis tilgjengelig).

Traceroute er svært nyttig for å identifisere forsinkelser og ruteproblemer mellom to noder. Det hjelper også med å lokalisere potensielle feilpunkter på veien til destinasjonen. Det er imidlertid viktig å huske på at mange brannmurer og rutere blokkerer traceroute-meldinger over internett, noe som kan føre til at dataene som mottas ikke alltid er fullstendig nøyaktige.

Det finnes metoder for å omgå dette i noen grad ved å endre typen forespørsler som sendes, men disse kan kun tilby en delvis løsning. Derfor er det viktig å ha dette i bakhodet når man bruker dette verktøyet.

Enkelte alternativer i traceroute krever utvidede superbrukerrettigheter, da de innebærer endring av råpakker.

Tracepath Kommando

I Red Hat Enterprise Linux (RHEL) 8 og andre Linux-distribusjoner basert på denne, er ikke traceroute-kommandoen installert som standard. Dette kan oppleves som en stor forandring for de som er vant til å bruke traceroute fra tidligere Red Hat Linux eller CentOS-versjoner.

Men det finnes et like kraftig verktøy som er standard i RHEL8, nemlig tracepath. Det har lignende funksjonalitet som traceroute og er klart til bruk umiddelbart etter installasjonen av operativsystemet.

I tillegg støtter tracepath et MTU-alternativ, som gir mulighet til å identifisere MTU (Maximum Transmission Unit)-verdien. Dette er den største pakken tracepath kan sende over nettverket.

Her er et eksempel på utskrift fra tracepath for illustrasjon:

$ 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
$

Standard utskrift fra tracepath gir informasjon som TTL (Time To Live), tur-retur-tid for en pakke, MTU (Maximum Transmission Unit) som kan sendes over nettverket ved bruk av tracepath, og løst domenenavn når tilgjengelig.

Tracepath Syntaks

Den generelle syntaksen for bruk av tracepath-kommandoen er:

$ tracepath <alternativer> <destinasjons-DNS eller IP>

#1. Uten tilleggsflagg, viser tracepath ruten til destinasjonen, som illustrert nedenfor:

$ 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. Hvis du kun ønsker å se IP-adressene, kan du bruke -n flagget:

$ 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. For å vise både vertsnavn og IP-adresser, bruk -b flagget:

$ 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. For å angi en tilpasset pakkestørrelse i stedet for tracepaths standardverdi, som er 65535, bruk -l flagget og spesifiser den ønskede verdien:

$ 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. Du kan angi en spesifikk destinasjonsport ved å bruke -p flagget, for eksempel:

$ 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. Det maksimale antall hopp, som standard er 30, kan justeres ved å bruke -m flagget, som vist under:

$ 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
$

Det er viktig å bemerke at tracepath ikke støtter de samme avanserte superbrukerrettighetene som traceroute, da det ikke har funksjonalitet for endring av råpakker.

Konklusjon

Denne artikkelen har beskrevet bruken av traceroute-kommandoen, hvordan den benyttes i feilsøking av nettverksproblemer, og hvordan vi kan utføre de samme oppgavene i RHEL8-systemer ved hjelp av tracepath-kommandoen.

For mer informasjon om disse kommandoene, referer til de respektive man-sidene for verktøyene.

$ man traceroute
$ man tracepath