Conxunto nftables alimentado por DNS cara a WireGuard: como funciona o traspaso
Unha resposta DNS pode alimentar un conxunto nftables, pero un conxunto non encamiña nada. Siga os catro traspasos e as tres vidas útiles que deciden se o direccionamento funciona.
Os nomes resólvense en enderezos, e eses enderezos poden acabar nun conxunto da devasa que despois inflúe no encamiñamento, o que fai posible o direccionamento baseado no nome sen proxy. O problema é que catro compoñentes teñen que facer o traspaso correctamente: o resolutor, o conxunto, o clasificador que marca un fluxo novo e o par que o transporta. Cada traspaso falla de xeito distinto e cada un mantén o seu propio tempo.
Trate o deseño como unha cadea e non como unha configuración. A pregunta en cada paso é que compoñente posúe a decisión e que acontece cando falta a súa entrada.
Que pode e que non pode facer a resposta DNS
dnsmasq pode copiar enderezos das respostas a un conxunto nftables, o que é unha alimentación e non unha decisión de encamiñamento. Ese parámetro, documentado no manual de dnsmasq, indica a familia, a táboa e o conxunto, e o seu 4# inicial só selecciona rexistros A, así que os destinos v6 necesitan a súa propia disposición. O conxunto xa debe existir, porque o resolutor engade elementos a algo que creou o dono da devasa. Nada nese paso elixe unha interface, unha táboa nin un par.
O cliente tamén ten que usar ese resolutor para o nome. Unha aplicación co seu propio DNS cifrado, ou unha resposta na caché de antes de existir a política, conéctase sen crear ningunha entrada no conxunto.
O conxunto é unha entrada, non unha ruta
Un elemento dun conxunto é unha condición de coincidencia. Algo ten que miralo, decidir que este paquete inicia un fluxo novo e aplicar a política que envía o fluxo polo túnel. En Linux iso normalmente significa unha ruta de saída con capacidade de encamiñamento que pode pór unha marca, unha regra que envía os paquetes marcados a unha táboa dedicada e unha ruta nesa táboa que apunta ao dispositivo WireGuard. A pertenza por si soa non instala nada diso.
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
O par aplica unha segunda comprobación de cobertura que a xente esquece. WireGuard cifra un paquete só para un par cuxos enderezos permitidos inclúen o destino, así que unha ruta de política cara á interface non abonda cando a lista do par exclúe ese prefixo. Manteña a lista baixo o control do dono do encamiñamento en lugar de confiar na creación de rutas que faga o xestor.
Marcas, táboas e cobertura do par
As marcas son un espazo de nomes compartido, así que tanto o valor como a máscara deben acordarse con calquera outra cousa que as use. Unha regra que envía tráfico marcado a unha táboa dedicada necesita un resultado definido cando esa táboa non ten ningunha ruta coincidente, porque unha busca sen resposta pode continuar á regra seguinte e sacar o paquete pola interface física. Unha ruta por defecto blackhole dentro da táboa dedicada converte esa fuga silenciosa nunha caída visible. O que o deseño aínda non pode facer é pecharse ante un fallo para un destino que nunca entrou no conxunto.
Os paquetes exteriores do propio túnel teñen que escapar do clasificador. As ferramentas de WireGuard ofrecen unha marca de socket precisamente para iso, e usala evita que a encapsulación se encamiñe de volta á interface que está a construír.
Probe cada vida útil por separado
Tres almacéns envellecen segundo tres calendarios: a caché do resolutor, os elementos do conxunto e a conexión rastrexada. Probeos nesa orde e observe se cada un se move cando debe. Os comandos seguintes len o resolutor, o conxunto, a táboa de conexións e as regras de política sen cambiar nada.
dig +short office.example
nft list set inet vpn_select office_v4
conntrack -L -d 10.60.8.15
ip rule show
Unha busca nova que engade un elemento demostra que a alimentación funciona, mentres que un elemento vello que sobrevive á súa resposta é un desaxuste de vida útil que paga a pena anotar. Unha conexión nova na táboa de conexións coa marca esperada mostra que o clasificador se executou, e unha conexión antiga que conserva a súa marca orixinal é comportamento correcto e non un erro. A listaxe de regras responde se a busca de política existe, que é unha pregunta distinta de se coincidiu. Lea as catro saídas nesa orde e o traspaso que falla delátase só.
Cando o requisito é que un nome concreto use sempre un só camiño, un conxunto alimentado por DNS non pode demostralo, porque os enderezos compartidos tamén levan outros nomes. Un proxy ou un mecanismo a nivel de aplicación é a ferramenta para esa garantía.