Moet IPv6-ferkear troch de VPN of direkt gean?
Beslis oft ::/0 yn de tunnel heart, mei trije betingsten: stipe fan de útgong, berikberens fan it einpunt en allinnich lokale netwurken.
Twa minsken fregen my ferline moanne om tsjinstelde útkomsten: de iene woe dat IPv6 troch de VPN dutsen waard, de oare woe dat de kantoarprinter oan it wurk bliuwe soe. Ien inkele rûte ::/0 kin beide net allinnich leverje. Oft dy rûte yn de tunnel heart, hinget fan trije betingsten ôf, en de earste slút it foar de measte kommersjele útgongen út. As de útgong gjin IPv6 draacht, ferberget it stjoeren fan de standertrûte dêryn jo ferkear yn in tunnel dy't nearne hat om it hinne te stjoeren.
Trije betingsten beslisse it antwurd
De standertrûte is ien rigel, ::/0, en hy past by elke IPv6-bestimming sûnder in mear spesifike rûte (RFC 4291). It is maklik om it te ynstallearjen. Om te beslissen oft jo it moatte, komt del op trije betingsten.
Betingst ien: de útgong dêr't jo mei ferbine, hat wurkjende IPv6 en is ree om it troch te stjoeren. Betingst twa: jo klant kin in paad nei it tunneleinpunt hâlde, dat meastentiids binnen it berik leit dat jo op it punt steane om te rûtsjen. Betingst trije: jo kinne de lokale IPv6-bestimmingen neame dy't bûten de tunnel bliuwe moatte.
Elke betingst falt op syn eigen wize, en dêrom kostet rieden in hiele jûn. In mislearre betingst ien jout jo stilte en in rûtetabel dy't korrekt liket. In mislearre betingst twa deadet de hânskodding in pear sekonden nei't it begjint. In mislearre betingst trije lit in wurkjende tunnel en in ûntefreden kollega by de printer efter.
| What you see | Decision |
|---|---|
| Exit answers IPv6 probes, no local IPv6 devices to protect | Route ::/0 into the tunnel |
| Exit answers IPv6 probes, printer or NAS reachable by a global address | Route ::/0, then give those prefixes a route of their own |
| Exit is IPv4-only inside the tunnel | Do not route ::/0; block IPv6 on the client |
Endpoint is reached over IPv6 and sits inside ::/0 | Install a host route for the endpoint first |
Draacht de útgong eins IPv6?
In tunelynterface mei in IPv6-adres bewiist neat oer de oare kant. In soad kommersjele profilen binne fan binnen allinnich IPv4: de tsjinner jout jo in v4-adres en smyt al it oare fuort. Ynstallearje in standertrûte út AllowedIPs derboppe en de kearn sil IPv6 graach stjoere nei in ynterface waans partner it nea sjocht.
Test fan de klant wylst de tunnel omheech is. ping -6 -c 3 2001:4860:4860::8888 en ip -6 route get 2001:4860:4860::8888 beantwurdzje ferskillende fragen: oft der in antwurd weromkomt, en hokker apparaat de kearn keas. Wannear't de twadde jo tunnel neamt en de earste neat werombringt, is de útgong it probleem, net de rûte.
As jo sels de útgong beheare, kin de klanttest slagje en it paad dochs dea rinne. Befêstigje net.ipv6.conf.all.forwarding=1 op de gateway en dat syn firewall pakketten akseptearret dy't út de tunnel trochstjoerd wurde. In korrekt rûte pakket nei in útgong dy't wegeret troch te stjoeren, liket fan de klantkant krekt op in rûteflater.
Kin de klant syn paad nei it einpunt hâlde?
Dit is dejinge dy't my pakte op in laptop mei in WireGuard-einpunt dat allinnich IPv6 is. It adres fan it einpunt is in gewoan globaal adres, dus it falt binnen ::/0. Rûtsje it hiele foarheaksel yn it ynterface en de hânskoddingspakketten jeie harsels yn 'e tunnel dy't se noch besykje te bouwen. De tunnel komt nea omheech, en neat yn 'e útfier fan de klant seit wêrom.
wg-quick behannelt dit op Linux. It liedt rûtes ôf fan AllowedIPs, ynstallearret se yn syn eigen tabel en foeget in beliedsregel ta sadat ferkear nei it einpunt earst fia de haadtabel oplost wurdt: de regel suppress_prefixlength 0 dy't jo yn ip -6 rule fine. Dêrom slagget wg-quick up wêr't in handskreaune ip -6 route add default dev wg0 jo ôfsnijt.
Kontrolearje beide steaten mei ip -6 route get <endpoint-v6>, foar en nei it omheech bringen fan de tunnel. As it antwurd feroaret nei jo tunnelapparaat, hawwe jo it paad fuortsmiten dat de tunnel nedich hat. Wannear't jo de rûtes sels skriuwe, foegje in hostrûte nei it einpunt ta fia de oarspronklike gateway, of ferbine mei it einpunt oer IPv4 en lit IPv6 oan 'e lading.
Wat moat bûten de tunnel bliuwe?
Mear spesifike rûtes ferslaan de standert, dus in foarheaksel op 'e keppeling of in ULA-berik mei in eigen rûte bliuwt wurkjen sûnder ekstra muoite. Dat is de stille reden wêrom't safolle folsleine-tunnel-IPv4-ynstellings oerlibje: de LAN-foarheaksels binne spesifiker as de standert en komme nea yn 'e tunnel.
It brekt as in lokaal apparaat berikber is fia in globaal adres, wat normaal is foar in printer dy't deselde router in iepenbier foarheaksel joech, in NAS of in televyzje. Dy adressen komme oerien mei ::/0 en neat oars, dus se ferhúzje mei al it oare yn 'e tunnel en ferdwine.
Beslis per bestimming, net per protokol. As twa of trije lokale hosts fan belang binne, jou har foarheaksels in rûte út it fysike ynterface, of smyt se út 'e ûnderhannele set. As de list trochgroeit, is it earlike antwurd split tunneling foar IPv6 mei in skreaune útsûnderingslist, net in standert dy't jo mar bliuwe patchje.
As it antwurd nee is, blokkearje it
IPv6 sûnder rûte litte is net itselde as it gewurde litte. In host mei in wurkjende IPv6-standert brûkt dy troch wylst de tunnel IPv4 draacht, dus it ferkear giet njonken de VPN fuort en elke tsjinst dy't IPv6 ferkiest, sjocht jo echte adres. Dat is in lek, gjin split-tunnel.
Kies ien en skriuw op hokker jo keazen hawwe. Rûtsje de standert en akseptearje de kompromissen hjirboppe, of skeakelje IPv6 út foar de doer fan de tunnel. It foarheaksel út AllowedIPs weilitte is op himsels net genôch, want it bestjoeringssysteem hâldt syn eigen standert. Op Linux is de rûge ferzje sysctl -w net.ipv6.conf.all.disable_ipv6=1; de fynere ferzje lit IPv6 bûten de tunnel falle mei in firewallregel. Telefoanklanten hawwe in eksplisite skeakel foar it blokkearjen fan IPv6 dy't itselde wurk docht.
Ferifiearje it as in lek
Bring de tunnel omheech en lês de steat ynstee fan de skeakel te fertrouwen. ip -6 route show default soe ien standert wize moatte, en ip -6 route get foar in bestimming bûten jo LAN soe it tunnelapparaat neame moatte. Werhelje beide nei in ferbrekking: in standert dy't de tunnel oerlibbet, is de flater dy't jo sochten.
Test dan de oare rjochting. Fan in host op it lokale netwurk, berik de klant op syn lokale IPv6-adres. As dat ophâldt te wurkjen, waard betingst trije nea foldien, wat de rûtetabel doe ek bewearde.
Skriuw de útkomst dêr't de folgjende persoan it fine sil: hokker foarheaksels lokaal bliuwe, wêrom, en wat de klant nei in ferbrekking docht. Twa rigels yn in runbook sparje de folgjende yngenieur it opnij ûntdekken fan 'e einpuntlus om middernacht.