DNS Local · 14 min read · Sep 08, 2025

Como Instalar um Resolvedor DNS Local com Dnsmasq no Rocky Linux

Dnsmasq é um pequeno e leve servidor DNS para o seu ambiente local. Ele pode ser usado para fornecer um Servidor DNS, Servidor DHCP e um Servidor TFTP. Quanto ao Servidor DNS, o Dnsmasq pode ser usado como um encaminhador, servidor DNS recursivo e sistema de cache DNS. Ele também carrega conteúdos DNS do arquivo /etc/hosts, o que permite que você configure nomes de domínio para nomes de host locais.

Dnsmasq é projetado para ser leve, com uma pequena pegada, adequado para dispositivos de baixo recurso, como Roteadores e Firewalls. O Dnsmasq tem baixos requisitos de sistema e consome poucos recursos. Ele pode ser executado em Linux, BSDs, Android e macOS.

Este tutorial cobrirá a instalação e configuração de um Servidor DNS local com Dnsmasq em um servidor Rocky Linux 9. Você instalará o Dnsmasq e configurará o Servidor DNS local com alguns recursos adicionais, como habilitar nomes de domínio locais, configurar subdomínios via arquivo /etc/hosts e habilitar o cache DNS para acesso mais rápido. Por fim, você habilitará o servidor DHCP via Dnsmasq.

Você também aprenderá como configurar máquinas cliente para usar o Servidor DNS local como o resolvedor DNS principal.

Pré-requisitos

Existem vários pré-requisitos que você deve ter antes de começar. Abaixo estão as listas de pré-requisitos:

  • Um servidor Rocky Linux 9 - Este exemplo usa o Rocky Linux com nome de host ‘ dnsmasq-rocky ‘ e o endereço IP ‘ 192.168.5.50 ‘.
  • Um usuário não-root com privilégios de administrador sudo/root.
  • O SELinux está em execução com o modo ‘ permissivo ‘.

Para máquinas cliente, você pode usar qualquer distribuição Linux. Você pode usar distribuições baseadas em Debian ou RHEL como máquinas cliente.

Preparar o Sistema

Em sistemas operacionais baseados em RHEL, o resolvedor DNS padrão ‘/etc/resolv.conf’ é gerado pelo serviço NetworkManager. Antes de instalar o Dnsmasq, você configurará um resolvedor DNS estático via arquivo /etc/resolv.conf e desativará o resolvedor DNS do serviço NetworkManager.

Para começar, abra o arquivo de configuração do NetworkManager /etc/NetworkManager/NetworkManager.conf usando o comando do editor nano abaixo.

sudo nano /etc/NetworkManager/NetworkManager.conf

Adicione a linha ‘ dns=none ‘ dentro da seção ‘ [section] ‘.

[main]  
dns=none

Salve o arquivo e saia do editor quando terminar.

Em seguida, abra o arquivo de configuração do resolvedor DNS ‘/etc/resolv.conf’ usando o comando do editor nano abaixo.

sudo nano /etc/resolv.conf

Exclua todas as linhas disponíveis e substitua-as pelas seguintes linhas. Com isso, você estará usando o DNS público da Cloudflare e do Google como o servidor DNS principal.

nameserver 1.1.1.1  
nameserver 8.8.8.8

Salve o arquivo e saia quando terminar.

Por fim, execute o comando systemctl abaixo para reiniciar o NetworkManager e aplicar as alterações.

sudo systemctl restart NetworkManager

prepare the system

Com essas configurações concluídas, seu resolvedor DNS não será alterado pelo serviço NetworkManager e você pode adicionar ou alterar o resolvedor DNS a qualquer momento.

Nos próximos passos, você começará a instalação e configuração do Dnsmasq no Rocky Linux.

Instalando o Dnsmasq no Rocky Linux

Nesta etapa, você instalará o pacote Dnsmasq em um servidor Rocky Linux. Em seguida, você iniciará e habilitará o serviço Dnsmasq para ser executado na inicialização do sistema.

Por padrão, o pacote ‘ dnsmasq ‘ está disponível no repositório AppStream do Rocky Linux. Execute o comando dnf abaixo para obter informações sobre o pacote ‘ dnsmasq ‘.

