DoH#
Adicionado na versão 1.12.0.
Implementa um servidor DNS over HTTPS (DoH), conforme definido pela RFC 8484. Aceita consultas DNS transportadas por HTTP/HTTPS e as encaminha para um grupo de servidores DNS por UDP ou TCP.
Um cliente DoH envia uma consulta DNS como uma requisição GET, com
a mensagem DNS codificada em Base64URL no argumento de string de consulta
dns, ou como uma requisição POST, com a mensagem DNS bruta
no corpo da requisição. Em ambos os casos, o tipo de mídia da mensagem DNS
é application/dns-message.
Uma resposta DNS aceita pelo módulo com um RCODE diferente de zero
é retornada ao cliente com o status 200 (OK). O RCODE permanece na
mensagem DNS e não aciona uma nova tentativa sob a condição
invalid_response de doh_next_upstream.
A diretiva doh_transport controla se as consultas usam UDP ou TCP. Para proteger contra a falsificação de respostas fora de caminho, o módulo randomiza o ID de consulta enviado ao servidor DNS e restaura o ID original do cliente na resposta.
Nota
Essa randomização do ID de consulta usa um gerador não criptográfico e oferece apenas proteção limitada; acesse os servidores DNS por meio de uma rede confiável devidamente protegida, como recomendado para a diretiva resolver.
O campo de cabeçalho Cache-Control da resposta é derivado do TTL
mínimo da resposta: é definido como max-age=<ttl>, ou como
no-store quando não é possível determinar nenhum TTL armazenável
em cache.
Ao compilar a partir do código-fonte, o módulo
pode ser desabilitado com a opção de compilação
Encaminhamento de consultas DNS over HTTPS para um grupo de servidores DNS: Faz com que as conexões de saída para um servidor DNS se originem do
endereço IP local especificado, com uma porta opcional. O valor do
parâmetro pode conter variáveis. O valor
especial O parâmetro Para que esse parâmetro funcione, geralmente é necessário executar os
processos worker do Angie com privilégios de superusuário.
No Linux isso não é necessário, pois os processos worker herdam a
capacidade Define o Define um timeout para estabelecer uma conexão com um servidor DNS. Padrão o tamanho de uma página de memória do sistema operacional http, server, location Limita o tamanho de uma mensagem de consulta DNS aceita de um cliente. O
Padrão http, server, location Especifica em quais casos uma consulta deve ser passada para o próximo
servidor no grupo upstream: ocorreu um erro ao estabelecer uma conexão com o servidor, ao passar
uma consulta para ele ou ao ler a resposta; ocorreu um timeout ao estabelecer uma conexão com o servidor, ao
passar uma consulta para ele ou ao ler a resposta; o servidor retornou uma resposta DNS inválida; desabilita a passagem de uma consulta para o próximo servidor. A passagem de uma consulta para o próximo servidor pode ser limitada pelo
número de tentativas e pelo
tempo. Padrão http, server, location Limita o tempo durante o qual uma consulta pode ser passada para o
próximo servidor.
Definir Padrão http, server, location Limita o número de tentativas possíveis para passar uma consulta para o
próximo servidor.
Definir Define o endereço de um servidor DNS para o qual as consultas DNS são
encaminhadas. O endereço pode ser especificado como um nome de domínio ou
endereço IP com uma porta: ou como um grupo de servidores: As consultas são encaminhadas ao servidor por UDP ou TCP, conforme
configurado pela diretiva doh_transport. Apenas uma diretiva
doh_pass pode ser especificada em uma location. Define um timeout para ler uma resposta de um servidor DNS. O timeout é
definido apenas entre duas operações de leitura sucessivas, não para a
transmissão de toda a resposta. Se o servidor DNS não transmitir nada
dentro desse tempo, a conexão é fechada. Define um timeout para transmitir uma requisição a um servidor DNS. O
timeout é definido apenas entre duas operações de escrita sucessivas, não
para a transmissão de toda a requisição. Se o servidor DNS não receber
nada dentro desse tempo, a conexão é fechada. Habilita a opção de socket Seleciona o protocolo de transporte usado para encaminhar consultas DNS a
um servidor DNS: se o cache de keepalive do upstream contiver
uma conexão TCP livre, a consulta é enviada por ela (TCP); caso
contrário, ela é enviada primeiro por UDP e reenviada por TCP se o
servidor responder com uma mensagem truncada (o flag as consultas são enviadas somente por UDP; uma resposta truncada é
tratada como um erro, e a consulta não é reenviada por TCP; as consultas são enviadas somente por TCP.--without-http_doh_module. Nos pacotes e imagens de
nossos repositórios, o módulo está incluído
na compilação.Exemplo de Configuração#
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;
}
}
}
Diretivas#
doh_bind#
off cancela o efeito da diretiva doh_bind herdada
do nível de configuração anterior, permitindo que o sistema atribua
automaticamente o endereço IP e a porta locais.transparent permite que as conexões de saída para um
servidor DNS se originem de um endereço IP não local, por exemplo, do
endereço IP real de um cliente:doh_bind $remote_addr transparent;
CAP_NET_RAW do processo mestre quando o parâmetro
transparent é especificado.doh_buffer_size#
size do buffer usado para ler a resposta recebida de um
servidor DNS. O size não pode ser menor que 512 bytes.doh_connect_timeout#
doh_max_size#
doh_max_size size;size configurado deve ser de pelo menos 12 bytes. Uma consulta
mais curta que 12 bytes (o tamanho de um cabeçalho de mensagem DNS) ou
maior que size é rejeitada.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 desabilita essa limitação.doh_next_upstream_tries#
doh_next_upstream_tries number;doh_next_upstream_tries 0;0 desabilita essa limitação.doh_pass#
doh_pass 127.0.0.1:53;
doh_pass dns_upstream;
doh_read_timeout#
doh_send_timeout#
doh_socket_keepalive#
SO_KEEPALIVE para conexões de saída a
um servidor DNS. Com off, as configurações de socket do sistema
operacional permanecem em vigor.doh_transport#
autoTC é
definido);udptcp