Como Configurar DNS sobre HTTPS no Linux

Este guia irá ajudá-lo a configurar e configurar DNS sobre HTTPS (DoH) em seu sistema Linux, cobrindo vários métodos de configuração e melhores práticas.

Pré-requisitos

  • Sistema operacional Linux
  • Privilégios de administrador (root)
  • Conhecimento básico de linha de comando
  • Conexão de rede estável

Usando systemd-resolved

Passo 1: Verificar Versão do systemd-resolved

systemctl --version
systemd-resolve --version

Certifique-se de que a versão seja 247 ou superior, pois essas versões suportam DoH.

Passo 2: Configurar resolved.conf

Edite /etc/systemd/resolved.conf:

[Resolve]
DNS=1.1.1.1 1.0.0.1
DNSOverTLS=yes
DNSSEC=yes
Cache=yes
DNSStubListener=yes

Para DoH, adicione a seguinte configuração:

[Resolve]
DNS=https://cloudflare-dns.com/dns-query
     https://dns.google/dns-query
DNSOverTLS=no
DNSSEC=yes
Cache=yes
DNSStubListener=yes

Passo 3: Reiniciar Serviço

sudo systemctl restart systemd-resolved
sudo systemctl status systemd-resolved

Usando NetworkManager

Passo 1: Verificar Versão do NetworkManager

nmcli --version

Certifique-se de que a versão suporta funcionalidade DoH.

Passo 2: Configurar Conexão

Configure DoH usando nmcli:

# Listar conexões atuais
nmcli connection show

# Modificar conexão especificada
sudo nmcli connection modify "Nome da Conexão" ipv4.dns "1.1.1.1,1.0.0.1" ipv4.dns-over-tls yes
sudo nmcli connection modify "Nome da Conexão" ipv6.dns "2606:4700:4700::1111,2606:4700:4700::1001" ipv6.dns-over-tls yes

Passo 3: Aplicar Alterações

sudo nmcli connection up "Nome da Conexão"

Usando Clientes Independentes

dnscrypt-proxy

  1. Instalação
# Debian/Ubuntu
sudo apt install dnscrypt-proxy

# Fedora
sudo dnf install dnscrypt-proxy

# Arch Linux
sudo pacman -S dnscrypt-proxy
  1. Configuração

Edite /etc/dnscrypt-proxy/dnscrypt-proxy.toml:

server_names = ['cloudflare', 'google']
listen_addresses = ['127.0.0.1:53']
max_clients = 250
ipv4_servers = true
ipv6_servers = true
dnscrypt_servers = true
doh_servers = true
require_dnssec = true
require_nolog = true
require_nofilter = true
force_tcp = false
timeout = 2500
keepalive = 30
  1. Iniciar Serviço
sudo systemctl enable dnscrypt-proxy
sudo systemctl start dnscrypt-proxy
sudo systemctl status dnscrypt-proxy

Stubby

  1. Instalação
# Debian/Ubuntu
sudo apt install stubby

# Fedora
sudo dnf install stubby

# Arch Linux
sudo pacman -S stubby
  1. Configuração

Edite /etc/stubby/stubby.yml:

resolution_type: GETDNS_RESOLUTION_STUB
dns_transport_list:
  - GETDNS_TRANSPORT_TLS
tls_authentication: GETDNS_AUTHENTICATION_REQUIRED
tls_query_padding_blocksize: 128
edns_client_subnet_private: 1
round_robin_upstreams: 1
idle_timeout: 10000
listen_addresses:
  - 127.0.0.1@53
  - 0::1@53
upstream_recursive_servers:
  - address_data: 1.1.1.1
    tls_auth_name: "cloudflare-dns.com"
  - address_data: 1.0.0.1
    tls_auth_name: "cloudflare-dns.com"
  1. Iniciar Serviço
sudo systemctl enable stubby
sudo systemctl start stubby
sudo systemctl status stubby

Verificar Configuração

Método 1: Usando dig

# Testar resolução DNS
dig @127.0.0.1 example.com

# Verificar DNSSEC
dig @127.0.0.1 example.com +dnssec

# Verificar servidor DoH
dig @127.0.0.1 whoami.cloudflare CH TXT

Método 2: Usando resolvectl

# Visualizar configurações DNS atuais
resolvectl status

# Testar resolução DNS
resolvectl query example.com

# Verificar DNSSEC
resolvectl query --dnssec example.com

Método 3: Teste Online

  1. Visite site de teste de vazamento DNS
  2. Execute teste abrangente
  3. Verifique roteamento de solicitações DNS

Solução de Problemas

Problemas Comuns

  1. Falha na Resolução

    • Verifique conexão de rede
    • Confirme arquivos de configuração
    • Verifique status do serviço
    • Revise logs do sistema
  2. Problemas de Desempenho

    • Escolha servidor mais próximo
    • Otimize configurações de cache
    • Monitore tempo de resposta
    • Verifique recursos do sistema
  3. Problemas de Compatibilidade

    • Atualize pacotes
    • Verifique dependências
    • Confirme requisitos do sistema
    • Teste configurações alternativas

Análise de Logs

  1. Logs do Sistema
# Visualizar logs do systemd-resolved
journalctl -u systemd-resolved

# Verificar logs do NetworkManager
journalctl -u NetworkManager

# Visualizar logs do dnscrypt-proxy
journalctl -u dnscrypt-proxy
  1. Diagnóstico de Rede
# Testar conectividade de rede
ping 1.1.1.1

# Verificar resolução DNS
nslookup example.com

# Verificar DNSSEC
dig example.com +dnssec

Melhores Práticas

  1. Seleção de Provedor

    • Avalie políticas de privacidade
    • Verifique disponibilidade do serviço
    • Considere localização geográfica
    • Teste velocidade de conexão
  2. Recomendações de Segurança

    • Use provedores confiáveis
    • Ative DNSSEC
    • Atualizações regulares do sistema
    • Monitore atividade de rede
  3. Otimização de Desempenho

    • Escolha servidores mais próximos
    • Otimize configurações de cache
    • Monitore métricas de desempenho
    • Manutenção regular

Implantação Empresarial

Configuração em Todo o Sistema

  1. Criar Arquivos de Configuração

    • Configure systemd-resolved
    • Configure NetworkManager
    • Implante software cliente
  2. Estratégia de Implantação

    • Use gerenciamento de configuração
    • Implemente monitoramento
    • Planeje janelas de manutenção
  3. Gerenciamento de Manutenção

    • Atualizações regulares
    • Monitoramento de desempenho
    • Rastreamento de problemas
    • Procedimentos de backup

Próximos Passos