Dos prefixos /1 cobreixen exactament les mateixes adreces IPv4 que un sol /0, i aquesta igualtat només es manté dins de la llista de prefixos permesos del peer. Deixa de mantenir-se en el moment que l’eina de configuració decideix com encaminar, perquè Linux wg-quick tracta un prefix per defecte com un cas especial i no com a aritmètica. La branca especial instal·la una taula dedicada, dues regles de política, una marca de socket i paràmetres de camí invers que una parella de mitges rutes mai no rep. Per tant, quan un proxy o un navegador deixa de funcionar després de l’edició, els prefixos són la part menys interessant del canvi.

La llista de prefixos no és tota la configuració

AllowedIPs fa dues feines alhora, i només una tracta de la cobertura. Per al mateix WireGuard la llista és encaminament per clau criptogràfica: decideix quines destinacions s’encripten cap a un peer i quines adreces d’origen pot fer servir aquest peer. Per a wg-quick la mateixa llista també és una especificació d’encaminament, i la ruta que produeix depèn de quina branca arribi a coincidir. Una cobertura idèntica amb dues formes de llista diferents, doncs, no diu res sobre un estat d’amfitrió idèntic.

La configuració per defecte us treu aquesta decisió de les mans, perquè Table és automàtic per defecte i l’eina tria on van a parar les rutes. Un altre gestor de xarxa, un embolcall de distribució o un valor personalitzat de Table torna a canviar el resultat, i per això un consell escrit per a un amfitrió pot semblar equivocat al següent.

Què afegeix la branca per defecte més enllà d’una ruta

Una entrada /0 envia wg-quick al seu camí de ruta per defecte: una taula d’encaminament separada rep la ruta per defecte, una regla de política hi envia el trànsit sense marca, una segona regla manté autoritatives les rutes més específiques de la taula principal, i la interfície rep una marca de tallafoc aplicada al seu propi socket. Aquesta marca és el guardià del bucle. Els datagrames xifrats que porten el trànsit del túnel surten amb la marca posada, de manera que la regla que ho envia tot a través del túnel no s’empassa els paquets de transport del mateix túnel.

Una parella d’entrades /1 pren en canvi el camí de ruta ordinari. Dues rutes arriben a la taula configurada, i no apareix cap de la maquinària que l’envolta, no perquè sigui innecessària sinó perquè aquell camí de codi mai no s’ha executat.

On divergeixen els dos arranjaments

La divergència es mostra primer com a recursió. Amb les mitges rutes a la taula principal, l’adreça de transport del mateix peer cau dins d’un prefix del túnel, de manera que el paquet que hauria de portar el túnel coincideix amb una ruta que apunta cap endins del túnel. Alguna cosa l’ha d’eximir: una ruta d’amfitrió per al punt final actual, una marca aplicada a mà o una regla específica de la interfície. Una ruta d’amfitrió funciona fins que canvia l’adreça del punt final, cosa que passa amb punts finals basats en DNS, clients itinerants i configuracions amb diversos peers.

Segon, tot el que raona sobre marques canvia de comportament. Un proxy transparent que redirigeix connexions localment crea sockets nous les marques i orígens dels quals difereixen del flux original del client, i les regles de política generades per la branca per defecte eren part del que va separar aquests fluxos. Llegir la connexió sortint del mateix proxy és un exercici diferent de provar si la destinació original és abastable.

Llegiu les regles i les marques abans d’editar

Captureu l’estat actual mentre el túnel és sa, i després un altre cop després del canvi, i compareu els dos abocaments en lloc de raonar a partir del fitxer de configuració. Incloeu les regles de política, cada taula, la marca de la interfície i els punts finals enregistrats.

ip rule show
ip -4 route show table all | grep -E 'default|wg1'
wg show wg1 fwmark
wg show wg1 endpoints

Si la primera línia de sortida ha perdut la regla del trànsit sense marca i la taula dedicada és buida, la branca per defecte no s’executa i cap quantitat d’aritmètica de prefixos no restaurarà els seus efectes. Una marca de zero en una interfície que abans en portava una és el mateix senyal, visible en un sol valor.

Assageu la pèrdua del túnel abans de desplegar

Si la disposició de mitges rutes és l’elecció deliberada, ha de fornir explícitament les peces que falten: un camí de punt final que sobrevisqui als canvis d’adreça, el comportament previst quan cau el túnel i el tractament equivalent per a IPv6. Escriviu-ho com a requisits en lloc de descobrir-ho durant una caiguda. Després assageu la fallada, perquè un túnel complet que recau silenciosament a l’enllaç físic és pitjor que un que deixa de funcionar.

sudo ip -4 route add 198.51.100.20/32 via 192.0.2.1 dev eth0
ip -4 route get 198.51.100.20
sudo wg-quick down wg1

La consulta de ruta hauria de resoldre el punt final per la interfície física sense travessar el túnel, i baixar la interfície hauria de deixar l’amfitrió en l’estat que el disseny va prometre. Un proxy que funciona després de la substitució demostra que l’estat d’amfitrió generat importava; no demostra que la prevenció de bucles i el comportament en estat baix hagin sobreviscut a l’edició.

Articles relacionats