Hvorfor traceroute dør i én retning gjennom en VPN-tunnel
Et spor som fullføres den ene veien og skriver ut stjerner den andre, er som regel et diagnostisk problem. Sammenlign probemetoder, returveier og en ekte forespørsel.
Traceroute-utdata som fullføres i én retning og skriver ut rader med stjerner i den andre, ser ut som asymmetrisk videresending, og det er det som regel ikke. Hvert viste hopp krever at proben ankommer, at en ruter bestemmer seg for å svare, og at svaret reiser tilbake og matches med proben. Bryt én av disse lenkene, og raden blir en stjerne mens tunnelen fortsetter å bære data.
Sporet er bevis om diagnostikk før det er bevis om transport. Spørsmålet som er verdt å stille, er hvilken av de tre lenkene som sviktet, og svaret kommer fra pakkene, ikke fra formen på utdataene.
En stjerne er et manglende svar, ikke et manglende hopp
Traceroute beveger seg utover ved å sende prober der TTL utløper én ruter lenger borte i hver runde. En ruter som forkaster en utløpt probe, skal returnere en ICMP Time Exceeded-melding som navngir seg selv, og verktøyet skriver ut det navnet. Det verktøyet faktisk venter på, er at meldingen kommer innenfor en tidsavbrudd. Hvis ruteren svarer fra en annen kildeadresse, begrenser hvor ofte den genererer feil, eller dropper proben uten et ord, gir runden ingenting som kan skrives ut.
Ingen av disse utfallene sier at veien fremover er ødelagt. En stjerne er en rapport om ubesvart post, ikke om en tom vei.
Probemetoden avgjør hvilket filter du møter
Standardmetoden på Linux er som regel en UDP-destinasjonsport med høyt nummer, tracert i Windows sender ICMP-ekkoer, og Linux kan få beskjed om å bruke ICMP eller TCP i stedet. Hver av dem ser ut som en annen type trafikk for en stateful brannmur eller en sky-sikkerhetsgruppe. Å sammenligne et UDP-spor fra den ene siden med et ICMP-spor fra den andre sammenligner to forskjellige eksperimenter. Fest metoden, adressefamilien, kildeadressen og tidsavbruddet før du kaller resultatene en forskjell.
For en rettferdig sammenligning, kjør sporet fra vertene som faktisk bærer trafikken, ikke fra en gateway som videresender på deres vegne. Et rutergenerert spor bruker ruterens egen kildeadresse og utdatapolicy, som kan være strengere enn noe en klient ser. Noter den nøyaktige kommandoen slik at neste person kan gjenta den.
Tidsavbruddsverdien er den andre halvdelen av eksperimentet, og den er lett å utelate fra notatene. En venting på to sekunder på en overbelastet vei rapporterer stjerner der en venting på fem sekunder rapporterer hopp. Hold verdien identisk på tvers av kjøringer slik at sammenligningen forblir om nettverket.
Returveien er sin egen rute
En ICMP-feil er en vanlig pakke med sin egen kilde og destinasjon, og den trenger en rute tilbake til traceren. Hvis tunnelpolicyen bærer LAN-prefiksene men ikke ruteradressen som genererte feilen, forlater meldingen en vei som ikke kan nå deg. Svarfiltrering kan droppe den selv når ruten finnes, fordi pakken ankommer fra en uventet adresse på et uventet grensesnitt. Det er en uoverensstemmelse i diagnostikkplanet, ikke en applikasjonsfeil.
Å utvide hver selektor til sporet fullføres, gjør bildet penere og policyen dårligere. Reparer den spesifikke diagnostikkadressen, eller godta stjernen og test applikasjonen på en annen måte.
Bekreft tunnelen med en ekte forespørsel
En TCP-håndtrykk på tjenestens egen port øver videresending, returruting og filtrering i retningen som betyr noe. Kommandoene nedenfor kjører i begge ender og sammenligner hva hver side kan åpne. Erstatt tjenesteporten og navnet på tunnelgrensesnittet med dine egne innstillinger.
traceroute -I -n -w 2 203.0.113.40
traceroute -T -p 443 -n -w 2 203.0.113.40
curl -sS -o /dev/null -w '%{http_code} %{time_total}\n' --max-time 5 http://203.0.113.40:8080/health
ss -tan state established
Les de to traceroute-kjøringene først: hvis ICMP-kjøringen viser hopp og TCP-kjøringen ikke gjør det, er forskjellen metode, ikke vei. Ta deretter curl-resultatet som svaret på applikasjonsnivå, fordi en fullført utveksling med en fornuftig statuskode betyr at både veien fremover og returveien virker for ekte trafikk. Socketlisten viser om forbindelsen i det hele tatt er etablert, noe ingen spor kan fortelle deg.
En tunnel som bærer en interaktiv økt i begge retninger mens ett traceroute skriver ut stjerner, er sunn og bare lite fotogen. Ta vare på kommandoutdataene fra hver side som registreringen, og behandle manglende hopp som et åpent spørsmål om diagnostikk i stedet for en dom om VPN-en.