sudo dnf info dnsmasq

O Dnsmasq v2.85 está disponível no Rocky Linux 9 no momento da redação deste texto.

dnsmasq info

Agora execute o comando abaixo para instalar o Dnsmasq. Digite y quando solicitado para a confirmação e pressione ENTER para prosseguir.

sudo dnf install dnsmasq dnsmasq-utils

A instalação do Dnsmasq deve agora ser iniciada.

Após instalar o Dnsmasq, execute o comando systemctl abaixo para iniciar e habilitar o serviço ‘ dnsmasq ‘. Com o comando abaixo executado, o serviço ‘ dnsmasq ‘ deve agora estar em execução e habilitado, o que fará com que inicie automaticamente na inicialização.

sudo systemctl start dnsmasq  
sudo systemctl enable dnsmasq

Verifique o serviço ‘ dnsmasq ‘ via a utilidade de comando systemctl abaixo.

sudo systemctl status dnsmasq

Você receberá uma saída como esta - O serviço ‘ dnsmasq ‘ está atualmente em execução, habilitado e será executado automaticamente na inicialização.

verify dnsmasq

Com o Dnsmasq instalado e em execução, você começará a configuração do Dnsmasq para funcionar como um Servidor DNS local.

Configurando o Dnsmasq

Nesta etapa, você configurará o Dnsmasq como o Servidor DNS local com alguns recursos habilitados, como cache DNS e servidor DHCP, e configurará o nome de domínio e subdomínios para aplicativos locais. Isso permite que seu aplicativo seja acessível via os nomes de domínio/subdomínios locais, como ‘ db1.howtoforge.local ‘, ‘ app.howtoforge.local ‘ e muitos mais.

Para começar, execute o comando abaixo para copiar o arquivo de configuração padrão do Dnsmasq para ‘/etc/dnsmasq.conf.orig’, em seguida, abra o arquivo de configuração original do Dnsmasq ‘/etc/dnsmasq.conf’ usando o comando do editor nano abaixo.

sudo cp /etc/dnsmasq.conf{,.orig}  
sudo nano /etc/dnsmasq.conf

Adicione as seguintes linhas ao arquivo.

# dnsmasq executa na porta UDP 53  
# com endereço IP localhost e 192.168.5.50  
# e interface de rede eth1  
port=53  
listen-address=127.0.0.1,192.168.5.50  
interface=eth1  
  
# desativar encaminhamento de endereço não roteado  
# desativar encaminhamento de nomes sem o domínio principal .com  
# anexar automaticamente a parte do domínio a nomes simples  
# desativar dnsmasq para ler o arquivo /etc/resolv.conf  
domain-needed  
bogus-priv  
expand-hosts  
no-resolv  
  
# servidor DNS upstream para domínios não locais  
# usando Cloudflare e google public DNS  
server=1.1.1.1  
server=8.8.8.8  
  
# definir o domínio para dnsmasq  
domain=howtoforge.local  
address=/howtoforge.local/192.168.5.50  
  
# habilitar cache DNS e ajustar tamanho do cache  
cache-size=10000  
  
# habilitar dhcp via dnsmasq  
# definir arquivo de banco de dados de locação  
# tornar o servidor dhcp como autoritativo  
dhcp-range=192.168.5.100,192.168.5.150,12h  
dhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases  
dhcp-authoritative

Salve o arquivo e saia do editor quando terminar.

