Du LAN-oj, unu WireGuard-hubo kaj IPv6-adresa plano, kiu devas respondi tri apartajn demandojn: kiu prefikso, kiu adreso apartenas al ĉiu enkursigilo, kaj kiu samtavolo posedas kiun subreton. Eraro en unu el ili produktas tunelon, kiu faras manpremon kaj enkursigas nenion. La plano sube pritraktas privatan du-ejan dezajnon en tiu ordo. Ĝi intence ne provizas IPv6-interretan aliron.

Decidu, por kio utilas la prefikso

Unika loka prefikso el fd00::/8 estas la natura elekto, kiam la celo estas privata atingeblo inter ejoj. Ĝi restas stabila sendepende de tio, kiu ISP servas ĉiun lokon, kaj ĝi ne estas anoncata en la tutmonda enkursiga tabelo, do ĝi ne povas liki vian internan numeradon en la interreton.

La sama eco estas la limigo. ULA donas neniun publikan returnan vojon, ĉar neniu suprenfluo scias enkursigi ĝin al via enirejo. Se la postulo inkluzivas IPv6-interretan eliron, vi bezonas asignon de provizanto, kiu enkursigas ĝin al vi, kaj tio estas aparta dezajna decido kun propra prefiksa grando.

Ne supozu, ke ĉiu deplojo bezonas /48. RFC 6177 malproksimiĝis de unu deviga fina eja grando, kaj la ĝusta grando sekvas la nombron de retoj, kiujn vi funkciigos. Generu la ULA-on per la proceduro RFC 4193 anstataŭ elpensi prefikson, kiun alia organizo ankaŭ povus uzi. Skribu la rezulton en la adresan planon antaŭ ol iu ajn aparato estas agordita, ĉar prefikso, kiun neniu registris, estas prefikso, kiun iu reuzos.

Dividu la prefikson en rolojn

La suba ekzemplo uzas fd7c:2e91:4a00::/48, kaj la tabelo estas ordigita laŭ tio, kie ĉiu bloko estas skribita, ne laŭ ejo. Traktu la valorojn kiel specimenon kaj generu la viajn antaŭ ol deploji ion ajn.

Where it is writtenWhat appears thereBlock usedWhat it establishes
Hub wg0.conf, interface addressA single host address on the tunnelfd7c:2e91:4a00:ff00::1/128The hub's own tunnel identity
Hub wg0.conf, Site A peerTwo ranges in one AllowedIPs line::2/128 and :10::/64That A owns its tunnel address and its LAN
Hub wg0.conf, Site B peerTwo ranges in one AllowedIPs line::3/128 and :20::/64That B owns its tunnel address and its LAN
Site A wg0.conf, interface addressA single host address on the tunnelfd7c:2e91:4a00:ff00::2/128A's identity as the hub sees it
Site B wg0.conf, interface addressA single host address on the tunnelfd7c:2e91:4a00:ff00::3/128B's identity as the hub sees it

La LAN-blokoj estas /64, ĉar ordinara SLAAC atendas 64-bitan interfacan identigilon. Dividi LAN-on en pli malgrandan blokon rompas tiun supozon sur la plej multaj gastigantoj, kaj la operacia kosto ne valoras la adresan ŝparadon en privata plano. Ambaŭ LAN-blokoj venas el la mezo de la /48, lasante la malaltan intervalon libera por postaj ejoj.

La tunelaj adresoj estas administra provizo, ne reto sur la ligilo. Ĉiu interfaco ricevas unu /128 el ĝi, do neniu gastiganto supozas komunan subreton sur la tunelo kaj najbara malkovro ne funkcias, kie ĝi ne necesas. Tenu la rolojn disajn kaj registru ilin en la adresa plano de la organizo, por ke posta ejo ne reuzu blokon.

Donu al ĉiu enkursigilo unu tunelan adreson

Asignu unu /128 por enkursigilo kaj konservu la ekzistantajn ŝlosilojn kaj finpunktojn de la funkcianta hubo. La tri valoroj sube diferencas nur en la gastiganta parto.

Hub:    Address = fd7c:2e91:4a00:ff00::1/128
Site A: Address = fd7c:2e91:4a00:ff00::2/128
Site B: Address = fd7c:2e91:4a00:ff00::3/128

Ĉi tiu /128 priskribas la ununuran adreson asignitan al tiu interfaco. Ĝi diras nenion pri tio, kiom da celoj la samtavolo rajtas enkursigi, ĉar atingeblo esprimiĝas en AllowedIPs, ne en la interfaca prefikso.

