Como configurar o cache DNS usando dnsmasq no Ubuntu

DNSmasq pode ser usado para armazenar em cache solicitações de DNS para distribuições Linux. no entanto, pode ser um pouco desafiador.

O cache DNS funciona para acelerar o procedimento de pesquisa de DNS que converte um nome de domínio de site em seu endereço IP associado. Quando vários usuários em sua rede visitam o mesmo endereço de site, a utilização do servidor de cache DNS local pode reduzir o tempo de carregamento da web.

Primeiro vamos ver o que é cache de DNS.

O que é cache de DNS?

O DNS é usado pela Internet para rastrear todos os sites online acessíveis publicamente e seus endereços IP relacionados. Pode ser comparado a uma lista telefônica. O uso de DNS evita que tenhamos que memorizar o IP de cada site, o que é necessário para que a infraestrutura de rede interaja com os sites da Internet.

Sempre que você solicita que o mecanismo de pesquisa exiba uma página da Web, isso é o que realmente acontece nos bastidores.

Embora seu sistema tenha acesso a um grande número de servidores DNS externos, o problema é que ter uma réplica central do DNS ainda acelera a transmissão e a resolução. É quando o cache DNS entra em ação.

Antes de enviar a solicitação para a Web, o cache DNS lida com a resolução de identidade para domínios acessados ​​recentemente e com frequência, em um esforço para agilizar muito mais o procedimento.

O servidor DNS é acessado sempre que é necessário resolver um endereço IP para um nome de domínio. Isso pode sobrecarregar o servidor DNS, principalmente se o site receber muitas solicitações simultaneamente.

Um cache DNS é utilizado para diminuir as solicitações de DNS e os tempos de resposta. Os endereços IP resolvidos junto com os detalhes do host são salvos localmente. Em vez de iniciar uma nova consulta DNS, o resultado é recuperado da memória cache DNS na próxima vez que o IP ou nome de domínio precisar ser resolvido.

Como o cache de DNS ajuda a corrigir problemas de DNS intermitentes em instâncias do Amazon EC2?

A maioria dos sistemas Linux não usa um cache DNS local. Isso implica que todas as solicitações de DNS são enviadas diretamente ao resolvedor de DNS autoritativo fornecido pela Amazon, que tem uma limitação no número de solicitações que pode processar de uma só vez. Problemas de resolução de DNS ocorrem quando há muitas solicitações.

  Como calcular a soma das células no Excel

A implantação de um cache DNS local no sistema ajudará você a reduzir a utilização da CPU e da rede, evitando erros de resolução de DNS. Um cache DNS local responde a consultas feitas a recursos DNS externos, como Amazon RDS e S3.

O protocolo DHCP é usado durante a execução por instâncias do Amazon EC2 conectadas a Amazon VPCs para solicitar um endereço de servidor DNS.

Quando você emprega a Amazon VPC para construir uma nuvem privada virtual, o Route 53 DNS Resolver utiliza efetivamente um resolvedor na VPC para responder a solicitações de DNS para instâncias do EC2 executadas em endereços da Web locais da Amazon VPC e entradas em zonas administradas de forma privada. O Resolver faz pesquisas recorrentes em servidores DNS públicos para todos os endereços da Web adicionais.

Um cache DNS serve como um registro transitório de consultas DNS anteriores que nosso sistema pode examinar rapidamente ao tentar acessar um site online. Ele mantém um log de cada sessão existente e subsequente. Esse cache DNS facilita a resolução do domínio e evita erros com instâncias Linux do Amazon EC2.

Muitos usuários normalmente usam o serviço Route 53 da Amazon para DNS ao acessar a AWS. É realmente fácil de usar e quase gratuito. Mas há vários motivos que podem influenciar a decisão do usuário de usar um servidor DNS local.

Embora o bind9 ainda seja uma ótima opção para configurar um servidor de cache DNS local, o dnsmasq é muito mais simples de instalar e configurar tanto em instâncias do EC2 quanto em uma máquina local.

O que é dnsmasq?

DNSmasq é uma ferramenta relacionada ao Linux que suporta DNS, DHCP, TFTP e cache DNS. Ele foi feito para ser compacto e leve, tornando-o ideal para redes e firewalls com menos restrições de recursos.

É incrivelmente simples de instalar e configurar. Para configurar DNS e DHCP para sub-redes, o dnsmasq é uma solução flexível e prática.

É possível configurar esses identificadores atribuídos por DHCP e instruções associadas para cada servidor ou para um controlador subjacente. As opções de DHCP dinâmico e estático são suportadas pelo dnsmasq. É portátil e tem a capacidade de gerenciar DNS e DHCP para pelo menos 1.000 clientes.

Quando uma consulta DNS é recebida, o dnsmasq responde de um cache local ou a transmite para um servidor DNS autoritativo. Além de responder às solicitações do DNS para endereços com configuração DHCP, ele verifica o conteúdo do arquivo /etc/hosts para identificar nomes de host locais que não estão listados no DNS público.

A utilização da ferramenta dnsmasq em vez do cache DNS integrado do navegador melhora muito o desempenho da navegação na Internet. É ideal para um ambiente integrado com recursos limitados porque é muito simples de configurar e precisa de muito pouco espaço em disco.

  Como ativar/desativar as ações multimídia para as teclas de função

Características do dnsmasq

  • É simples integrar servidores DNS internos usando dnsmasq, configurando-o para transmitir consultas de resolução de nomes de domínio específicos para servidores autorizados específicos.
  • A carga de trabalho do servidor é reduzida e a confiabilidade é aprimorada usando o servidor DNS local configurado.
  • A configuração de DNS para endpoints habilitados para firewall é bastante fácil e independente do DNS empregado pelo ISP.
  • Se a porta vinculada à Internet estiver inacessível durante a verificação de DNS no computador, a operação de pesquisa será suspensa instantaneamente.
  • Por meio de consultas PPP (Protocolo ponto a ponto) ou DHCP, o dnsmasq pode realmente ser configurado para coletar dados periodicamente diretamente do servidor de resolução de domínio subjacente.