Abaixo estão as opções detalhadas que você usará para sua instalação do Dnsmasq:

  • port: qual porta você usará para executar o Dnsmasq.
  • listen-address: qual endereço IP você usará para executar o Dnsmasq. Você pode usar vários endereços IP.
  • interface: qual interface o Dnsmasq será vinculado e executado.
  • domain-needed: desativar o encaminhamento de nomes sem o endereço do domínio principal. Você pode acessar como ‘mysql1’ host, a menos que você forneça o completo com o domínio local, como ‘mysql1.howtoforge.local’.
  • bogus-priv: desativar o encaminhamento para endereços não roteados.
  • expand-hosts: anexar automaticamente a parte do domínio local a nomes simples.
  • no-resolv: ignorar o arquivo ‘/etc/resolv.conf’ no servidor.
  • server: definir o servidor DNS upstream que você usará para endereços ou domínios não locais. Este exemplo usa o Servidor DNS Público da Cloudflare e do Google.
  • domain: definir o nome de domínio para o servidor Dnsmasq. Neste exemplo, o servidor Dnsmasq obterá o domínio local howtoforge.local.
  • address: definir qual endereço IP para o nome de domínio no Dnsmasq. Neste exemplo, o domínio howtoforge.local será resolvido para o endereço IP 192.168.5.50.
  • cache-size: habilitar cache DNS no Dnsmasq. Certifique-se de ajustar o tamanho, o que aumenta o desempenho e a velocidade.
  • dhcp-range: habilitar o servidor DHCP via Dnsmasq. Ajuste o pool de endereços IP para sua rede e o tempo de locação.
  • dhcp-leasefile: definir o arquivo que será usado para armazenar a locação DHCP.
  • dhcp-authoritative: tornar o servidor DHCP como autoritativo.

dnsmasq config

Em seguida, abra o arquivo ‘ /etc/hosts ‘ usando o comando do editor nano abaixo. Você agora definirá alguns subdomínios para aplicativos em seu ambiente local.

sudo nano /etc/hosts

Adicione as seguintes linhas ao arquivo. Neste exemplo, você criará três subdomínios wiki, mysql e files. Cada subdomínio seguirá o domínio principal do servidor Dnsmasq ‘howtoforge.local’ e apontará para um endereço IP específico.

O subdomínio wiki.howtoforge.local será apontado para o endereço IP ‘ 192.168.5.10 ‘, o subdomínio ‘ mysql.howtoforge.local ‘ é apontado para o endereço IP ‘ 192.168.5.25 ‘, e o ‘ files.howtoforge.local ‘ será apontado para o endereço IP ‘ 192.168.5.30 ‘.

192.168.5.10 wiki  
192.168.5.25 mysql  
192.168.5.30 files 

Salve o arquivo e saia do editor quando terminar.

Agora abra o arquivo de configuração do resolvedor DNS ‘ /etc/resolv.conf ‘ usando o comando do editor nano abaixo.

sudo nano /etc/resolv.conf

Adicione as seguintes linhas ao topo do arquivo. Certifique-se de alterar o endereço IP com o endereço IP do servidor Dnsmasq.

nameserver 127.0.0.1  
nameserver 192.168.5.50

Salve o arquivo e saia do editor quando terminar.

Agora execute o comando abaixo para verificar a configuração do Dnsmasq e garantir que você tenha a configuração adequada. Você receberá uma saída como ‘ dnsmasq: syntax check OK ‘.

sudo dnsmasq --test

Por fim, execute o comando systemctl abaixo para reiniciar o serviço ‘dnsmasq’ e aplicar as alterações.

sudo systemctl restart dnsmasq

configure dnsmasq

Neste ponto, você concluiu a configuração do Dnsmasq como o Servidor DNS local no sistema Rocky Linux. Você também configurou o nome de domínio para o servidor Dnsmasq e alguns subdomínios via arquivo ‘/etc/hosts’. Por fim, você habilitou o cache DNS e o servidor DHCP via Dnsmasq.

Nos próximos passos, você verificará a instalação e configuração do Dnsmasq.

Verificando a Instalação do Dnsmasq

Com a configuração do Dnsmasq concluída, você agora verificará o próprio serviço Dnsmasq. Você verificará o Dnsmasq para garantir que está em execução na porta padrão 50 e que o serviço está em execução. Em seguida, você verificará o nome de domínio local e os subdomínios que você criou via o pacote ‘ dns-utils ‘.

Execute o comando abaixo para verificar a porta aberta em seu sistema. Em seguida, verifique o serviço ‘ dnsmasq ‘ via a utilidade de comando systemctl.

ss -tulpn | grep 53  
sudo systemctl status dnsmasq

Você receberá uma saída como esta - O Dnsmasq está em execução na porta padrão 53 e o status do serviço está atualmente em execução. Além disso, está habilitado, o que fará com que inicie automaticamente na inicialização.

