Vanen er å senke MTU-en så snart WireGuard oppfører seg dårlig, og den vanen skjuler en annen feil. En gateway som ikke videresender, og en sti som ikke bærer store pakker, gir gjenkjennelige mønstre: den ene feiler i begge retninger og ved hver størrelse, den andre overlever små forespørsler og dør på store. Avgjør hvilken form du har før du endrer noe tall. Testen er billig, og den fjerner halvparten av de mulige årsakene.

To feil, to forskjellige former

Et videresendingsproblem viser seg rett bak serveren. Håndtrykket lykkes, tunneladressen svarer, og ingenting bak gatewayen er tilgjengelig, selv ikke med en bitte liten forespørsel. Pakken nådde serveren og ble ikke sendt videre, eller svaret hadde ingen rute tilbake.

Et størrelsesproblem viser seg bare over en terskel. DNS, et TCP-håndtrykk og et lite API-kall virker, mens en filnedlasting eller et stort svar henger. Pakkene som fikk plass gikk hele veien, og de som ikke fikk plass ble sluppet et sted uten en brukbar rapport.

De beskrivelsene peker på forskjellige mennesker og forskjellige konfigurasjonsfiler, derfor er det mer verdt å måle formen enn å gjette. En enkelt ping til gatewayen kan ikke skille dem.

Utelukk videresending før du krymper noe

Test en destinasjon bak gatewayen, ikke gatewayen selv. En ping til serverens tunneladresse beviser bare at grensesnittet er oppe og at du når maskinen som avslutter tunnelen. Trafikk for det bredere nettet avhenger av at IP-videresending er slått på på den maskinen, og av en brannmur som tillater den videresendte strømmen. Begge må være sanne, og hvis én er usann, oppstår den samme stillheten.

Returrutering betyr like mye. Hvis destinasjonsnettet ikke vet hvordan det når klientens tunneladresse, kommer forespørselen og svaret forsvinner, og klienten rapporterer en tidsavbrudd som ser identisk ut med en droppet videresending.

Der designet bruker adresseoversettelse, er oversettelsesregelen en del av den returveien. Å fjerne den mens man jager et MTU-problem gjør ett fungerende design om til et ødelagt, så les de eksisterende reglene før du redigerer dem.

Mål hvor bruddet begynner

Les først videresendingsstatusen og filterreglene. Dette er skrivebeskyttede kontroller, og de svarer på det billige spørsmålet:

sysctl net.ipv4.ip_forward
sudo iptables -S FORWARD
ip route get 10.30.0.9

Test deretter størrelser med don’t-fragment-biten, fra klienten, mot en vert bak gatewayen:

ping -M do -s 1200 10.30.0.9
ping -M do -s 1400 10.30.0.9

Hvis den første testen virker og den andre feiler med en fragmenteringsfeil, forteller stien deg sin brukbare størrelse. Hvis ingen av dem virker, ser du på videresending eller ruting, og MTU er ikke variabelen som skal endres.

ObservationPoints towardWhere to look
Nothing beyond the gateway worksForwarding or return routeForwarding flag, filter rules, routing table
Small works, large stallsPacket size on the pathTunnel MTU and the link underneath
Only names failDNS resolutionThe resolver configured for the tunnel
Works sometimesMultiple paths or state expiryFlow selection and NAT state

Reparer laget du beviste

Når videresending er feilen, er rettelsen en videresendingsregel eller en rute, uttrykt så smalt som designet tillater. Når størrelsen er feilen, er rettelsen en MTU som tar høyde for innkapslingen på nettopp denne stien, brukt på grensesnittet som trenger det og ikke på hver adapter i flåten.

Uansett, gjenta deretter samme oppgave mot samme destinasjon. Hvis den opprinnelige store overføringen nå fullføres, tok endringen for seg laget som feilet. Hvis bare den lille testen ble bedre, behandlet du et symptom, og den virkelige grensen står fortsatt.

Skriv ned hvilken form du så før endringen. Den ene linjen, notert ved siden av rettelsen, er det som hindrer den neste i å senke en MTU som aldri var problemet.

Relaterte artikler