dnscrypt-proxy (Português) - ArchWiki

# dnscrypt-proxy (Português)

From ArchWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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)