dnscrypt-proxy (Português) - ArchWiki

Jump to content

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"

Categories:

- Domain Name System (Português)
- Encryption (Português)