DoH#
Added in version 1.12.0.
Implementa un servidor DNS over HTTPS (DoH) conforme a RFC 8484. Acepta consultas DNS transportadas por HTTP/HTTPS y las reenvía a un grupo de servidores DNS por UDP o TCP.
Un cliente DoH envía una consulta DNS ya sea como una solicitud GET,
con el mensaje DNS codificado en Base64URL en el argumento de cadena de
consulta dns, o como una solicitud POST, con el mensaje DNS
sin procesar en el cuerpo de la solicitud. En ambos casos, el tipo de medio
del mensaje DNS es application/dns-message.
Una respuesta DNS aceptada por el módulo con un RCODE distinto de
cero se devuelve al cliente con el estado 200 (OK). El RCODE
permanece en el mensaje DNS y no provoca un reintento bajo la condición
invalid_response de doh_next_upstream.
La directiva doh_transport controla si las consultas usan UDP o TCP. Para protegerse contra la suplantación de respuestas fuera de ruta, el módulo aleatoriza el ID de consulta enviado al servidor DNS y restaura el ID original del cliente en la respuesta.
Nota
Esta aleatorización del ID de consulta usa un generador no criptográfico y ofrece solo una protección limitada; acceda a los servidores DNS a través de una red de confianza debidamente protegida, tal como se recomienda para la directiva resolver.
El campo de encabezado Cache-Control de la respuesta se deriva del
TTL mínimo de la respuesta: se establece en max-age=<ttl>, o en
no-store cuando no se puede determinar ningún TTL almacenable en
caché.
Al compilar desde el código fuente, el módulo se
puede deshabilitar con la opción de compilación
Reenvío de consultas DNS over HTTPS a un grupo de servidores DNS: Hace que las conexiones salientes a un servidor DNS se originen desde la
dirección IP local especificada, con un puerto opcional. El valor del
parámetro puede contener variables. El valor
especial El parámetro Para que este parámetro funcione, generalmente es necesario ejecutar los
procesos de trabajo de Angie con privilegios de superusuario.
En Linux esto no es necesario, ya que los procesos de trabajo heredan la
capacidad Establece el Predeterminado http, server, location Define un tiempo de espera para establecer una conexión con un servidor DNS. Predeterminado el tamaño de una página de memoria del sistema operativo http, server, location Limita el tamaño de un mensaje de consulta DNS aceptado de un cliente. El
Predeterminado http, server, location Especifica en qué casos una consulta debe pasarse al siguiente servidor del
grupo upstream: se produjo un error al establecer una conexión con el servidor, al
pasarle una consulta o al leer la respuesta; se produjo un tiempo de espera agotado al establecer una conexión con
el servidor, al pasarle una consulta o al leer la respuesta; el servidor devolvió una respuesta DNS no válida; deshabilita el paso de una consulta al siguiente servidor. El paso de una consulta al siguiente servidor puede limitarse mediante el
número de intentos y el
tiempo. Predeterminado http, server, location Limita el tiempo durante el cual una consulta puede pasarse al
siguiente servidor.
Establecer Predeterminado http, server, location Limita el número de intentos posibles para pasar una consulta al
siguiente servidor.
Establecer Establece la dirección de un servidor DNS al que se reenvían las consultas
DNS. La dirección puede especificarse como un nombre de dominio o una
dirección IP con un puerto: o como un grupo de servidores: Las consultas se reenvían al servidor por UDP o TCP, según lo configurado
por la directiva doh_transport. Solo se puede especificar una
directiva doh_pass en una ubicación. Define un tiempo de espera para leer una respuesta de un servidor DNS. El
tiempo de espera se establece únicamente entre dos operaciones de lectura
sucesivas, no para la transmisión de toda la respuesta. Si el servidor DNS
no transmite nada dentro de este tiempo, la conexión se cierra. Establece un tiempo de espera para transmitir una solicitud a un servidor
DNS. El tiempo de espera se establece únicamente entre dos operaciones de
escritura sucesivas, no para la transmisión de toda la solicitud. Si el
servidor DNS no recibe nada dentro de este tiempo, la conexión se cierra. Predeterminado http, server, location Habilita la opción de socket Predeterminado http, server, location Selecciona el protocolo de transporte usado para reenviar consultas DNS a
un servidor DNS: si la caché keepalive del upstream contiene una
conexión TCP libre, la consulta se envía a través de ella (TCP); en
caso contrario, primero se envía por UDP y se reintenta por TCP si el
servidor responde con un mensaje truncado (se establece el indicador
las consultas se envían solo por UDP; una respuesta truncada se trata
como un error, y la consulta no se reintenta por TCP; las consultas se envían solo por TCP.--without-http_doh_module. En los paquetes e imágenes de
nuestros repositorios, el módulo está incluido
en la compilación.Ejemplo de configuración#
http {
upstream dns_upstream {
server 127.0.0.1:53;
}
server {
listen 443 ssl;
server_name dns.example.com;
ssl_certificate dns.example.com.crt;
ssl_certificate_key dns.example.com.key;
location /dns-query {
doh_pass dns_upstream;
}
}
}
Directivas#
doh_bind#
off cancela el efecto de la directiva doh_bind
heredada del nivel de configuración anterior, permitiendo que el sistema
asigne automáticamente la dirección IP y el puerto locales.transparent permite que las conexiones salientes a un
servidor DNS se originen desde una dirección IP no local, por ejemplo, desde
la dirección IP real de un cliente:doh_bind $remote_addr transparent;
CAP_NET_RAW del proceso maestro cuando se especifica el
parámetro transparent.doh_buffer_size#
size del búfer usado para leer la respuesta recibida
de un servidor DNS. El size no puede ser menor de 512 bytes.doh_connect_timeout#
doh_connect_timeout time;doh_connect_timeout 60s;doh_max_size#
doh_max_size size;size configurado debe ser de al menos 12 bytes. Se rechaza una
consulta más corta de 12 bytes (el tamaño de un encabezado de mensaje DNS)
o más larga que size.doh_next_upstream#
doh_next_upstream error | timeout | invalid_response | off ...;doh_next_upstream error timeout;errortimeoutinvalid_responseoffdoh_next_upstream_timeout#
doh_next_upstream_timeout time;doh_next_upstream_timeout 0;0 deshabilita esta limitación.doh_next_upstream_tries#
doh_next_upstream_tries number;doh_next_upstream_tries 0;0 deshabilita esta limitación.doh_pass#
doh_pass 127.0.0.1:53;
doh_pass dns_upstream;
doh_read_timeout#
doh_send_timeout#
doh_socket_keepalive#
doh_socket_keepalive on | off;doh_socket_keepalive off;SO_KEEPALIVE para las conexiones
salientes a un servidor DNS. Con off, permanecen vigentes los
ajustes de socket del sistema operativo.doh_transport#
doh_transport tcp | udp | auto;doh_transport auto;autoTC);udptcp