Planificació d’IPv6 per a un concentrador WireGuard de dos llocs: prefix, parells, rutes
Treballeu un concentrador IPv6 privat per a dues LAN: trieu un prefix, reserveu adreces de túnel i deixeu que AllowedIPs expressi quin parell posseeix cada subxarxa.
Dues LAN, un concentrador WireGuard i un pla d’adreces IPv6 que ha de respondre tres preguntes separades: quin prefix, quina adreça pertany a cada encaminador i quin parell posseeix quina subxarxa. Si una d’elles és incorrecta, obteniu un túnel que fa l’apretada de mans i no encamina res. El pla següent recorre un disseny privat de dos llocs en aquest ordre. Deliberadament no proporciona accés a Internet per IPv6.
Decidiu per a què serveix el prefix
Un prefix únic local de fd00::/8 és l’elecció natural quan l’objectiu és la connectivitat privada entre llocs. Es manté estable independentment de quin proveïdor dona servei a cada ubicació i no s’anuncia a la taula d’encaminament global, així que no pot filtrar la vostra numeració interna a Internet.
La mateixa propietat és la limitació. Una ULA no dona cap camí de retorn públic, perquè cap proveïdor superior sap encaminar-la cap a la vostra passarel·la. Si el requisit inclou sortida a Internet per IPv6, necessiteu una assignació d’un proveïdor que us l’encamini, i això és una decisió de disseny separada amb la seva pròpia mida de prefix.
No assumiu que cada desplegament necessita un /48. RFC 6177 es va allunyar d’una única mida obligatòria per lloc final, i la mida correcta segueix el nombre de xarxes que operareu. Genereu la ULA amb el procediment RFC 4193 en lloc d’inventar un prefix que una altra organització també podria utilitzar. Escriviu el resultat al pla d’adreces abans de configurar cap dispositiu, perquè un prefix que ningú no ha registrat és un prefix que algú reutilitzarà.
Dividiu el prefix en rols
L’exemple següent utilitza fd7c:2e91:4a00::/48, i la taula s’organitza per on s’escriu cada bloc, no per lloc. Tracteu els valors com una mostra i genereu els vostres abans de desplegar res.
| Where it is written | What appears there | Block used | What it establishes |
|---|---|---|---|
| Hub wg0.conf, interface address | A single host address on the tunnel | fd7c:2e91:4a00:ff00::1/128 | The hub's own tunnel identity |
| Hub wg0.conf, Site A peer | Two ranges in one AllowedIPs line | ::2/128 and :10::/64 | That A owns its tunnel address and its LAN |
| Hub wg0.conf, Site B peer | Two ranges in one AllowedIPs line | ::3/128 and :20::/64 | That B owns its tunnel address and its LAN |
| Site A wg0.conf, interface address | A single host address on the tunnel | fd7c:2e91:4a00:ff00::2/128 | A's identity as the hub sees it |
| Site B wg0.conf, interface address | A single host address on the tunnel | fd7c:2e91:4a00:ff00::3/128 | B's identity as the hub sees it |
Els blocs LAN són /64 perquè el SLAAC ordinari espera un identificador d’interfície de 64 bits. Dividir una LAN en un bloc més petit trenca aquesta suposició a la majoria d’amfitrions, i el cost operatiu no val l’estalvi d’adreces en un pla privat. Els dos blocs LAN provenen del mig del /48, deixant el rang baix lliure per a llocs posteriors.
Les adreces de túnel són un calaix administratiu, no una xarxa enllaçada. Cada interfície en rep una única /128, així que cap amfitrió assumeix una subxarxa compartida al túnel i no s’executa descoberta de veïns on no cal. Mantingueu els rols disjunts i registreu-los al pla d’adreces de l’organització perquè un lloc posterior no reutilitzi un bloc.
Doneu a cada encaminador una adreça de túnel
Assigneu una /128 per encaminador i conserveu les claus i els punts finals existents del concentrador que funciona. Els tres valors següents només difereixen en la part d’amfitrió.
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
Aquesta /128 descriu l’única adreça assignada a aquesta interfície. No diu res sobre quantes destinacions el parell pot encaminar, perquè la connectivitat s’expressa a AllowedIPs, no al prefix de la interfície.
Cada encaminador de lloc també necessita una adreça al seu bloc LAN i una manera de distribuir-la, normalment anuncis d’encaminador per a SLAAC. WireGuard no envia aquests anuncis per vosaltres ni fa pont entre les dues LAN. L’encaminador de lloc és un encaminador en tots dos sentits.
Poseu la propietat de la subxarxa a AllowedIPs
L’entrada de parell del concentrador per al lloc A posseeix l’adreça de túnel d’A i la LAN d’A, i aquesta parella és tota la declaració de propietat. Res més en aquesta secció de parell no ha de descriure el lloc.
AllowedIPs = fd7c:2e91:4a00:ff00::2/128, fd7c:2e91:4a00:10::/64
L’entrada de parell per al lloc B posseeix la parella corresponent, i aquí la simetria importa més que la brevetat. Llegiu les dues línies juntes i la divisió de propietat es fa visible d’un cop d’ull.
AllowedIPs = fd7c:2e91:4a00:ff00::3/128, fd7c:2e91:4a00:20::/64
Són dues seccions de parell separades, no dues llistes que competeixen per un parell. WireGuard utilitza AllowedIPs en tots dos sentits: tria el parell per a una destinació de sortida i rebutja un paquet d’entrada la font del qual no coincideix amb el rang assignat al parell que el va desxifrar. Donar tot el /48 als dos parells desactivaria aquesta segona comprovació i difuminaria quin lloc posseeix quin bloc. Aquesta distinció és el que fa visible una adreça d’origen incorrecta en lloc d’acceptar-la en silenci.
Cada lloc només necessita les destinacions assolibles pel seu parell de concentrador: el lloc A llista l’adreça del concentrador, l’adreça de túnel del lloc B i la LAN de B, i el lloc B llista el conjunt recíproc. Les llistes són asimètriques a propòsit, perquè cada encaminador veu un costat diferent de la topologia. Escriviu totes dues des del pla d’adreces i no des de la configuració de l’altre lloc, que és com un rang obsolet sobreviu a una renumeració.
Amb wg-quick, aquests rangs també creen rutes. Amb systemd-networkd o una configuració manual, afegiu vosaltres mateixos les rutes equivalents; si no, el túnel transporta paquets que el nucli mai no hi envia.
Completeu el reenviament i proveu tots dos sentits
Activeu el reenviament IPv6 al concentrador i als dos encaminadors de lloc, i permeteu els serveis necessaris entre llocs a la política de reenviament. Mantingueu utilitzables els missatges ICMPv6 Packet Too Big, perquè descartar-los trenca el descobriment de l’MTU del camí i produeix bloquejos en transferències grans que semblen errors d’aplicació. Un concentrador que reenvia sense el permís del tallafoc descarta el paquet entre l’encaminament i el túnel. Aquest mode de fallada val la pena conèixer-lo, perquè el túnel continua actiu i només moren alguns fluxos.
sysctl net.ipv6.conf.all.forwarding
ip -6 route
ping -6 -c 3 fd7c:2e91:4a00:20::1
Proveu des d’un amfitrió del lloc A fins a un amfitrió del lloc B i després en la direcció oposada. Un ping a l’adreça de túnel del concentrador només exerceix el primer salt i passarà fins i tot quan les rutes LAN siguin incorrectes. El flux d’amfitrió a amfitrió és el que demostra el pla.
La connexió WireGuard exterior pot funcionar sobre IPv4 mentre el trànsit interior és IPv6, i aquesta independència és útil durant la migració. Si més endavant s’afegeix sortida global IPv6, reviseu l’assignació del proveïdor, la selecció d’adreça d’origen i l’encaminament de retorn com un pas de disseny nou; el pla privat anterior continua vàlid per al trànsit entre llocs.