A duhet të kalojë trafiku IPv6 përmes VPN apo drejtpërdrejt?
Vendosni nëse ::/0 i përket brendësisë së tunelit, me tre kushte: mbështetja e daljes, arritshmëria e pikës fundore dhe vetëm rrjetet lokale.
Muajin e kaluar dy persona më kërkuan rezultate të kundërta: njëri donte që VPN të mbulonte IPv6, tjetri donte që printeri i zyrës të vazhdonte të punonte. Një rrugë e vetme ::/0 nuk mund t'i ofrojë të dyja vetë. Nëse kjo rrugë i përket brendësisë së tunelit varet nga tre kushte, dhe i pari e përjashton për shumicën e daljeve komerciale. Nëse dalja nuk mbart IPv6, drejtimi i rrugës së paracaktuar atje e fsheh trafikun tuaj në një tunel që nuk ka ku ta dërgojë.
Tre kushte vendosin përgjigjen
Rruga e paracaktuar është një rresht, ::/0, dhe përputhet me çdo destinacion IPv6 pa një rrugë më specifike (RFC 4291). Instalimi i saj është i lehtë. Vendimi nëse duhet ta bëni zbret në tre kushte.
Kushti i parë: dalja me të cilën lidheni ka IPv6 funksional dhe është e gatshme ta përçojë. Kushti i dytë: klienti juaj mund të mbajë një shteg drejt pikës fundore të tunelit, e cila zakonisht ndodhet brenda intervalit që do të rrugëzoni. Kushti i tretë: mund të emërtoni destinacionet lokale IPv6 që duhet të mbeten jashtë tunelit.
Çdo kusht dështon në mënyrën e vet, prandaj hamendja kushton një mbrëmje të tërë. Kushti i parë i dështuar ju jep heshtje dhe një tabelë rrugësh që duket e saktë. Kushti i dytë i dështuar vret shtrëngimin e duarve disa sekonda pasi fillon. Kushti i tretë i dështuar lë një tunel funksional dhe një koleg të pakënaqur te printeri.
| 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 |
A mbart vërtet dalja IPv6?
Një ndërfaqe tuneli me adresë IPv6 nuk provon asgjë për anën tjetër. Shumë profile komerciale janë brenda vetëm IPv4: serveri ju jep një adresë v4 dhe hedh poshtë gjithçka tjetër. Instaloni sipër një rrugë të paracaktuar nga AllowedIPs dhe bërthama do të dërgojë me kënaqësi IPv6 në një ndërfaqe që pala tjetër nuk e sheh kurrë.
Testoni nga klienti ndërsa tuneli është lart. ping -6 -c 3 2001:4860:4860::8888 dhe ip -6 route get 2001:4860:4860::8888 përgjigjen pyetjeve të ndryshme: nëse kthehet një përgjigje dhe cilin pajisje zgjodhi bërthama. Kur i dyti emërton tunelin tuaj dhe i pari nuk kthen asgjë, problemi është dalja, jo rruga.
Nëse e administroni vetë daljen, testi i klientit mund të kalojë dhe shtegu përsëri të përfundojë në një qorrsokak. Konfirmoni net.ipv6.conf.all.forwarding=1 në portë dhe që muri i saj i zjarrit pranon paketat e përçuar jashtë tunelit. Një paketë e rrugëzuar saktë drejt një daljeje që refuzon të përçojë duket nga ana e klientit pikërisht si një gabim rrugëzimi.
A mund ta mbajë klienti shtegun e tij drejt pikës fundore?
Ky është rasti që më kapi në një laptop me pikë fundore WireGuard vetëm IPv6. Adresa e pikës fundore është një adresë globale e zakonshme, kështu që bie brenda ::/0. Rrugëzoni të gjithë prefiksin në ndërfaqe dhe paketat e shtrëngimit të duarve do të ndjekin vetveten në tunelin që ende po përpiqen të ndërtojnë. Tuneli nuk ngrihet kurrë, dhe asgjë në daljen e klientit nuk thotë pse.
wg-quick e trajton këtë në Linux. Ai nxjerr rrugë nga AllowedIPs, i instalon në tabelën e vet dhe shton një rregull politike që trafiku drejt pikës fundore të zgjidhet fillimisht përmes tabelës kryesore: rregulli suppress_prefixlength 0 që e gjeni në ip -6 rule. Për këtë arsye wg-quick up ka sukses aty ku një ip -6 route add default dev wg0 e shkruar me dorë ju pret.
Kontrolloni të dyja gjendjet me ip -6 route get <endpoint-v6>, para dhe pas ngritjes së tunelit. Nëse përgjigja ndryshon drejt pajisjes tuaj të tunelit, keni hequr shtegun që tuneli ka nevojë. Kur i shkruani vetë rrugët, shtoni një rrugë hosti drejt pikës fundore përmes portës origjinale, ose lidhuni me pikën fundore përmes IPv4 dhe lini IPv6 për ngarkesën.
Çfarë duhet të mbetet jashtë tunelit?
Rrugët më specifike mundin të paracaktuarën, kështu që një prefiks në lidhje ose një interval ULA me rrugën e vet vazhdon të punojë pa përpjekje shtesë. Kjo është arsyeja e heshtur pse kaq shumë konfigurime IPv4 me tunel të plotë mbijetojnë: prefikset e LAN janë më specifike se e paracaktuara dhe nuk hyjnë kurrë në tunel.
Kjo prishet kur një pajisje lokale është e arritshme përmes një adrese globale, gjë që është normale për një printer që i njëjti ruter i dha një prefiks publik, një NAS ose një televizor. Këto adresa përputhen me ::/0 dhe me asgjë tjetër, prandaj kalojnë në tunel bashkë me gjithçka tjetër dhe zhduken.
Vendosni sipas destinacionit, jo sipas protokollit. Nëse dy ose tre hoste lokale kanë rëndësi, jepuni prefikseve të tyre një rrugë jashtë përmes ndërfaqes fizike, ose hiqini nga grupi i negociuar. Nëse lista vazhdon të rritet, përgjigjja e ndershme është split tunneling për IPv6 me një listë të shkruar përjashtimesh, jo një rrugë e paracaktuar që vazhdoni ta patch-oni.
Nëse përgjigjja është jo, bllokojeni
Lënia e IPv6 pa rrugë nuk është njësoj si lënia e tij në paqe. Një host me një rrugë të paracaktuar IPv6 funksionale vazhdon ta përdorë atë ndërsa tuneli mbart IPv4, kështu që trafiku del pranë VPN dhe çdo shërbim që preferon IPv6 sheh adresën tuaj reale. Ky është një rrjedhje, jo një tunel i ndarë.
Zgjidhni një dhe shkruani cilën zgjodhët. Rrugëzoni të paracaktuarën dhe pranoni kompromiset më sipër, ose çaktivizoni IPv6 për kohëzgjatjen e tunelit. Heqja e prefiksit nga AllowedIPs nuk mjafton vetëm, sepse sistemi operativ mban rrugën e vet të paracaktuar. Në Linux versioni i papërpunuar është sysctl -w net.ipv6.conf.all.disable_ipv6=1; versioni më i hollë e hedh IPv6 jashtë tunelit me një rregull muri zjarri. Klientët e telefonit kanë një çelës të qartë bllokimi të IPv6 që bën të njëjtën punë.
Verifikojeni si një rrjedhje
Ngrini tunelin dhe lexoni gjendjen në vend që t'i besoni çelësit. ip -6 route show default duhet të tregojë një të paracaktuar, dhe ip -6 route get për një destinacion jashtë LAN-it tuaj duhet të emërtojë pajisjen e tunelit. Përsëritini të dyja pas një shkëputjeje: një e paracaktuar që i mbijeton tunelit është gabimi që kërkonit.
Më pas testoni drejtimin tjetër. Nga një host në rrjetin lokal, arrini klientin në adresën e tij lokale IPv6. Nëse kjo ndalon së punuari, kushti i tretë nuk u plotësua kurrë, çfarëdo që pretendonte tabela e rrugëve në atë moment.
Shkruani rezultatin aty ku do ta gjejë personi tjetër: cilat prefikse mbeten lokale, pse dhe çfarë bën klienti pas një shkëputjeje. Dy rreshta në një runbook kursejnë inxhinierin tjetër nga rizbulimi i ciklit të pikës fundore në mesnatë.