dnscrypt-proxy (Português)

Status de tradução:
Esse artigo é uma tradução de
Dnscrypt-proxy
. Data da última tradução: 2019-05-23. Você pode ajudar a sincronizar a tradução, se houver
alterações
na versão em inglês.
Artigos relacionados
Resolução de nome de domínio
O
dnscrypt-proxy
é um proxy DNS com suporte para os protocolos DNS criptografados
DNS sobre HTTPS
e
DNSCrypt
, que pode ser usado para prevenir ataques do tipo
man-in-the-middle
e espionagem. O
dnscrypt-proxy
também é compatível com
DNSSEC
.
Instalação
Instale
o pacote
dnscrypt-proxy
.
Configuração
Inicialização
O serviço pode ser iniciado de duas formas mutuamente exclusivas (ou seja, apenas um dos dois pode estar ativado):
Com o arquivo
.service
.
Nota
A opção
listen_addresses
deve ser configurado (p.ex.,
listen_addresses = ['127.0.0.1:53', '[::1]:53']
) no arquivo de configuração quando estiver usando o arquivo
.service
.
Por meio de ativação de
.socket
.
Nota
Ao usar a ativação de soquete, a opção
listen_addresses
deve ser definida como vazia (p.ex.,
listen_addresses = [ ]
) no arquivo de configuração, pois o systemd cuida da configuração do soquete.
Selecionar resolvedor
Ao deixar
server_names
comentado no arquivo de configuração
/etc/dnscrypt-proxy/dnscrypt-proxy.toml
, o
dnscrypt-proxy
escolherá o servidor mais rápido a partir das fontes já configurado em
[sources]
[1]
. As listas serão baixadas, verificadas e atualizadas automaticamente
[2]
. Assim, a configuração de um conjunto específico de servidores é opcional.
Para definir manualmente qual servidor é usado, edite
/etc/dnscrypt-proxy/dnscrypt-proxy.toml
e descomente a variável
server_names
, selecionando um ou mais dos servidores. Por exemplo, para usar os servidores da Cloudflare:
server_names = ['cloudflare', 'cloudflare-ipv6']
Uma lista completa de resolvedores está localizada na
página do upstream
ou no
Github
. Se o
dnscrypt-proxy
já tiver sido executado com sucesso no sistema antes,
/var/cache/dnscrypt-proxy/public-resolvers.md
também conterá uma lista. Olhe a descrição dos servidores que validam
DNSSEC (Português)
, não registram e não são censurados. Esses requisitos podem ser configurados globalmente com as opções
require_dnssec
,
require_nolog
,
require_nofilter
.
Desabilitar quaisquer serviços na porta 53
Dica
Se estiver usando
#Unbound
como seu cache de DNS local, esta seção pode ser ignorada, pois
unbound
é executado na porta 53 por padrão.
Para ver se algum programa está usando a porta 53, execute:
$ ss -lp 'sport = :domain'
Se a saída contiver mais do que a primeira linha de nomes de coluna, será necessário desabilitar qualquer serviço que esteja usando a porta 53. Um culpado comum é
systemd-resolved.service
(
NetworkManager (Português)#Unit dbus-org.freedesktop.resolve1.service não encontrado
), mas outros gerentes de rede podem ter componentes análogos. Você está pronto para prosseguir, uma vez que o comando acima não produz nada além da seguinte linha:
Netid               State                 Recv-Q                Send-Q                                 Local Address:Port                                   Peer Address:Port
Modificar resolv.conf
Modifique o arquivo
resolv.conf
e substitua o conjunto atual de endereços do resolvedor pelo endereço para
localhost
e opções
[3]
:
nameserver ::1
nameserver 127.0.0.1
options edns0 single-request-reopen
Outros programas sobrescrevem essa configuração. Veja
resolv.conf (Português)#Sobrescrita do /etc/resolv.conf
para detalhes.
Iniciar o serviço systemd
Finalmente,
inicie/habilite
a unit
dnscrypt-proxy.service
ou
dnscrypt-proxy.socket
, dependendo de qual método você escolheu.
Dicas e truques
Configuração de cache de DNS local
Dica
dnscrypt-proxy
pode armazenar entradas em cache sem depender de outro programa. Este recurso é habilitado por padrão com a linha
cache=true
no seu arquivo de configuração
dnscrypt-proxy
É recomendado executar o
dnscrypt-proxy
como um encaminhador para um cache DNS local, se não estiver usando o recurso de cache
dnscrypt-proxy
; caso contrário, todas as consultas farão um retorno para o resolvedor upstream. Qualquer programa de cache DNS local deve funcionar. Além de configurar o
dnscrypt-proxy
, você deve configurar o seu programa de cache DNS local.
Alterar a porta
Para encaminhar consultas de um cache DNS local, o
dnscrypt-proxy
deve escutar em uma porta diferente do padrão
53
, já que o próprio cache DNS precisa escutar
53
e consultar
dnscrypt-proxy
em uma porta diferente. O número de porta
53000
é usado como um exemplo nesta seção. Neste exemplo, o número da porta é maior que 1024, portanto, o
dnscrypt-proxy
não precisa ser executado pelo root.
Existem dois métodos para alterar a porta padrão:
Método do soquete
Edite
dnscrypt-proxy.socket
como o seguinte conteúdo:
[Socket]
ListenStream=
ListenDatagram=
ListenStream=127.0.0.1:53000
ListenStream=[::1]:53000
ListenDatagram=127.0.0.1:53000
ListenDatagram=[::1]:53000
Quando as consultas são encaminhadas do cache DNS local para
53000
,
dnscrypt-proxy.socket
vai iniciar
dnscrypt-proxy.service
.
Método do serviço
Edite a opção
listen_addresses
em
/etc/dnscrypt-proxy/dnscrypt-proxy.toml
com o seguinte:
listen_addresses = ['127.0.0.1:53000', '[::1]:53000']
Exemplo de configurações de cache de DNS local
As seguintes configurações devem funcionar com
dnscrypt-proxy
e assumir que ele está escutando na porta
53000
.
Unbound
Configure
Unbound
ao seu gosto (em particular, veja
Unbound#Local DNS server
) e adicione as seguintes linhas ao final da seção
server
em
/etc/unbound/unbound.conf
:
do-not-query-localhost: no
forward-zone:
  name: "."
  forward-addr: ::1@53000
  forward-addr: 127.0.0.1@53000
