Conjunt nftables alimentat per DNS cap a WireGuard: com funciona el traspàs
Una resposta DNS pot alimentar un conjunt nftables, però un conjunt no encamina res. Segueixi els quatre traspassos i les tres vides útils que decideixen si l'encaminament funciona.
Els noms es resolen en adreces, i aquestes adreces poden acabar en un conjunt del tallafoc que després influeix en l'encaminament, cosa que fa possible l'encaminament basat en el nom sense cap proxy. L'escull és que quatre components han de fer el traspàs correctament: el resolutor, el conjunt, el classificador que marca un flux nou i el parell que el transporta. Cada traspàs falla de manera diferent i cadascun té el seu propi temps.
Tracti el disseny com una cadena i no com una configuració. La pregunta a cada pas és quin component posseeix la decisió i què passa quan falta la seva entrada.
Què pot i què no pot fer la resposta DNS
dnsmasq pot copiar adreces de les respostes a un conjunt nftables, cosa que és una alimentació i no una decisió d'encaminament. Aquesta opció, documentada al manual de dnsmasq, indica la família, la taula i el conjunt, i el seu 4# inicial selecciona només registres A, així que les destinacions v6 necessiten una disposició pròpia. El conjunt ja ha d'existir, perquè el resolutor afegeix elements a una cosa que ha creat el propietari del tallafoc. Res en aquest pas tria una interfície, una taula o un parell.
El client també ha d'usar aquest resolutor per al nom. Una aplicació amb DNS xifrat propi, o una resposta en caché d'abans que existís la política, es connecta sense crear cap entrada al conjunt.
El conjunt és una entrada, no una ruta
Un element d'un conjunt és una condició de coincidència. Alguna cosa l'ha de mirar, decidir que aquest paquet inicia un flux nou i aplicar la política que envia el flux pel túnel. A Linux això normalment vol dir un camí de sortida amb capacitat d'encaminament que pot posar una marca, una regla que envia els paquets marcats a una taula dedicada i una ruta en aquesta taula que apunta al dispositiu WireGuard. La pertinença sola no instal·la res d'això.
nft add set inet vpn_select office_v4 { type ipv4_addr\; }
ip rule add fwmark 0x40 table 200
ip route add default dev wg0 table 200
wg show wg0 allowed-ips
El parell aplica una segona comprovació de cobertura que la gent oblida. WireGuard xifra un paquet només per a un parell les adreces permeses del qual inclouen la destinació, així que una ruta de política cap a la interfície no n'hi ha prou quan la llista del parell exclou aquest prefix. Mantingui la llista sota el control del propietari de l'encaminament en lloc de confiar en la creació de rutes que faci el gestor.
Marques, taules i cobertura del parell
Les marques són un espai de noms compartit, així que tant el valor com la màscara s'han d'acordar amb qualsevol altra cosa que les faci servir. Una regla que envia trànsit marcat a una taula dedicada necessita un resultat definit quan aquesta taula no té cap ruta coincident, perquè una consulta sense resposta pot continuar cap a la regla següent i treure el paquet per la interfície física. Una ruta per defecte blackhole dins de la taula dedicada converteix aquesta fuita silenciosa en una caiguda visible. El que el disseny encara no pot fer és tancar-se per a una destinació que mai no ha entrat al conjunt.
Els paquets exteriors del propi túnel han d'escapar del classificador. Les eines de WireGuard ofereixen una marca de sòcol precisament per a això, i usar-la evita que l'encapsulament es torni a encaminar cap a la interfície que està construint.
Provi cada vida útil per separat
Tres magatzems envelleixen segons tres calendaris: la caché del resolutor, els elements del conjunt i la connexió seguida. Provi'ls en aquest ordre i observi si cadascun es mou quan toca. Les ordres següents llegeixen el resolutor, el conjunt, la taula de connexions i les regles de política sense canviar res.
dig +short office.example
nft list set inet vpn_select office_v4
conntrack -L -d 10.60.8.15
ip rule show
Una consulta nova que afegeix un element demostra que l'alimentació funciona, mentre que un element vell que sobreviu a la seva resposta és un desajust de vida útil que val la pena anotar. Una connexió nova a la taula de connexions amb la marca esperada mostra que el classificador s'ha executat, i una connexió antiga que conserva la marca original és comportament correcte i no un error. El llistat de regles respon si la consulta de política existeix, que és una pregunta diferent de si ha coincidit. Llegeixi les quatre sortides en aquest ordre i el traspàs que falla es delata sol.
Quan el requisit és que un nom concret faci servir sempre un sol camí, un conjunt alimentat per DNS no ho pot demostrar, perquè les adreces compartides també porten altres noms. Un proxy o un mecanisme a nivell d'aplicació és l'eina per a aquesta garantia.