Consulta de DNS rechazada cuando se conecta a WireGuard/pfSense

Consulta de DNS rechazada cuando se conecta a WireGuard/pfSense

Estoy usando pfSense con OpenVPN desde hace más de una década. También utilicé intensivamente muchos servicios de pfSense (resolución de DNS, DHCP, HA Proxy, SquidGuard, firewall, por supuesto...) En resumen, tengo algo de experiencia. Pero ahora decidí intentar reemplazar OpenVPN con WireGuard...

Creé un túnel en el lado de pfSense, configuré el cliente de Windows y se conectó correctamente. Puedo acceder a (casi) todos los servidores detrás de pfSense. Pero luego noté algo muy, muy extraño con el comportamiento de DNS. Tendré que describir rápidamente mi entorno para explicar el problema. Así que tengo:

  • Configuración de DNS dividida (el DNS interno se resuelve en direcciones privadas mientras que el DNS público se resuelve en direcciones públicas).
  • Los servidores DNS internos son dos controladores de dominio Zentyal (en la red detrás de pfSense). Son servidores de nombres autorizados para el dominio principal "midominio.com".
  • Estos dos están configurados para reenviar consultas DNS para otros dominios a DNS Resolver en pfSense. (Tengo algunos dominios más configurados en DNS Resolver porque es mucho, mucho más fácil de usar y mejor que Zentyal DNS).
  • Finalmente, DNS Resolver reenvía consultas de dominios que no están resueltos a un DNS externo.
DNS request -> Zentyal DNS (172.16.0.1) -> pfSense DNS Resolver (172.16.1.1) -> External DNS

Configuración un poco extraña, lo admito, pero ha estado funcionando durante años.

Cuando conecto mi máquina con Windows 11 usando OpenVPN, puedo hacerlo nslookuppara cualquier dominio (el principal u otro) sin ningún problema. Pero cuando desconecto OpenVPN y conecto WireGuard, solo puedo consultarel principaldominio:

nslookup web.mydomain.com
Server:  zentyal-1.mydomain.com
Address:  172.16.0.1

Name:    web.mydomain.com
Address:  172.16.2.5

Pero cuando consulto cualquier otro dominio (manejado por DNS Resolver o DNS externo), aparece el error "consulta rechazada":

nslookup google.com
Server:  zentyal-1.mydomain.com
Address:  172.16.0.1

*** zentyal-1.mydomain.com can't find google.com: Query refused

La misma solicitud cuando estoy conectado usando OpenVPN:

nslookup google.com
Server:  zentyal-1.mydomain.com
Address:  172.16.0.1

Non-authoritative answer:
Name:    google.com
Addresses:  2a00:1450:4001:80f::200e
          142.250.185.142

Evidentemente en ambos casos el mismo servidor DNS (zentyal-1) recibe la petición, y el mismo servidor responde. Una vez con "consulta rechazada" y otra con la respuesta exitosa. Parece que DNS Resolver se niega a responder a Zentyal cuando estoy conectado a través de WireGuard.

Mi configuración de cliente WireGuard:

[Interface]
PrivateKey = XXXX=
Address = 172.16.26.2/24
DNS = 172.16.0.1

[Peer]
PublicKey = YYYYY=
AllowedIPs = 172.16.0.0/16
Endpoint = 1.2.3.4:51820

Y este no es el final del extraño comportamiento. Estoy experimentando el problema de "consulta rechazada" solo en el símbolo del sistema, con nslookup. Parece que los navegadores no se ven afectados por este problema en absoluto. ( nslookupNo puedo acceder a google.com, pero Firefox lo abre sin problemas). Primero pensé que se trataba de algún tipo de fuga de DNS y que los navegadores estaban consultando algún DNS local. Pero para mi sorpresa parece que este no es el caso. El navegador recibe una respuesta DNS para un dominio manejado por DNS Resolver, con IP privada, lo que significa que la respuestatenía que venirdesde detrás de pfSense (de DNS Resolver)...

ehhhhhhh

¿Algunas ideas? Perdón por el texto largo... ¡Gracias!

información relacionada