DNSCrypt (Português)

From ArchWiki
Jump to: navigation, search

DNSCrypt é um software que criptografa o tráfico DNS entre o usuário e o provedor DNS reverso e previne ataques de espionagem, falsificação ou man-in-the-middle.

Instalação

Instale dnscrypt-proxy dos repositórios oficiais.

Dica: dnscrypt-proxy-guiAUR fornece uma GUI escrita em QT para configurar o servidor DNS usado pelo DNSCrypt

Configução

Dica: Um exemplo de arquivo de configuração, /etc/dnscrypt-proxy.conf.example é fornecido, mas note que o systemd substitui a opção LocalAddress por um arquivo socket.


Para configurar o dnscrypt-proxy, execute as seguintes etapas:

Escolher resolvedor DNS

Escolha um resolvedor DNS no arquivo /usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv e edit /etc/dnscrypt-proxy.conf, usando o nome curto da primeira coluna do arquivo csv, Name. Por exemplo, para selecionar dnscrypt.eu-nl como resolvedor DNS:

ResolverName dnscrypt.eu-nl
Dica:

Modificando o resolv.conf

Depois de selecionar um resolvedor DNS do dnscrypt, modifique o arquivo resolv.conf e substituia o conjunto atual de endereços para o endereço do localhost:

nameserver 127.0.0.1

outros programas podem substituir esta configuração. Veja resolv.conf#Preserve DNS settings para mais detalhes.

Iniciando o serviço Systemd

Finalmente, inicie e habilite o dnscrypt-proxy.service

Dicas

DNSCrypt com cache DNS local

É recomendado executar DNSCrypt com cache DNS, caso contrário cada requisição será enviada ao servidor DNS reverso. Importante observar que se o Domínio mudar de endereço durante o tempo de vida do cache o registro local estará desatualizado. Abaixo temos dois exemplos de configuração para Unbound e dnsmasq.

Configuração para Unbound

Configure Unbound e adicione as seguintes linhas no fim da seção server em /etc/unbound/unbound.conf:

Dica: Observe que /etc/resolv.conf deve estar configurado com nameserver 127.0.0.1, mais informações para configurar /etc/resolv.conf para usar servidor DNS local[broken link: invalid section]
do-not-query-localhost: no
forward-zone:
  name: "."
  forward-addr: 127.0.0.1@2053

Inicie o serviço systemd unbound.service. Então configure DNSCrypt para combinar o novo IP e porta forward-zone do Unbound em /etc/conf.d/dnscrypt-proxy:

DNSCRYPT_LOCALIP=127.0.0.1
DNSCRYPT_LOCALPORT=2053
Nota: DNSCrypt precisa ser reiniciado primeiro que Unbound, então inclua unbound.service numa linha Before= na seção [Unit] de dnscrypt-proxy.service

Reinicie dnscrypt-proxy.service e unbound.service para que as modificações tenham efeito.

Configuração para dnsmasq

Configure dnsmasq como cache local DNS. Segue configuração básica:

/etc/dnsmasq.conf
no-resolv
server=127.0.0.2#2053
listen-address=127.0.0.1

Se você configurou DNSCrypt para usar DNS reverso com validação DNSSEC habilitada, certifique de habilitar, também, em dnsmasq:

/etc/dnsmasq.conf
proxy-dnssec

Configure DNSCrypt DNSCRYPT_LOCALIP apontando para o servidor dnsmasq 127.0.0.2 e DNSCRYPT_LOCALPORT para sua respectiva porta (também no servidor dnsmasq) #2053:

/etc/conf.d/dnscrypt-proxy
DNSCRYPT_LOCALIP=127.0.0.2
DNSCRYPT_LOCALPORT=2053

Reinicie dnscrypt-proxy.service e dnsmasq.service para que as modificações tenham efeito.

Enable EDNS0

Extension Mechanisms for DNS (inglês) que, dentre outras coisas, permite a um cliente especificar o tamanho de um pacote de resposta sobre UDP.

Adicione o que se segue ao seu arquivo /etc/resolv.conf:

options edns0

Você talvez deseje adicionar o seguinte argumento a dnscrypt-proxy:

--edns-payload-size=<bytes>

O tamanho padrão seria 1252 bytes, com valores até 4096 bytes com suposta segurança.. Um valor inferior ou igual a 512 bytes desabilita este mecanismo ao menos que o cliente envie um pacote com um seção OPT especificando o tamanho do pacote.

Teste EDNS0

Faça uso da ferramenta DNS Reply Size Test Server, use dig, uma ferramenta de linha de comando disponível com o pacote dnsutils[broken link: replaced by bind-tools] dos repositórios oficiais, para emitir uma consulta TXT para o nome rs.dns-oarc.net:

$ dig +short rs.dns-oarc.net txt

Com suporte ao EDNS0, a saída seria similar a isto:

rst.x3827.rs.dns-oarc.net.
rst.x4049.x3827.rs.dns-oarc.net.
rst.x4055.x4049.x3827.rs.dns-oarc.net.
"2a00:d880:3:1::a6c1:2e89 DNS reply size limit is at least 4055 bytes"
"2a00:d880:3:1::a6c1:2e89 sent EDNS buffer size 4096"