Criptografia de DNS
O AdGuard Home oferece suporte a todos os protocolos modernos de criptografia DNS prontos para uso:
O AdGuard Home oferece suporte a DNSCrypt tanto no lado do cliente quanto no lado do servidor. Saiba como configurar o AdGuard Home como um servidor DNSCrypt.
Este guia explica como configurar um servidor DNS criptografado com o AdGuard Home.
Instalação do servidor
O objetivo de proteger o tráfego DNS é protegê-lo de terceiros que possam estar analisando ou modificando-o, como, por exemplo, o provedor de serviços de internet (ISP).
Significa que você precisará de um servidor com um endereço IP público dedicado. Existem muitos provedores de servidores em nuvem baratos: DigitalOcean, Vultr, Linode, etc. Basta escolher um, criar um servidor na nuvem e instalar o AdGuard Home no seu servidor.
Registre um nome de domínio
Primeiramente, você precisa de um nome de domínio. Se você nunca registrou um domínio, aqui está um [tutorial simples][registro de nome de domínio] que irá te ajudar com isso.
Obtenha um certificado SSL
Tanto o DNS sobre HTTPS quanto o DNS sobre TLS são baseados em criptografia TLS, portanto, você precisará de um certificado SSL para usá-los.
Um certificado SSL pode ser adquirido de uma Autoridade Certificadora (AC), uma empresa confiável para navegadores e sistemas operacionais que emite certificados SSL para domínios.
Como alternativa, você pode obter o certificado gratuitamente na Let’s Encrypt CA, uma autoridade certificadora gratuita desenvolvida pelo Internet Security Research Group (ISRG).
Este guia explica como obter um certificado deles.
Usando o CertBot
O Certbot é um cliente fácil de usar que obtém um certificado do Let's Encrypt.
- Vá para certbot.eff.org e escolha Nenhum dos softwares acima e seu sistema operacional.
- Siga as instruções de instalação e pare antes de chegar à seção Get Started.
Obter um certificado usando DNS challenge
Se você tiver um nome de domínio, usar o DNS challenge é a maneira mais fácil de obter um certificado.
Execute este comando e siga as instruções do Certbot:
sudo certbot certonly --manual --preferred-challenges=dns --preferred-chain="ISRG Root X1"
No final, você obterá dois arquivos:
fullchain.pem: seu certificado SSL codificado em PEMprivkey.pem: sua chave privada codificada em PEM
Ambos serão necessários para configurar o AdGuard Home.
Você precisará usar exatamente o mesmo procedimento para renovar o certificado existente.
Usando Lego
Também há uma alternativa realmente boa e fácil de usar ao CertBot chamada LEGO.
- Instale-o usando um método apropriado.
- Escolha seu provedor de DNS na [lista][provedor-lego] e siga as instruções para obter um certificado.
Além disso, aqui está um script simples que você pode usar para automatizar a geração e a renovação de certificados.
Configurar o AdGuard Home
Abra a interface da Web do AdGuard Home e vá para Configurações.
Selecione a seção Criptografia.

