Connexions noves en una sortida VPN nova, els fluxos antics es deixen igual
Un buidatge planificat només mou fluxos no classificats. Compareu-ho amb un canvi de ruta i vegeu les marques, les taules i l’estat de conntrack que ho fan possible.
Dues sortides VPN sanes, una pujada llarga ja en marxa i un requisit que la propera connexió utilitzi l’altre túnel. Hi ha dues maneres de satisfer-ho, i només una és segura en una passarel·la en funcionament. Canviar la ruta per defecte mou cada paquet, inclosos els que pertanyen a la pujada. Un buidatge planificat canvia l’elecció per a les connexions noves i deixa els fluxos seguits al camí on han començat.
Dues maneres de canviar una sortida
El canvi de ruta és una sola ordre i es pot revertir en segons, i per això s’utilitza durant els incidents. També és indiscriminat: els paquets de la pujada existent surten de cop per un túnel diferent, amb una adreça d’origen pública diferent i un estat de traducció separat.
Si l’extrem remot segueix els fluxos per adreça d’origen, la pujada pot simplement deixar de ser reconeguda. El buidatge ho evita prenent la decisió una vegada per connexió i desant-la, de manera que la pujada antiga conserva la seva sortida fins que acaba. Aquest és tot el valor de l’exercici: l’extrem remot no veu cap canvi que hagi d’interpretar. Continua rebent paquets que coincideixen amb la connexió que ja coneix.
El cost és la complexitat: dues taules d’encaminament, un classificador que s’executa al ganxo correcte i unes marques que s’han de coordinar amb tota la resta que les utilitzi a la màquina.
Doneu a cada sortida la seva pròpia taula
Reserveu una taula d’encaminament per sortida i valors de marca o bits diferents per a les dues opcions. Cada taula necessita les rutes adequades al seu paper, no només un nom, i necessita un resultat de fallada deliberat per al cas que falta. Una taula buida que cau en silenci a la taula principal és com el trànsit surt per una sortida que ningú no ha triat.
ip rule add fwmark 0x10/0x10 table 101
ip rule add fwmark 0x20/0x20 table 102
ip route add default via 192.0.2.1 dev wg-a table 101
ip route add default via 198.51.100.1 dev wg-b table 102Afegiu una ruta blackhole al final de cada taula perquè una consulta que no trobi cap coincidència falli sorollosament en lloc d’escapar-se a un valor per defecte que no heu triat.
Trieu una vegada, al primer paquet
Classifiqueu després que existeixi el seguiment de connexions i abans de la consulta de ruta que importa. Per a una connexió LAN nova i no classificada, trieu la sortida i deseu-la a l’estat de la connexió. En els paquets posteriors, recupereu el valor desat a la marca de paquet que llegeix l’encaminament per política.
La part subtil és què vol dir nou. Conntrack encara pot informar de NEW per a paquets primerencs i retransmissions abans que es vegi una resposta, així que un classificador que només es fixi en aquest estat pot sobreescriure una elecció que ja havia fet. Comproveu que no hi hagi cap sortida desada per a la connexió abans d’assignar-ne una.
nftables manté separades les marques de paquet i de connexió, i la guia de metainformació documenta la còpia explícita entre elles. Una marca de connexió no es converteix per si sola en la marca de paquet que coincideix amb la vostra regla, i aquesta és la raó més habitual que un classificador ben escrit no tingui cap efecte.
Limiteu la restauració a la direcció i el trànsit que voleu. Aplicar una marca de sortida d’internet als paquets que tornen pot enviar les respostes cap a la sortida en lloc de cap a la LAN, i el símptoma és una connexió unidireccional que sembla un problema de tallafocs. Llegiu el camí de resposta abans de tocar una regla de tallafocs, perquè el paquet s’està encaminant, simplement no de tornada al remitent.
Quatre fases d’un buidatge
Prepareu B sense tocar A: encaminament, reenviament, autorització, NAT i el camí de tornada. Instal·leu la seva taula i la política de selecció a través de l’amo de configuració existent de la passarel·la.
Canvieu el classificador perquè les connexions noves i no classificades triïn B, conservant les eleccions desades. Una transacció nftables atòmica evita una finestra en què calgui netejar l’estat antic.
Deixeu A engegat mentre els seus fluxos acaben. La seva interfície, taula, sortida remota i mapes NAT encara formen part d’aquests fluxos, i editar una regla NAT no reconstrueix les vinculacions que ja existeixen.
Retireu A quan es compleixi la condició de buidatge, jutjada per l’estat de les connexions i el comportament de l’aplicació, no per un sol interval tranquil.
Què no pot prometre un buidatge
Una petició del navegador no és una connexió de transport nova; l’agrupació continua enviant peticions per la vella. A l’inrevés, un flux UDP pot quedar-se fora de conntrack i un paquet posterior es classifica de nou. El buidatge segueix els fluxos seguits, no la idea que una aplicació té d’una sessió.
Si A falla abans que els seus fluxos acabin, la marca desada no els salva. Es reconecten per B, o no es reconecten gens. Un buidatge planificat compra continuïtat mentre el camí original és sa; no és una replicació d’estat entre sortides independents.
Verifiqueu les dues meitats
Inicieu una connexió permesa de llarga durada abans del canvi i una de genuïnament nova després. Confirmeu quin túnel utilitza cadascuna i quina adreça d’origen pública veu l’extrem remot, i comproveu després que el trànsit de tornada torna.
No buideu la taula de conntrack per fer aparèixer la nova elecció. Això destrueix exactament l’estat que el buidatge ha de preservar i converteix una migració controlada en una caiguda amb una prova d’aspecte net.