IPv6 slutter å føre trafikk i det øyeblikket OpenVPN starter på nytt, og IPv4 fortsetter å virke. Tunnelgrensesnittet ble gjenskapt, og noe annet som administrerte IPv6-tilstanden dets, mistet enten adressen eller ruten som gjør prefikset tilgjengelig. Tre separate deler av tilstanden er involvert, og hver har en annen eier: leverandørens delegerte prefiks og levetiden dens, adressene som gis til VPN-klienter, og oppstrømsruten som sender klientprefikset tilbake til serveren. Identifiser eieren av hver del før du berører en daemon, fordi omstart av feil en skjuler problemet i en dag og bringer det tilbake ved neste tilkobling.

Tre deler IPv6-tilstand, tre eiere

StateTypical ownerWhat breaks when it is wrong
Delegated prefix and lifetimeUpstream router or provider via DHCPv6-PDClients keep addresses that the upstream no longer routes
Client addresses inside the tunnelOpenVPN server config or a delegation daemonNo global address, or an address outside the routed prefix
Return route for the client prefixUpstream router, or the server's own routing tableOutbound works, replies never arrive

En adresse med globalt omfang inne i tunnelen er ikke nok alene. Oppstrømsrutere må fortsatt sende prefikset tilbake mot VPN-serveren, og de gjør det ikke fordi serveren tilfeldigvis har en adresse fra det.

Derfor er det også risikabelt å kopiere et offentlig /64 inn i en tunnelpool. Et prefiks som rutes til serveren er ikke det samme som et prefiks oppstrømssiden behandler som on-link, og nabo-oppdagelse fyller ikke dette gapet.

Les serverens tilstand før du endrer noe

Ta opp tilstanden to ganger, én gang mens IPv6 virker og én gang etter omstarten, og sammenlign. Skrivebeskyttede visninger er nok, og de koster ingenting i et vedlikeholdsvindu:

ip -6 addr show
ip -6 route show table all
ip -6 rule show
sysctl net.ipv6.conf.all.forwarding

Se etter tre konkrete forskjeller: en rute som forsvant, en adresse som flyttet til en utdatert eller ugyldig levetid, og et prefiks som endret seg etter ny delegering mens VPN-konfigurasjonen fortsatt annonserer det gamle.

Hvis adressen forsvant men prefikset er uendret, har daemonen som tildeler den sluttet å administrere grensesnittet. Hvis prefikset endret seg men ikke adressene, er klientkonfigurasjonen utdatert. De to feilene ser identiske ut fra en nettleser og har ingenting til felles.

Bestem om dhcpcd skal administrere tunnelen

dhcpcd kan oppdage grensesnitt og delegere deler av et DHCPv6-prefiks til nedstrøms grensesnitt, og konfigurasjonen kan navngi delegeringsmålene eksplisitt. Uten et eksplisitt mål kan den dokumenterte oppførselen involvere andre grensesnitt, og det er slik en tunnel ender med en adresse ingen hadde planlagt.

To forhold bør skyve deg mot å la OpenVPN eie tunnelens statiske adressering: serveren skyver faste adresser i konfigurasjonen sin, og tunnelnavnet endres ved gjenoppkobling. Hvis begge gjelder, utelukker du tunnelen fra delegeringsdaemonen med vilje, med en kommentar som sier hvorfor.

Hvis delegering til tunnelen derimot er tilsiktet, implementer håndteringen av prefiksendringer. Det betyr å reagere når det delegerte prefikset eller levetiden endres, oppdatere serverens annonserte klientprefiks og legge ruten til på nytt. Å utelukke grensesnittet i det designet fjerner den eneste komponenten som kjenner det nye prefikset.

Omstart av dhcpcd kan se ut som det fikser ting fordi det gjenoppretter tilstand, men det fornyer eller trekker også tilbake konfigurasjon for grensesnitt du ikke tenkte på. Den gjenopprettingen gjør det ikke til et krav etter hver VPN-omstart. Det nullstiller også tellerne du brukte som bevis. Foretrekk en målrettet innlasting av grensesnittet du faktisk endret.

Valider IPv6 separat fra IPv4 NAT

Bekreft at videresending er aktivert og at oppstrømsruten peker på det faktiske klientprefikset, og lag deretter en ny tillatt IPv6-tilkobling. Sjekk også klientens egen IPv6-rutetabell, fordi en klient som viser en offentlig adresse ikke beviser at forespørselen brukte tunnelen.

IPv4-maskering løser et annet problem: returveien for private kilder. Den gjør ingenting for et tilbaketrukket IPv6-prefiks, og å legge den til bringer ikke IPv6 tilbake.

Avslutt med eierregisteret: hvilken komponent som delegerer prefikset, hvilken som tildeler klientadresser, hvilken som holder returruten, og hva som skjer med hver av dem ved gjenoppkobling. Fire linjer i en runbook sparer neste person for å starte tre daemoner på nytt for å finne den som betydde noe.

Relaterte artikler