Copie e cole o conteúdo do arquivo
fullchain.pemno campo Certificados ou especifique o caminho para o arquivo.Copie e cole o conteúdo do arquivo
privkey.pemno campo de entrada em Chave privada ou especifique o caminho para o arquivo.Insira o nome do seu domínio em Nome do servidor.
Obtenha as mensagens de validação bem-sucedidas e clique em Salvar configurações.
O AdGuard Home recarregará automaticamente os certificados e/ou chaves privadas especificados pelo caminho do arquivo quando estes forem alterados. Uma recarga também pode ser acionada por um sinal SIGHUP.
Usando com proxy reverso
Ja temos um guia sobre como configurar um servidor proxy reverso para acessar a interface do usuario da Web do AdGuard Home.
O AdGuard Home consegue restringir solicitações DNS sobre HTTPS provenientes de servidores proxy que não estejam incluídos na lista de servidores confiáveis. Por padrão, ele é configurado para aceitar Solicitações de endereços de loopback IPv4 e IPv6.
Para permitir que o AdGuard Home processe solicitações DNS sobre HTTPS de um servidor proxy reverso, defina a configuração trusted_proxies no arquivo AdGuardHome.yaml com o endereço IP do servidor proxy. Se você tiver vários servidores proxy, poderá usar um CIDR em vez de um simples endereço IP.
Proxy reverso Nginx
Para configurar o AdGuard Home para aceitar solicitações do servidor proxy reverso Nginx, certifique-se de que o próprio servidor proxy reverso esteja configurado corretamente.
O arquivo nginx.conf deve conter as diretivas apropriadas para adicionar os cabeçalhos de encaminhamento suportados à solicitação, que são X-Real-IP ou X-Forwarded-For. Isso pode ser conseguido com ngx_http_realip_module. Resumindo, o módulo obtém o Endereço de IP real do cliente e o grava no header da Solicitação HTTP. O AdGuard Home receberá e interpretará o valor deste header como o endereço real do cliente. O endereço do servidor proxy reverso também será recebido e verificado na lista de proxies "confiáveis".
Outro cabeçalho que você pode querer encaminhar é o cabeçalho Host, necessário para que o AdGuard Home reconheça solicitações de clientes que possuem um ClientID em seus nomes de host.
Por exemplo, se a configuração do servidor proxy reverso contiver as seguintes diretivas:
location /dns-query {
# …
proxy_set_header Host $host;
proxy_set_header X-Real-IP '1.2.3.4';
proxy_bind 192.168.1.2;
# …
}
O AdGuard Home obterá o endereço 192.168.1.2 como o endereço do seu servidor proxy e o verificará em relação aos trusted_proxies. O 1.2.3.4 será controlado pelas configurações de acesso caso o proxy seja "confiável".
Cloudflare CDN
A rede de distribuição de conteúdo da Cloudflare atua como um proxy reverso, anexando seus próprios cabeçalhos (cloudflare-headers) às solicitações encaminhadas, que são CF-Connecting-IP e True-Client-IP. Eles também são compatíveis com o AdGuard Home, portanto os endereços dos servidores de proxy reverso podem ser inseridos diretamente na lista trusted_proxies. Consulte a referência oficial do Cloudflare sobre como restaurar o IP original do visitante.
Outros cabeçalhos
Outros cabeçalhos HTTP poderão ser compatíveis com o AdGuard Home no futuro. No entanto, qualquer solicitação de recurso relacionada a cabeçalhos deve primeiro ser tentada configurando o próprio proxy reverso.
Por exemplo, para modificar o mecanismo de HTTP Strict Transport Security para incluir a diretiva experimental preload, pode ser usado algo como o seguinte trecho de configuração:
location /dns-query {
# …
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
# …
}
Configurando dispositivos
Android
- O Android 9 e versões posteriores oferecem suporte nativo a
DNS-over-TLS. Para configurar, acesse Configurações → Rede e internet → Avançado → DNS privado e insira o nome do seu domínio. - AdGuard para Android suporta
DNS sobre HTTPS,DNS sobre TLS,DNSCrypteDNS sobre QUIC. - Intra adiciona suporte a
DNS-over-HTTPSao Android.
iOS
- O iOS 14 e versões posteriores oferecem suporte nativo a
DNS sobre TLSeDNS sobre HTTPSpor meio de perfis de configuração. Para facilitar as coisas, o AdGuard Home pode gerar esses perfis de configuração para você. Basta acessar Guia de Configuração → Privacidade de DNS e rolar até iOS. - AdGuard para iOS é compatível com
DNS sobre HTTPS,DNS sobre TLS,DNSCrypteDNS sobre QUIC. - DNSCloak suporta
DNS-over-HTTPS, mas para configurá-lo para usar seu próprio servidor, você precisará gerar um DNS Stamp para ele.
Windows
- O Windows 10 Build 19628 e superiores oferecem suporte nativo a
DNS-over-HTTPS. - AdGuard para Windows suporta
DNS sobre HTTPS,DNS sobre TLS,DNSCrypteDNS sobre QUIC.
macOS
- O macOS Big Sur e versões posteriores oferecem suporte nativo a
DNS sobre TLSeDNS sobre HTTPSpor meio de perfis de configuração. Para facilitar as coisas, o AdGuard Home pode gerar esses perfis de configuração para você. Basta acessar Guia de Configuração → Privacidade de DNS e rolar até iOS.
Outras implementações
- O próprio AdGuard Home pode ser usado como um cliente DNS seguro em qualquer plataforma.
- dnsproxy é compatível com todos os protocolos de DNS seguros conhecidos.
- dnscrypt-proxy oferece suporte a
DNS-over-HTTPS. - Mozilla Firefox é compatível com
DNS sobre HTTPS.
Configurando o DNSCrypt
O AdGuard Home pode funcionar como um servidor DNSCrypt. No entanto, esse recurso está disponível apenas por meio de um arquivo de configuração e não pode ser configurado usando a interface web. Este guia explica como fazer isso.
Gerando um arquivo de configuração
Veja como gerar um arquivo de configuração do DNSCrypt e apontar o AdGuard Home para ele:
Certifique-se de que suas configurações de TLS sejam válidas e que a criptografia esteja ativada.
Obtenha a versão mais recente do utilitário
dnscryptpara o seu sistema. Extraia o arquivo e navegue até o diretório resultante.Em sistemas Unix, usando um shell compatível com POSIX:
(Aqui e abaixo,
linux-amd64é usado como um exemplo. Certifique-se de baixar e usar a versão compatível com sua plataforma.)Extraia os arquivos:
tar -f ./dnscrypt-linux-amd64-v2.2.3.tar.gz -v -x -zExemplo de saída:
linux-amd64/
linux-amd64/README.md
linux-amd64/LICENSE
linux-amd64/dnscryptNavegue até o diretório extraído:
cd ./linux-amd64/Gerar o arquivo de configuração:
./dnscrypt generate --provider-name '2.dnscrypt-cert.example.org' --out ./dnscrypt.yamlExemplo de saída:
```none
2022/01/02 12:34:56 [info] Generating configuration for 2.dnscrypt-cert.example.org
2022/02/02 12:34:56 [info] Configuration has been written to ./dnscrypt.yaml
2022/02/02 12:34:56 [info] Go to https://dnscrypt.info/stamps to generate an SDNS stamp
2022/02/02 12:34:56 [info] You can run a DNSCrypt server using the following command:
2022/02/02 12:34:56 [info] dnscrypt server -c ./dnscrypt.yaml -f 8.8.8.8
```
No Windows, usando o PowerShell:
(Aqui e abaixo,
windows-amd64é usado como exemplo. Certifique-se de baixar e usar a arquitetura de sua CPU.)Extraia os arquivos:
Expand-Archive -Path .\dnscrypt-windows-amd64-v2.2.3.zipNavegue até o diretório extraído:
Set-Location -Path .\dnscrypt-windows-amd64-v2.2.3\windows-amd64\Gerar o arquivo de configuração:
.\dnscrypt.exe generate --provider-name '2.dnscrypt-cert.example.org' --out .\dnscrypt.yamlExemplo de saída:
2022/01/02 12:34:56 [info] Generating configuration for 2.dnscrypt-cert.example.org
2022/02/02 12:34:56 [info] Configuration has been written to .\dnscrypt.yaml
2022/02/02 12:34:56 [info] Go to https://dnscrypt.info/stamps to generate an SDNS stamp
2022/02/02 12:34:56 [info] You can run a DNSCrypt server using the following command:
2022/02/02 12:34:56 [info] dnscrypt server -c .\dnscrypt.yaml -f 8.8.8.8
Onde
example.orgé o nome do seu host e./dnscrypt.yamlé o nome do arquivo de saída da configuração.Você pode adicionar o caminho para o binário ao seu
PATH/$env:PATH.No arquivo de configuração (normalmente
AdGuardHome.yaml), adicione as seguintes linhas:'tls':
# N.B. The encryption must be enabled.
'enabled': true
# …
'port_dnscrypt': 5443
'dnscrypt_config_file': './dnscrypt.yaml'Onde
5443é a porta do seu servidor DNSCrypt e./dnscrypt.yamlé o nome do arquivo de configuração gerado na etapa 2.ImportantePare o AdGuard Home antes de alterar o arquivo de configuração.
:::dica
No Windows, recomenda-se usar o caminho completo para o arquivo de configuração. Por exemplo,
C:\Users\Me\Files\dnscrypt.yaml.:::
Gerando um selo DNSCrypt
Veja como gerar um carimbo DNSCrypt e verificar sua instalação:
Vá para https://dnscrypt.info/stamps/.
Insira os data do seu arquivo de configuração DNSCrypt. A chave pública do provedor é o valor do campo
public_keyno seu arquivo de configuração DNSCrypt.noteInsira o host com sua porta personalizada.
Agora você tem um carimbo que se parece mais ou menos com este:
sdns://AQcAAAAAAAAADTEyNy4wLjAuMTo0NDMg8R3bzEgX5UOEX93Uy4gYSbZCJvPeOXYlZp2HuRm8T7AbMi5kbnNjcnlwdC1jZXJ0LmV4YW1wbGUub3JnVerifique sua instalação executando o seguinte comando:
./dnscrypt lookup-stamp \
--domain 'example.com' \
--stamp 'sdns://AQcAAAAAAAAADTEyNy4wLjAuMTo0NDMg8R3bzEgX5UOEX93Uy4gYSbZCJvPeOXYlZp2HuRm8T7AbMi5kbnNjcnlwdC1jZXJ0LmV4YW1wbGUub3Jn' \
--type 'a'Ou, no Windows:
.\dnscrypt.exe lookup-stamp `
--domain 'example.com' `
--stamp 'sdns://AQcAAAAAAAAADTEyNy4wLjAuMTo0NDMg8R3bzEgX5UOEX93Uy4gYSbZCJvPeOXYlZp2HuRm8T7AbMi5kbnNjcnlwdC1jZXJ0LmV4YW1wbGUub3Jn' `
--type 'a'Onde
example.comé o nome de domínio a ser pesquisado.
Configurando dispositivos para usar DNSCrypt
Todas as plataformas
dnscrypt-proxy(implementação de referência). DNSCrypt-Proxy é um proxy de linha de comando para Linux, BSD, Windows, macOS, Android e outros.
Android
- AdGuard para Android oferece suporte ao DNSCrypt.
iOS
- AdGuard para iOS oferece suporte ao DNSCrypt.
- DNSCloak usa
dnscrypt-proxyinternamente e suporta DNSCrypt.
Windows
- AdGuard para Windows oferece suporte ao DNSCrypt.
- Simple DNSCrypt é uma ferramenta simples de gerenciamento para configurar e executar
dnscrypt-proxyno Windows.
Consulte o site do DNSCrypt e a lista do projeto de privacidade do DNS para obter mais informações.