Ĉiu eja enkursigilo ankaŭ bezonas adreson en sia LAN-bloko kaj manieron disdoni ĝin, kutime enkursigilajn anoncojn por SLAAC. WireGuard ne sendas tiujn anoncojn por vi, kaj ĝi ne pontas la du LAN-ojn. La eja enkursigilo estas enkursigilo en ambaŭ direktoj.

Metu la posedon de la subreto en AllowedIPs

La samtavola enskribo de la hubo por Ejo A posedas la tunelan adreson de A kaj la LAN-on de A, kaj tiu paro estas la tuta posedodeklaro. Nenio alia en tiu samtavola sekcio bezonas priskribi la ejon.

AllowedIPs = fd7c:2e91:4a00:ff00::2/128, fd7c:2e91:4a00:10::/64

La samtavola enskribo por Ejo B posedas la kongruantan paron, kaj simetrio ĉi tie pli gravas ol koncizo. Legu la du liniojn kune kaj la posedodivido videblas per unu rigardo.

AllowedIPs = fd7c:2e91:4a00:ff00::3/128, fd7c:2e91:4a00:20::/64

Ĉi tiuj estas du apartaj samtavolaj sekcioj, ne du listoj konkurencantaj por unu samtavolo. WireGuard uzas AllowedIPs en ambaŭ direktoj: ĝi elektas la samtavolon por elira celo, kaj ĝi malakceptas eniran paketon, kies fonto ne kongruas kun la intervalo asignita al la samtavolo, kiu malĉifris ĝin. Doni la tutan /48 al ambaŭ samtavoloj malŝaltus tiun duan kontrolon kaj malklarigus, kiu ejo posedas kiun blokon. Ĝuste tiu distingo igas malĝustan fontan adreson videbla anstataŭ silente akceptita.

Ĉiu ejo bezonas nur la celojn atingeblajn per sia huba samtavolo: Ejo A listigas la huban adreson, la tunelan adreson de Ejo B kaj la LAN-on de B, kaj Ejo B listigas la reciprokan aron. La listoj estas intence nesimetriaj, ĉar ĉiu enkursigilo vidas alian flankon de la topologio. Skribu ambaŭ el la adresa plano anstataŭ el la agordo de la alia ejo, ĉar tiel kaduka intervalo postvivas renumeradon.

Kun wg-quick, ĉi tiuj intervaloj ankaŭ kreas itinerojn. Kun systemd-networkd aŭ permana agordo, aldonu la ekvivalentajn itinerojn mem; alie la tunelo portas paketojn, kiujn la kerno neniam sendas en ĝin.

Kompletigu la plusendadon kaj testu ambaŭ direktojn

Ŝaltu IPv6-plusendadon sur la hubo kaj sur ambaŭ ejaj enkursigiloj, kaj permesu la postulatajn interejajn servojn en la plusenda politiko. Tenu ICMPv6 Packet Too Big-mesaĝojn uzeblaj, ĉar forĵeti ilin rompas vojan MTU-malkovron kaj kaŭzas haltojn ĉe grandaj transigoj, kiuj aspektas kiel aplikaĵaj fuŝoj. Hubo, kiu plusendas sen la fajroŝirma permeso, forĵetas la paketon inter enkursigo kaj la tunelo. Tiu fiaskoreĝimo indas esti konata, ĉar la tunelo restas aktiva kaj mortas nur kelkaj fluoj.

sysctl net.ipv6.conf.all.forwarding
ip -6 route
ping -6 -c 3 fd7c:2e91:4a00:20::1

Testu de gastiganto en Ejo A al gastiganto en Ejo B kaj poste en la kontraŭa direkto. Ping al la tunela adreso de la hubo ekzercas nur la unuan salton kaj sukcesos eĉ kiam la LAN-itineroj estas malĝustaj. La fluo de gastiganto al gastiganto estas tiu, kiu pruvas la planon.

La ekstera WireGuard-konekto povas funkcii super IPv4 dum la interna trafiko estas IPv6, kaj tiu sendependeco utilas dum migrado. Se tutmonda IPv6-eliro aldoniĝos poste, revizitu la provizantan asignon, fontan adresan elekton kaj returnan enkursigon kiel novan dezajnpaŝon; la supra privata plano restas valida por trafiko inter ejoj.

Rilataj artikoloj