Rodando servidor proxy-cache DNS com Unbound

Ouvir tutorial


Autor: Patrick Brandão

Motivação: ao rodar qualquer software no Linux, a resolução de DNS e feita pela libresolv, que faz a leitura do /etc/host.conf e /etc/resolv.conf para obter o IP do servidor DNS.

Assim, a resolução de nomes requer envio de pacotes para fora do host e aguarda pela resposta, que pode demorar (latência alta) ou não ser respondida por problemas na rede entre o host e o servidor DNS (remoto)

A libresolv não possui suporte a cache, ou seja, se você precisar consultar um domínio (www.google.com) dezenas de vezes em um segundo, todas as vezes ela terá que enviar a pergunta ao servidor DNS para obter a mesma resposta.

Rodando um servidor proxy-cache DNS no host linux você garante que a libresolv envie os pedidos para um software rodando no mesmo host mas que ficará por conta de consultar 1 ou mais servidores, e salvando os resultados obtidos em cache, economizando banda e tempo nas próximas requisições aos mesmos nomes.

O resultado dessa implementação é uma maior velocidade no inicio das conexões do servidor.

OBS:
Você não está criando um servidor recursivo, pare resoluções de nomes para sua rede!
Mas ao final Rudimar Remontti vai explicar como tornar ele recursivo.

Distribuição utilizada:
Debian 11 (Bullseye) 64 bits instalação mínima

Instalando Unbound

Configurando
A configuração abaixo visa consumir recursos mínimos e atender somente os softwares do próprio host.

Acima criamos um forward do domínio slack.com indo para um DNS diferente (1.1.1.1 e 1.0.0.1) do padrão 8.8.8.8 e 8.8.4.4

Reinicie o serviço para carregar as novas configurações

Instale o pacote dnsutils para ter ferramentas de testes

Testando IPv4

Testando IPv6

Configurando o Linux para usar o servidor DNS na loopback como servidor DNS

Tornando recursivo

Contribuição extra por: Rudimar Remontti
Caso deseje tornar recursivo para os demais hosts da sua rede este servidor, primeira coisa que você deve ter em mente que se este servidor conter IPs públicos o mesmo será responsivo para todo o planeta terra e alguns “aliGenigenas”. Então o mínimo que você deve ter é um firewall, protegendo a porta 53 tcp/udp para responder apenas para sua rede.

Abaixo de:

Adicione

Abaixo de:

Adicione os prefixos da sua rede

Desta forma abrindo conexão para os IPs da interface “200.200.200.200” e “2000:bebe:cafe::f07e”

Reinicie o serviço para carregar as alterações

Pode consultar se as porta estão sendo ouvidas:

Firewall
Porém mesmo que você tenha setados seus prefixos em access-control a porta 53 estará respondendo para todo o mundo. Para fechar elas use o nfttables que por padrão já vem no Debian 11 no lugar do iptables. Você pode instalar o mesmo com apt se necessário.

Edite o arquivo do nftables

Ajuste para ficar assim e em elements insira todos seus prefixos autorizados.

Habilite o mesmo para iniciar com o boot e reinicie.

Consulte se seu firewall foi carregado com o comando:

Retorno:

Pronto espero que tenha gostado! Agradeço ao meu parceiro Patrick!

Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!

Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato clique aqui.

Abraço!

Rudimar Remontti

Trabalho atualmente como Gerente de Redes em um Provedor de Internet no Rio Grande do Sul.

Você pode gostar...

4 Resultados

  1. Anderson Carlos disse:

    Como habilitar o DNSSEC?
    Já fiz de tudo e não funciona.

  2. Olá Anderson.
    como proxy-cache a performance é melhor, pois alem de fazer cache local vc se aproveita do cache já alimentado nos servidores de DNS apontados no forward. Se você optar pelos hints (servidores raiz) a latência irá aumentar um pouco pois para cada nome a ser resolvido seu DNS local terá que consultar toda a árvore de DNS mundial, com acessos internacionais com latencia acima de 120ms.
    Nesse link há explicações desenhadas:
    http://manual.slackmini.com.br/#dns-client

  3. Anderson Carlos disse:

    pode deixar pelo servidores raiz em vez do forward-zone?
    E qual e a vantagem com e sem forward-zone?

Deixe um comentário

O seu endereço de e-mail não será publicado.