Dica
Se você estiver configurando um servidor, adicione
interface: 0.0.0.0@53
e
access-control:
sua-rede
/
máscara-de-sub-rede
allow
dentro a seção
server:
para que os outros computadores possam se conectar ao servidor. Um cliente deve ser configurado com
nameserver
endereço-de-seu-servidor
em
/etc/resolv.conf
.
Reinicie
unbound.service
para aplicar as alterações.
dnsmasq
Configure o dnsmasq como um
cache DNS local
. A configuração básica para trabalhar com
dnscrypt-proxy
:
/etc/dnsmasq.conf
no-resolv
server=::1#53000
server=127.0.0.1#53000
listen-address=::1,127.0.0.1
Se você configurou o
dnscrypt-proxy
para usar um resolvedor com a validação
DNSSEC
ativada, certifique-se de ativá-lo também no dnsmasq:
/etc/dnsmasq.conf
conf-file=/usr/share/dnsmasq/trust-anchors.conf
dnssec
Reinicie
dnsmasq.service
para aplicar as configurações.
pdnsd
Instale o
pdnsd
. Uma configuração básica para trabalhar com o
dnscrypt-proxy
é:
/etc/pdnsd.conf
global {
    perm_cache = 1024;
    cache_dir = "/var/cache/pdnsd";
    run_as = "pdnsd";
    server_ip = 127.0.0.1;
    status_ctl = on;
    query_method = udp_tcp;
    min_ttl = 15m;       # Retain cached entries at least 15 minutes.
    max_ttl = 1w;        # One week.
    timeout = 10;        # Global timeout option (10 seconds).
    neg_domain_pol = on;
    udpbufsize = 1024;   # Upper limit on the size of UDP messages.
}

server {
    label = "dnscrypt-proxy";
    ip = 127.0.0.1;
    port = 53000;
    timeout = 4;
    proxy_only = on;
}

source {
    owner = localhost;
    file = "/etc/hosts";
}
Reinicie
pdnsd.service
para aplicar as configurações.
Sandboxing
Edite
o
dnscrypt-proxy.service
para incluir as seguintes linhas:
[Service]
CapabilityBoundingSet=CAP_IPC_LOCK CAP_SETGID CAP_SETUID CAP_NET_BIND_SERVICE
ProtectSystem=strict
ProtectHome=true
ProtectKernelTunables=true
ProtectKernelModules=true
ProtectControlGroups=true
PrivateTmp=true
PrivateDevices=true
MemoryDenyWriteExecute=true
NoNewPrivileges=true
RestrictRealtime=true
RestrictAddressFamilies=AF_INET AF_INET6
SystemCallArchitectures=native
SystemCallFilter=~@clock @cpu-emulation @debug @keyring @ipc @module @mount @obsolete @raw-io
Veja
systemd.exec(5)
e
Systemd (Português)#Usando ambientes de aplicativos em sandbox
para mais informações.
Habilitar EDNS0
Extension Mechanisms for DNS
que, junto com outras coisas, permitem que um cliente especifique quão grande uma resposta por UDP pode ser.
Adicione a linha a seguir ao
/etc/resolv.conf
:
options edns0
Você também pode querer acrescentar o seguinte ao
/etc/dnscrypt-proxy.conf
:
EDNSPayloadSize
bytes
sendo
bytes
um número de bytes, com valor padrão de
1252
e com valores máximos até
4096
bytes sendo supostamente seguros. Um valor abaixo ou igual a
512
bytes desativará este mecanismo, a menos que um cliente envie um pacote com uma seção OPT fornecendo um tamanho de carga útil.
Testar EDNS0
Use o
Servidor de teste de tamanho de resposta do DNS
, use a ferramenta de linha de comando
drill
para emitir uma consulta TXT para o nome
rs.dns-oarc.net
:
$ drill rs.dns-oarc.net TXT
Caso haja suporte a
EDNS0
, a "answer section" da saída deve ser parecer com isso:
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"