arch-wiki-md-repo
Version:
All arch-wiki articles in markdown format, updated every two days.
153 lines (95 loc) • 6.66 kB
Markdown
[DNSCrypt](http://dnscrypt.org/) é 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*.
## Contents
* [1 Instalação](#Instala.C3.A7.C3.A3o)
* [2 Configução](#Configu.C3.A7.C3.A3o)
* [2.1 Escolher resolvedor DNS](#Escolher_resolvedor_DNS)
* [2.2 Modificando o resolv.conf](#Modificando_o_resolv.conf)
* [2.3 Iniciando o serviço Systemd](#Iniciando_o_servi.C3.A7o_Systemd)
* [3 Dicas](#Dicas)
* [3.1 DNSCrypt com cache DNS local](#DNSCrypt_com_cache_DNS_local)
* [3.1.1 Configuração para Unbound](#Configura.C3.A7.C3.A3o_para_Unbound)
* [3.1.2 Configuração para dnsmasq](#Configura.C3.A7.C3.A3o_para_dnsmasq)
* [3.2 Enable EDNS0](#Enable_EDNS0)
* [3.2.1 Teste EDNS0](#Teste_EDNS0)
## Instalação
Instale [dnscrypt-proxy](https://www.archlinux.org/packages/?name=dnscrypt-proxy) dos [repositórios oficiais](/index.php/Reposit%C3%B3rios_oficiais "Repositórios oficiais").
**Dica:** [dnscrypt-proxy-gui](https://aur.archlinux.org/packages/dnscrypt-proxy-gui/) 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:**
* Uma lista mais potencialmente mais atualizada está disponível diretamente na [página oficial](https://github.com/jedisct1/dnscrypt-proxy/blob/master/dnscrypt-resolvers.csv).
* Nesta fase, você também pode adicionar um usuário não privilegiado para executar o dnscrypt. Veja [#dnscrypt runs with root privileges](#dnscrypt_runs_with_root_privileges).
### Modificando o resolv.conf
Depois de selecionar um resolvedor DNS do dnscrypt, modifique o arquivo [resolv.conf](/index.php/Resolv.conf_(Portugu%C3%AAs) "Resolv.conf (Português)") e substitua 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](/index.php/Resolv.conf#Preserve_DNS_settings "Resolv.conf") para mais detalhes.
### Iniciando o serviço Systemd
Finalmente, [inicie e habilite](/index.php/Systemd_(Portugu%C3%AAs)#Usando_units "Systemd (Português)") 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](/index.php/Unbound "Unbound") e [dnsmasq](/index.php/Dnsmasq_(Portugu%C3%AAs) "Dnsmasq (Português)").
#### Configuração para Unbound
Configure [Unbound](/index.php/Unbound "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](/index.php/Unbound#Set_.2Fetc.2Fresolv.conf_to_use_the_local_DNS_server "Unbound")
```
do-not-query-localhost: no
forward-zone:
name: "."
forward-addr: 127.0.0.1@2053
```
Inicie o serviço [systemd](/index.php/Systemd_(Portugu%C3%AAs) "Systemd (Português)") `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](/index.php/Dnsmasq_(Portugu%C3%AAs)#Configura.C3.A7.C3.A3o_do_cache_DNS "Dnsmasq (Português)"). 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](https://en.wikipedia.org/wiki/Extension_mechanisms_for_DNS "wikipedia: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*](https://www.dns-oarc.net/oarc/services/replysizetest%7C), use *dig*, uma ferramenta de linha de comando disponível com o pacote [dnsutils](https://www.archlinux.org/packages/?name=dnsutils) dos [repositórios oficiais](/index.php/Reposit%C3%B3rios_oficiais "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"
```