Dvije LAN mreže, jedno WireGuard čvorište i IPv6 plan adresa koji mora odgovoriti na tri odvojena pitanja: koji prefiks, koja adresa pripada kojem usmjerivaču i koji parnjak posjeduje koju podmrežu. Pogrešan odgovor na jedno od njih daje tunel koji obavi rukovanje i ne usmjerava ništa. Plan u nastavku prolazi kroz privatni dizajn s dvije lokacije tim redom. Namjerno ne osigurava internetski pristup preko IPv6.

Odredite čemu služi prefiks

Jedinstveno lokalni prefiks iz fd00::/8 prirodan je izbor kada je cilj privatna dostupnost između lokacija. Ostaje stabilan bez obzira na to koji ISP opslužuje svaku lokaciju i ne objavljuje se u globalnoj tablici usmjeravanja, pa ne može procuriti vaše interno numeriranje na internet.

Isto svojstvo je i ograničenje. ULA ne daje javni povratni put jer nijedan upstream ne zna usmjeriti ga prema vašem pristupniku. Ako zahtjev uključuje izlaz na internet preko IPv6, potrebna vam je dodjela od davatelja koji ga usmjerava prema vama, a to je zasebna dizajnerska odluka s vlastitom veličinom prefiksa.

Ne pretpostavljajte da svaka implementacija treba /48. RFC 6177 odmaknuo se od jedne obavezne veličine krajnje lokacije, a ispravna veličina slijedi broj mreža kojima ćete upravljati. Generirajte ULA po postupku RFC 4193 umjesto izmišljanja prefiksa koji bi mogla koristiti i druga organizacija. Upišite rezultat u plan adresa prije konfiguriranja bilo kojeg uređaja, jer prefiks koji nitko nije zabilježio jest prefiks koji će netko ponovno upotrijebiti.

Podijelite prefiks na uloge

Primjer u nastavku koristi fd7c:2e91:4a00::/48, a tablica je organizirana prema tome gdje se koji blok zapisuje, a ne prema lokaciji. Tretirajte vrijednosti kao primjer i generirajte svoje prije bilo kakve implementacije.

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

LAN blokovi su /64 jer uobičajeni SLAAC očekuje 64-bitni identifikator sučelja. Dijeljenje LAN mreže na manji blok ruši tu pretpostavku na većini hostova, a operativni trošak nije vrijedan uštede adresa u privatnom planu. Oba LAN bloka dolaze iz sredine /48, ostavljajući niži raspon slobodnim za kasnije lokacije.

Adrese tunela su administrativna hrpa, a ne mreža na vezi. Svako sučelje dobiva jedan /128 iz nje, pa nijedan host ne pretpostavlja zajedničku podmrežu na tunelu i otkrivanje susjeda ne radi tamo gdje nije potrebno. Držite uloge razdvojene i zabilježite ih u planu adresa organizacije kako kasnija lokacija ne bi ponovno upotrijebila blok.

Dajte svakom usmjerivaču jednu adresu tunela

Dodijelite jedan /128 po usmjerivaču i zadržite postojeće ključeve i krajnje točke radnog čvorišta. Tri vrijednosti u nastavku razlikuju se samo u dijelu za host.

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

Ovaj /128 opisuje jedinu adresu dodijeljenu tom sučelju. Ne govori ništa o tome koliko odredišta parnjak smije usmjeravati, jer se dostupnost izražava u AllowedIPs, a ne u prefiksu sučelja.

Svakom usmjerivaču lokacije također treba adresa u njegovom LAN bloku i način da je distribuira, obično najave usmjerivača za SLAAC. WireGuard ne šalje te najave umjesto vas i ne premošćuje dvije LAN mreže. Usmjerivač lokacije usmjerivač je u oba smjera.

Stavite vlasništvo nad podmrežom u AllowedIPs

Unos parnjaka za lokaciju A u čvorištu posjeduje adresu tunela A i LAN mrežu A, i taj par je cijela izjava o vlasništvu. Ništa drugo u tom odjeljku parnjaka ne mora opisivati lokaciju.

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

Unos parnjaka za lokaciju B posjeduje odgovarajući par, a simetrija je ovdje važnija od sažetosti. Pročitajte dva retka zajedno i podjela vlasništva postaje vidljiva na prvi pogled.

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

To su dva odvojena odjeljka parnjaka, a ne dva popisa koji se natječu za jednog parnjaka. WireGuard koristi AllowedIPs u oba smjera: bira parnjaka za odlazno odredište i odbija dolazni paket čiji se izvor ne podudara s rasponom dodijeljenim parnjaku koji ga je dešifrirao. Davanje cijelog /48 objema parnjacima isključilo bi tu drugu provjeru i zamutilo koja lokacija posjeduje koji blok. Upravo ta razlika čini pogrešnu izvornu adresu vidljivom umjesto tiho prihvaćenom.

Svakoj lokaciji trebaju samo odredišta dostupna kroz njezina parnjaka u čvorištu: lokacija A navodi adresu čvorišta, adresu tunela lokacije B i LAN mrežu B, a lokacija B navodi obrnuti skup. Popisi su namjerno asimetrični jer svaki usmjerivač vidi drugu stranu topologije. Oba zapišite iz plana adresa, a ne iz konfiguracije druge lokacije, jer tako zastarjeli raspon preživi prenumeraciju.

S wg-quick ovi rasponi također stvaraju rute. Sa systemd-networkd ili ručnim postavljanjem sami dodajte ekvivalentne rute; inače tunel nosi pakete koje jezgra nikada ne šalje u njega.

Dovršite prosljeđivanje i testirajte oba smjera

Omogućite IPv6 prosljeđivanje na čvorištu i na oba usmjerivača lokacija te dopustite potrebne usluge između lokacija u pravilniku prosljeđivanja. Neka ICMPv6 Packet Too Big poruke ostanu upotrebljive, jer njihovo odbacivanje ruši otkrivanje MTU-a puta i stvara zastoje pri velikim prijenosima koji izgledaju kao greške aplikacije. Čvorište koje prosljeđuje bez dopuštenja vatrozida odbacuje paket između usmjeravanja i tunela. Taj način kvara vrijedi znati jer tunel ostaje aktivan, a umiru samo neki tokovi.

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

Testirajte s hosta na lokaciji A na host na lokaciji B, a zatim u suprotnom smjeru. Ping na adresu tunela čvorišta ispituje samo prvi skok i proći će i kad su LAN rute pogrešne. Tok od hosta do hosta taj je koji dokazuje plan.

Vanjska WireGuard veza može raditi preko IPv4 dok je unutarnji promet IPv6, a ta neovisnost korisna je tijekom migracije. Ako se kasnije doda globalni IPv6 izlaz, preispitajte dodjelu davatelja, odabir izvorne adrese i povratno usmjeravanje kao novi korak dizajna; privatni plan gore ostaje valjan za promet između lokacija.

Povezani članci