verify dnsmasq

Em seguida, execute o comando dnf abaixo para instalar o pacote ‘bind-utils’ em seu servidor Rocky Linux. Este pacote fornece várias ferramentas de linha de comando para testar e solucionar problemas do Servidor DNS.

sudo dnf install bind-utils

Digite y quando solicitado e pressione ENTER para prosseguir.

install bind-utils

Agora execute o comando dig abaixo para verificar o nome de domínio do servidor Dnsmasq ‘ howtoforge.local ‘. Você deve ver que o ‘ howtoforge.local ‘ está apontado para o endereço IP do servidor ‘ 192.168.5.50 ‘.

dig howtoforge.local

verify domain name

Por fim, execute o comando abaixo para verificar os subdomínios que você definiu via arquivo ‘ /etc/hosts ‘.

dig wiki.howtoforge.local +short  
dig mysql.howtoforge.local +short  
dig files.howtoforge.local +short

Você receberá uma saída semelhante a esta - O subdomínio wiki.howtoforge.local está apontado para o endereço IP 192.168.5.10, o subdomínio mysql.howtoforge.local está apontado para o endereço IP 192.168.5.25, e por fim, o subdomínio files.howtoforge.local está apontado para o endereço IP do servidor 192.168.5.30.

verify subdomain

Com esses resultados, você concluiu a configuração do Dnsmasq como o Servidor DNS local. Nos próximos passos, você configurará a porta DNS via o Firewalld.

Configurando o Firewalld

Nesta etapa, você configurará o firewalld para abrir a porta do serviço DNS e adicionar os endereços IP das redes internas ao firewalld como a principal fonte permitida a acessar a porta do serviço DNS.

Execute o comando firewall-cmd abaixo para adicionar o serviço DNS ao firewalld. Em seguida, adicione os endereços IP da rede interna como a fonte.

sudo firewall-cmd --add-service=dns  
sudo firewall-cmd --add-source=192.168.5.0/24

Em seguida, execute o comando abaixo para salvar as regras temporárias que você criou e recarregar o firewalld para aplicar as alterações.

sudo firewall-cmd --runtime-to-permanent  
sudo firewall-cmd --reload

setuo firewalld

Verifique o firewalld via o seguinte comando. Você deve ver que o serviço DNS foi adicionado ao firewalld e o endereço IP da fonte da rede também foi adicionado ao firewalld.

sudo firewall-cmd --list-all

Saída:

verify firewalld

Configurando o Cliente (Baseado em Debian ou RHEL)

Nesta etapa, você aprenderá como configurar distribuições baseadas em Debian e RHEL para usar o Servidor DNS local que você criou via Dnsmasq.

Para Distribuições Baseadas em RHEL

Adicione um novo arquivo de configuração para o NetworkManager ‘ /etc/NetworkManager/conf.d/dns-servers.conf ‘ usando o comando do editor nano abaixo.

sudo nano /etc/NetworkManager/conf.d/dns-servers.conf

Adicione as seguintes linhas ao arquivo e certifique-se de alterar o endereço IP com o endereço IP do serviço Dnsmasq. Com esta configuração, você configurará o resolvedor DNS padrão para o cliente usando o endereço IP do servidor Dnsmasq. Isso escreverá automaticamente a configuração do resolvedor DNS ‘ /etc/resolv.conf ‘.

[global-dns-domain-*]  
servers=192.168.5.50

Salve o arquivo e saia do editor quando terminar.

Em seguida, execute o comando systemctl abaixo para reiniciar o serviço NetworkManager e aplicar as alterações.

sudo systemctl restart NetworkManager

Você pode mostrar o arquivo ‘/etc/resolv.conf’ para verificar as configurações. Você deve ver que o servidor de nomes padrão é o endereço IP do servidor Dnsmasq local 192.168.5.50.

cat /etc/resolv.conf

setup client machine

Em seguida, execute o comando dnf abaixo para instalar o pacote ‘bind-utils’ em seu sistema.

sudo dnf install bind-utils

install bind utils

Para Distribuições Baseadas em Debian

