Dve LAN, jeden hub WireGuard a plán adries IPv6, ktorý musí odpovedať na tri samostatné otázky: ktorý prefix, ktorá adresa patrí každému routeru a ktorý partner vlastní ktorú podsieť. Chyba v ktorejkoľvek z nich vytvorí tunel, ktorý urobí podanie ruky a nič nesmeruje. Plán nižšie prechádza privátny návrh dvoch lokalít v tomto poradí. Zámerne neposkytuje prístup na internet cez IPv6.

Určite, na čo prefix slúži

Jedinečne lokálny prefix z fd00::/8 je prirodzená voľba, keď je cieľom privátna dostupnosť medzi lokalitami. Zostáva stabilný bez ohľadu na to, ktorý poskytovateľ obsluhuje každé miesto, a neoznamuje sa do globálnej smerovacej tabuľky, takže nemôže uniknúť vaše interné číslovanie na internet.

Tá istá vlastnosť je obmedzením. ULA neposkytuje žiadnu verejnú spiatočnú cestu, pretože žiadny nadradený poskytovateľ nevie, že ju má smerovať k vašej bráne. Ak požiadavka zahŕňa odchod na internet cez IPv6, potrebujete pridelenie od poskytovateľa, ktorý vám ho smeruje, a to je samostatné návrhové rozhodnutie s vlastnou veľkosťou prefixu.

Nepredpokladajte, že každé nasadenie potrebuje /48. RFC 6177 sa odklonil od jedinej povinnej veľkosti koncovej lokality a správna veľkosť vychádza z počtu sietí, ktoré budete prevádzkovať. Generujte ULA postupom RFC 4193 namiesto vymýšľania prefixu, ktorý môže použiť aj iná organizácia. Zapíšte výsledok do plánu adries pred konfiguráciou akéhokoľvek zariadenia, pretože prefix, ktorý nikto nezaznamenal, je prefix, ktorý niekto znova použije.

Rozdeľte prefix na roly

Nižšie uvedený príklad používa fd7c:2e91:4a00::/48 a tabuľka je usporiadaná podľa toho, kam sa každý blok zapisuje, nie podľa lokality. Berte hodnoty ako vzorku a pred nasadením čohokoľvek si vygenerujte vlastné.

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

Bloky LAN sú /64, pretože bežný SLAAC očakáva 64-bitový identifikátor rozhrania. Rozdelenie LAN na menší blok porušuje tento predpoklad na väčšine hostiteľov a prevádzkové náklady nestoja za úsporu adries v privátnom pláne. Oba bloky LAN pochádzajú zo stredu /48, takže nízky rozsah zostáva voľný pre neskoršie lokality.

Adresy tunela sú administratívna zásoba, nie sieť na prepojení. Každé rozhranie z nej dostane jednu /128, takže žiadny hostiteľ nepredpokladá zdieľanú podsieť na tuneli a objavovanie susedov nebeží tam, kde nie je potrebné. Udržujte roly oddelené a zaznamenajte ich v pláne adries organizácie, aby neskoršia lokalita znova nepoužila blok.

Dajte každému routeru jednu adresu tunela

Prideľte jeden /128 na router a zachovajte existujúce kľúče a koncové body fungujúceho hubu. Tri hodnoty nižšie sa líšia iba v časti hostiteľa.

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

Táto /128 opisuje jedinú adresu priradenú tomu rozhraniu. Nehovorí nič o tom, koľko cieľov partner smie smerovať, pretože dostupnosť sa vyjadruje v AllowedIPs, nie v prefixe rozhrania.

Každý router lokality tiež potrebuje adresu vo svojom bloku LAN a spôsob, ako ju distribuovať, zvyčajne oznámenia routera pre SLAAC. WireGuard tieto oznámenia za vás neodosiela a obe LAN nespája. Router lokality je router v oboch smeroch.

Umiestnite vlastníctvo podsiete do AllowedIPs

Záznam partnera v hube pre Lokalitu A vlastní adresu tunela A a LAN A a táto dvojica je celé vyhlásenie o vlastníctve. Nič iné v tejto časti partnera nemusí lokalitu opisovať.

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

Záznam partnera pre Lokalitu B vlastní zodpovedajúcu dvojicu a symetria je tu dôležitejšia než stručnosť. Prečítajte oba riadky spolu a rozdelenie vlastníctva je viditeľné na prvý pohľad.

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

Sú to dve samostatné časti partnera, nie dva zoznamy súťažiace o jedného partnera. WireGuard používa AllowedIPs v oboch smeroch: vyberá partnera pre odchádzajúci cieľ a odmieta prichádzajúci paket, ktorého zdroj nezodpovedá rozsahu priradenému partnerovi, ktorý ho dešifroval. Pridelenie celého /48 obom partnerom by vypnulo tú druhú kontrolu a zastrelo, ktorá lokalita vlastní ktorý blok. Práve tento rozdiel robí nesprávnu zdrojovú adresu viditeľnou namiesto ticho prijatej.

Každá lokalita potrebuje len ciele dostupné cez svojho partnera v hube: Lokalita A uvádza adresu hubu, adresu tunela Lokality B a LAN B a Lokalita B uvádza opačnú množinu. Zoznamy sú zámerne asymetrické, pretože každý router vidí inú stranu topológie. Píšte oba z plánu adries a nie z konfigurácie druhej lokality, pretože tak zastaraný rozsah prežije prečíslovanie.

S wg-quick tieto rozsahy vytvárajú aj trasy. So systemd-networkd alebo ručným nastavením pridajte ekvivalentné trasy sami; inak tunel prenáša pakety, ktoré doňho jadro nikdy nepošle.

Dokončite preposielanie a otestujte oba smery

Zapnite preposielanie IPv6 na hube a na oboch routeroch lokalít a v politike preposielania povoľte potrebné služby medzi lokalitami. Udržujte správy ICMPv6 Packet Too Big použiteľné, pretože ich zahadzovanie rozbíja zisťovanie MTU cesty a spôsobuje zaseknutia veľkých prenosov, ktoré vyzerajú ako chyby aplikácie. Hub, ktorý preposiela bez povolenia firewallu, paket zahodí medzi smerovaním a tunelom. Tento režim zlyhania stojí za to poznať, pretože tunel zostáva aktívny a umierajú len niektoré toky.

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

Testujte z hostiteľa v Lokalite A na hostiteľa v Lokalite B a potom opačným smerom. Ping na adresu tunela hubu precvičí len prvý skok a prejde aj vtedy, keď sú trasy LAN nesprávne. Tok od hostiteľa k hostiteľovi je ten, ktorý plán dokazuje.

Vonkajšie pripojenie WireGuard môže bežať cez IPv4, zatiaľ čo vnútorná prevádzka je IPv6, a táto nezávislosť je pri migrácii užitočná. Ak sa neskôr pridá globálny odchod IPv6, prehodnoťte pridelenie od poskytovateľa, výber zdrojovej adresy a spätné smerovanie ako nový krok návrhu; privátny plán vyššie zostáva platný pre prevádzku medzi lokalitami.

Súvisiace články