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.confAdicione a linha ‘ dns=none ‘ dentro da seção ‘ [section] ‘.
[main]
dns=noneSalve 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.confExclua 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.8Salve 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
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 dnsmasqO Dnsmasq v2.85 está disponível no Rocky Linux 9 no momento da redação deste texto.

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-utilsA 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 dnsmasqVerifique o serviço ‘ dnsmasq ‘ via a utilidade de comando systemctl abaixo.
sudo systemctl status dnsmasqVocê receberá uma saída como esta - O serviço ‘ dnsmasq ‘ está atualmente em execução, habilitado e será executado automaticamente na inicialização.

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.confAdicione 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-authoritativeSalve 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.

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/hostsAdicione 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.confAdicione 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.50Salve 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 --testPor fim, execute o comando systemctl abaixo para reiniciar o serviço ‘dnsmasq’ e aplicar as alterações.
sudo systemctl restart 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 dnsmasqVocê 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.

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-utilsDigite y quando solicitado e pressione ENTER para prosseguir.

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
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 +shortVocê 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.

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/24Em 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
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-allSaída:

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.confAdicione 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.50Salve 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 NetworkManagerVocê 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
Em seguida, execute o comando dnf abaixo para instalar o pacote ‘bind-utils’ em seu sistema.
sudo dnf 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-resolvedAgora 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.confAdicione a seguinte linha ao arquivo e altere o endereço IP com o endereço IP do seu servidor Dnsmasq.
nameserver 192.168.5.50Salve 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 dnsutilsUma 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
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 +shortVocê 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.

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.comVocê 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.

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.comVocê 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.

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.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.