La majoria de la gent llegeix AllowedIPs com una llista de permisos, el conjunt d'adreces que es poden connectar a un parell, més aviat com una regla de tallafoc escrita per a un túnel. No és això. El camp és una taula d'encaminament que treballa en les dues direccions: tria un parell per a un paquet sortint i valida la font d'un d'entrant. Llegir-lo com una llista d'accés produeix configuracions que encaminen trànsit que ningú no ha demanat.

Un camp, dos lectors: tria de sortida i comprovació de la font

Al client, els prefixos decideixen quins destins viatgen fins a aquest parell i quins es queden a la xarxa ordinària. Per això una entrada per a 0.0.0.0/0 captura tots els destins IPv4, i per això importar un perfil de túnel complet envia la navegació ordinària a través de la màquina remota. Les entrades estretes fan el contrari: encaminen només les xarxes que heu llistat i deixen tota la resta on era. La secció sobre encaminament de criptoclaus de la documentació del WireGuard explica les dues feines en un sol lloc: la selecció del parell sortint i la validació de la font entrant.

Al servidor, el mateix camp descriu quines adreces de font pot utilitzar cada parell. És una comprovació criptogràfica, no un filtre de paquets: un paquet la font interna del qual no coincideixi amb la llista del parell es descarta dins del WireGuard abans que cap tallafoc de l'amfitrió el vegi. Les dues feines comparteixen una sola llista, i per això exactament una llista copiada d'un altre lloc es comporta malament en un lloc que no havies considerat.

El bloc del client és on comença la major part d'aquesta confusió. Un túnel partit anomena les xarxes remotes, i un túnel complet és el mateix camp amb un prefix per defecte:

[Peer]
# split tunnel: only these networks
AllowedIPs = 10.77.0.0/24, 192.168.30.0/24

[Peer]
# full tunnel: everything, both families
AllowedIPs = 0.0.0.0/0, ::/0

Totes dues formes són completes per si mateixes, i són alternatives en lloc de passos. La primera envia només aquestes dues xarxes pel túnel; la segona envia tots els destins, amb l'entrada ::/0 afegint IPv6 al valor per defecte IPv4. Triïs el que triïs, aquests prefixos són tota la decisió d'encaminament per a aquest parell quan wg-quick comença a instal·lar rutes.

El concentrador necessita una llista diferent

Un concentrador llista l'adreça de túnel de cada client com a prefix d'amfitrió, més qualsevol xarxa que estigui realment darrere d'aquest client. Copiar la llista àmplia d'un client a cada parell del concentrador li diu que molts parells poden tenir les mateixes adreces com a font, i això no és un pla d'adreçament. El camp Endpoint pertany a una altra capa completament: anomena l'adreça i el port exteriors del parell, mai un destí dins del túnel.

[Peer]
# laptop: tunnel address 10.77.0.2, office LAN behind it
AllowedIPs = 10.77.0.2/32, 192.168.30.0/24

El prefix d'amfitrió porta l'adreça del túnel i el prefix de xarxa porta el que hi ha darrere del client, i tots dos són necessaris. Sense el prefix d'amfitrió el concentrador no pot retornar el trànsit propi del client, i sense el prefix de xarxa la LAN que hi ha darrere queda inabastable; un parell sense res al darrere només rep el prefix d'amfitrió.

Saltar-se la instal·lació de rutes deixa un buit

wg-quick, l'ajudant que aixeca una interfície des d'un fitxer de configuració, instal·la adreces d'interfície i rutes com a part d'aquesta feina. Establir Table = off diu a l'ajudant que s'ha de saltar la feina de les rutes, cosa que no instal·la substituts ni fa accessible la xarxa privada. Quan les rutes automàtiques ja fan la feina, anomenar els prefixos que necessiteu és la configuració més clara. Desactivar la gestió de rutes i deixar el substitut sense escriure no és un disseny, és una omissió.

L'eina bàsica wg es comporta diferent: configura la interfície i no toca mai les rutes, així que una instal·lació feta directament sobre ella necessita les seves pròpies ordres de ruta. Les instruccions escrites per a una eina poden semblar equivocades quan se segueixen amb l'altra. Un ping correcte també és una prova feble, perquè exerceix un sol camí en lloc de tots els camins d'aplicació que necessiteu.

DNS i IPv6 es decideixen per separat

Comproveu l'adreça del servidor DNS que anuncia el túnel i confirmeu que existeix una ruta fins a aquesta adreça a través dels prefixos que heu triat. Un paràmetre de resolutor no fa accessible el resolutor, i estrenyir un túnel pot eliminar silenciosament la ruta que hi arribava abans. Inspeccioneu IPv6 també pel seu compte, perquè una divisió IPv4 correcta no diu res sobre una ruta per defecte IPv6 que encara apunta a l'enllaç físic. Tres decisions separades poden canviar alhora quan editeu un sol bloc de parell.

Aleshores obriu un recurs privat i un lloc web ordinari des d'una configuració inicial coneguda. Si el recurs respon i la navegació encara surt per la connexió local, la divisió fa el que heu demanat. Si la navegació es trenca en el mateix moment, el túnel ha pres la ruta per defecte i la llista de prefixos és on cal mirar.

Articles relacionats