Se você estiver usando o sistema operacional baseado em Debian, pode configurar o resolvedor DNS manualmente e desativar o serviço ‘systemd-resolved’ em seu sistema - especialmente para o sistema Ubuntu.

Execute o comando abaixo para parar e desativar o serviço systemd-resolved.

sudo systemctl disable --now systemd-resolved

Agora execute o comando abaixo para remover o arquivo symlink da configuração do resolvedor DNS ‘/etc/resolv.conf’. Em seguida, crie um novo arquivo de configuração do resolvedor ‘ /etc/resolv.conf ‘ via o comando do editor nano abaixo.

unlink /etc/resolv.conf  
sudo nano /etc/resolv.conf

Adicione a seguinte linha ao arquivo e altere o endereço IP com o endereço IP do seu servidor Dnsmasq.

nameserver 192.168.5.50

Salve o arquivo e saia do editor quando terminar.

Em seguida, execute o comando apt abaixo para instalar o pacote ‘ dnsutils ‘ em seu sistema.

sudo apt install dnsutils

Uma vez que o ‘bind-utils’ ou ‘dns-utils’ esteja instalado, você pode verificar a configuração do Dnsmasq via o comando dig.

Verifique o nome de domínio do servidor Dnsmasq ‘ howtoforge.local ‘ via o comando dig abaixo. Você deve ver que o domínio ‘ howtoforge.local ‘ está apontado para o endereço IP do servidor Dnsmasq 192.168.5.50.

dig howtoforge.local

verify from client

Em seguida, verifique os subdomínios que você configurou via o arquivo ‘/etc/hosts’ usando o comando abaixo. Você deve ver que cada subdomínio está apontado para o endereço IP específico que você configurou no arquivo ‘/etc/hosts’.

dig wiki.howtoforge.local +short  
dig mysql.howtoforge.local +short  
dig files.howtoforge.local +short

Você receberá uma saída como esta - O subdomínio wiki.howtoforge.local está apontado para o endereço IP 192.168.5.10, o subdomínio mysql.howtoforge.local está apontado para o endereço IP 192.168.5.25, e por fim, o subdomínio files.howtoforge.local está apontado para o endereço IP do servidor 192.168.5.30.

verify sub domains

Com isso, o nome de domínio local e os subdomínios estão configurados com sucesso. Agora, que tal nomes de domínio públicos como Github.com, etc?

Execute o comando abaixo para verificar nomes de domínio da internet a partir de sua máquina cliente. Isso garantirá que você possa se conectar à internet, mesmo com o DNS local resolvido no servidor Dnsmasq.

dig github.com

Você receberá uma saída semelhante a esta - A consulta dig para github.com está conectada via o Servidor DNS local que está em execução no endereço IP 192.168.5.50 com a porta padrão 53.

verify dns internet

Por fim, verifique as configurações de cache DNS via o comando dig abaixo. Isso mostrará as estatísticas da consulta executada, incluindo o ‘ Tempo de consulta ‘ para o nome de domínio alvo.

dig +noall +stats duckduckgo.com  
dig +noall +stats duckduckgo.com

Você receberá uma saída semelhante a esta - A primeira consulta que você obtém é o ‘ Tempo de consulta ‘ em 63ms. Mas para a segunda e terceira consultas, o Tempo de Consulta é 2ms, o que significa que suas consultas para o mesmo nome de domínio estão em cache via o Servidor DNS local Dnsmasq.

verify dnscache

Conclusão

Neste tutorial, você criou seu próprio Servidor DNS local com Dnsmasq. Você configurou seu próprio Servidor DNS para seu ambiente local com o Dnmasq em um servidor Rocky Linux 9. Além disso, isso incluiu a configuração do Dnsmasq com nomes de domínio locais e subdomínios, habilitou o cache DNS para obter mais rapidez e também habilitou o Servidor DHCP via Dnsmasq.

Por fim, você também adicionou e configurou máquinas cliente (distribuições baseadas em Debian e RHEL) para usar o Servidor DNS local que você criou. Dentro disso, você também aprendeu como solucionar problemas do Servidor DNS com o comando dig e como configurar um resolvedor DNS em um sistema Linux.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.