Instalação

O serviço resolvido pelo sistema deve ser desativado antes de instalar e configurar o utilitário dnsmasq.

systemctl stop systemd-resolved

Você também pode ocultá-lo usando o atributo mask para que ele não seja iniciado automaticamente quando você reiniciar.

 systemctl mask systemd-resolved

A instalação do dnsmasq é a ação inicial que você precisa executar após desligar o systemd-resolved. DNSmasq vem pré-instalado em quase todas as distribuições Linux. Caso contrário, você pode instalá-lo manualmente. Inicie um terminal de comando e digite o seguinte comando para fazê-lo.

sudo apt-get install dnsmasq

Use o seguinte comando se você for um usuário do yum:

sudo yum install -y dnsmasq

Este comando instala automaticamente a ferramenta e inicia o dnsmasq em segundo plano.

Após a instalação bem-sucedida, você pode verificar o status do dnsmasq usando o comando abaixo.

systemctl status dnsmasq

Se ele mostrar seu status como “ativo (em execução)”, isso significa que a instalação foi feita e configurada para a porta 53. Se ele mostrar seu status como “inativo (morto)”, então você precisa reiniciar a máquina Ubuntu e o dnsmasq novamente. Isso corrigirá o erro.

Configuração

O Dnsmasq agora está pronto para ser configurado em sua máquina como o servidor DNS de cache local. O arquivo de configuração padrão está localizado em /etc/dnsmasq.conf. Este arquivo de configuração deve ser modificado para configurar o utilitário dnsmasq no sistema.

Use este comando para abrir e editar o arquivo de configuração.

nano /etc/dnsmasq.conf

O arquivo de configuração deve ser editado apenas com privilégios de root. Apenas limpe tudo no arquivo, incluindo comentários, e simplesmente copie e cole e salve esta configuração.

port=53
domain-needed
bogus-priv
listen-address=127.0.0.1
expand-hosts
domain=geek-demo.com
cache-size=1000

Deixe-me descrever brevemente o que cada um dos parâmetros significa.

  • Porta – Para especificar ou vincular a porta que o Dnsmasq usará para receber solicitações de DNS.
  • domain-needed – Transmite apenas os nomes de domínio para o servidor DNS upstream.
  • bogus-priv – impede o encaminhamento de domínio e porta
  • listen-address – Para definir o endereço do servidor de nomes. Normalmente, o localhost é usado como padrão para configurar um servidor DNS local.
  • domínio – Para configurar os domínios que o dnsmasq anexa a identificadores curtos.
  • cache-size – O tamanho máximo de cache DNS permitido no armazenamento.
  O sistema de correção não pôde encontrar a opção de ambiente que foi inserida

Após realizar todas as alterações necessárias, salve e feche o arquivo de configuração. E o próximo passo é editar o arquivo /etc/resolv.conf para adicionar o endereço de resolução do host local. Use o comando abaixo para abrir com o editor nano.

nano /etc/resolv.conf

Aqui, você pode encontrar todos os servidores de nomes que seu sistema usa para resolução de endereços. Nessa lista, adicione também o endereço de loopback. Adicione “nameserver 127.0.0.1” e mantenha-o na primeira linha.

Salve e saia do arquivo de configuração. Para que a configuração atualizada tenha efeito, reinicie o utilitário dnsmasq.

systemctl restart dnsmasq

Testando o servidor de cache DNS local

É fácil testar o servidor DNS local. Abra uma linha de comando e use o comando dig para verificar o cache DNS. Quando você executa o comando dig pela primeira vez, o resultado deve ser bastante comum.

┌──(root💀kali)-[/home/writer]
└─# dig etechpt.com.com                                                                                     1 ⚙

; <<>> DiG 9.18.0-2-Debian <<>> etechpt.com.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 623
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;etechpt.com.com.                 IN      A

;; ANSWER SECTION:
etechpt.com.com.          227     IN      A       172.66.43.163
etechpt.com.com.          227     IN      A       172.66.40.93

;; Query time: 31 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
;; WHEN: Sat Oct 15 07:52:49 EDT 2022
;; MSG SIZE  rcvd: 74

Aqui, observe que o tempo de consulta é de cerca de 31 ms para consultar os detalhes do servidor de nomes upstream. Execute o mesmo comando dig mais uma vez e você notará uma diminuição significativa no tempo de consulta.

┌──(root💀kali)-[/home/writer]
└─# dig etechpt.com.com                                                                                     1 ⚙

; <<>> DiG 9.18.0-2-Debian <<>> etechpt.com.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21942
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;etechpt.com.com.                 IN      A

;; ANSWER SECTION:
etechpt.com.com.          281     IN      A       172.66.40.93
etechpt.com.com.          281     IN      A       172.66.43.163

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
;; WHEN: Sat Oct 15 07:58:10 EDT 2022
;; MSG SIZE  rcvd: 74

Aqui, o tempo de consulta é 0 ms. Isso se deve ao fato de que, após realizar a pesquisa inicial, o dnsmasq armazenou os dados e todas as pesquisas realizadas posteriormente foram instantâneas devido à utilização do cache armazenado. Reiniciar o dnsmasq é necessário se você quiser excluir o cache DNS armazenado.

Empacotando

Neste artigo, vimos como configurar e configurar o dnsmasq para funcionar como um servidor DNS local. Você também pode estar interessado em aprender sobre como alterar servidores DNS para navegação mais rápida em diferentes sistemas operacionais.