DNS Local · 13 min read · Sep 08, 2025
Como Configurar DNS Local com Dnsmasq no Debian 12

Dnsmasq é um pequeno e leve serviço de rede para seu ambiente local (LAN). Ele fornece serviços de rede como DNS, DHCP e TFTP. O Dnsmasq pode ser usado como um encaminhador DNS, 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.
O Dnsmasq é projetado para ser leve, com uma pequena pegada de memória, adequado para dispositivos de baixo recurso, como Roteadores e Firewalls. O Dnsmasq pode ser executado em Linux, BSDs, Android e macOS.
Este tutorial instalará e configurará um servidor DNS local com Dnsmasq em um servidor Debian 12. Configuraremos um servidor DNS local que pode ser usado para sua rede local, adicionando nomes de domínio locais, habilitando o cache DNS e habilitando o servidor DHCP via Dnsmasq. Você também aprenderá como configurar e adicionar uma máquina cliente para usar o servidor DNS local. Uma vez que você tenha concluído este tutorial, poderá acessar todos os seus aplicativos via o nome de domínio local, e suas solicitações DNS serão mais rápidas porque você habilitou o cache DNS.
Pré-requisitos
Antes de começar, você deve ter os seguintes requisitos para concluir este tutorial:
- Um servidor Debian 12 - Este exemplo usa um servidor Debian com o nome do host ‘ dnsmasq-server ‘ e o endereço IP 192.168.5.20.
- Um usuário não root com privilégios de administrador sudo/root.
Para a máquina cliente, você pode usar qualquer distribuição Linux, pois a configuração DNS é semelhante para cada distribuição.
Preparando o Sistema
Nesta etapa, você preparará seu servidor Debian que será usado como o servidor DNS local. Você atualizará o índice de pacotes, parará e desativará o serviço ‘ systemd-resolved ‘, e então criará uma configuração de resolvedor DNS estático via o arquivo ‘ /etc/resolv.conf ‘.
No sistema Debian, o resolvedor DNS é gerenciado pelo serviço ‘systemd-resolved’, que fornece resolução de nomes de rede via a interface D-BUS. Para configurar o software do servidor DNS, como o Dnsmasq, você deve desativar o serviço ‘ systemd-resolved ‘.
Antes de começar, execute o comando apt abaixo para atualizar e refrescar seu índice de pacotes Debian.
sudo apt updateEm seguida, execute o comando abaixo para parar e desativar o serviço ‘ systemd-resolved ‘. No sistema Debian, a configuração DNS é gerenciada pelo NetworkManager e pelo serviço systemd-resolved.
sudo systemctl disable --now systemd-resolved
sudo systemctl stop systemd-resolvedRemova o arquivo de link da configuração do resolvedor DNS ‘/etc/resolv.conf’ via o seguinte comando.
sudo unlink /etc/resolv.confDepois disso, crie um novo 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 arquivo. Isso adicionará o DNS público da Cloudflare e do Google como o resolvedor para seu servidor Debian.
nameserver 1.1.1.1
nameserver 8.8.8.8Salve o arquivo e saia do editor quando terminar. Agora, passe para os próximos passos para a instalação e configuração do Dnsmasq.

Instalando e Configurando o Dnsmasq
Nesta etapa, você instalará e configurará o servidor DNS local usando o Dnsmasq. Você configurará o Dnsmasq para rodar na porta DNS padrão 53 e no endereço IP interno ‘ 192.168.5.20 ‘. Você também definirá o nome de domínio para o serviço Dnsmasq, habilitará o cache DNS e, por fim, habilitará o servidor DHCP via Dnsmasq.
O pacote padrão ‘ dnsmasq ‘ está disponível no repositório Debian. Execute o comando apt abaixo para instalar o pacote Dnsmasq.
sudo apt install dnsmasqQuando solicitado, digite y para confirmar e pressione ENTER para prosseguir.

Após a instalação do Dnsmasq, execute o utilitário de comando systemctl abaixo para verificar o serviço ‘dnsmasq’ e garantir que o serviço esteja habilitado e em execução.
sudo systemctl is-enabled dnsmasq
sudo systemctl status dnsmasqVocê receberá uma saída semelhante a esta - O serviço dnsmasq está habilitado e será executado automaticamente na inicialização. E o status atual do serviço dnsmasq está em execução.

Com o Dnsmasq em execução em seu sistema Debian, você começará a configuração do Dnsmasq via o arquivo ‘/etc/dnsmasq.conf ‘.
Para começar, execute o comando abaixo para fazer um backup do arquivo de configuração padrão do Dnsmasq.
sudo cp /etc/dnsmasq.conf{,.orig}Agora abra o arquivo de configuração do Dnsmasq ‘ /etc/dnsmasq.conf ‘ usando o comando do editor nano abaixo.
sudo nano /etc/dnsmasq.confAdicione as seguintes linhas ao arquivo.
# dnsmasq run on UDP port 53
# with IP address localhost and 192.168.5.20
# and network interface eth1
port=53
listen-address=127.0.0.1,192.168.5.20
interface=eth1
# disable forwarding of non-routed address
# disable forwarding names without the main domain.com
# automatically append the domain part to simple names
# disable dnsmasq to read /etc/resolv.conf file
domain-needed
bogus-priv
expand-hosts
no-resolv
# upstream DNS server for non-local domain names
# using Cloudflare and google public DNS
server=1.1.1.1
server=8.8.8.8
# define the domain for dnsmasq
domain=howtoforge.local
address=/howtoforge.local/192.168.5.20
# enable DNS Cache and adjust cache-size
cache-size=1000
# enable DHCP via dnsmasq
# define lease db file
# make the dhcp server as an authoritative
dhcp-range=192.168.5.80,192.168.5.150,12h
dhcp-leasefile=/var/lib/misc/dnsmasq.leases
dhcp-authoritativeSalve o arquivo e feche o editor quando terminar.
Detalhes das opções que você usará para o 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: desabilitar o encaminhamento de nomes sem o endereço do domínio principal. Você pode acessar como ‘ mysql1 ‘ host a menos que forneça o completo com o domínio local, como ‘ mysql1.howtoforge.local ‘.
- bogus-priv: desabilitar o encaminhamento para endereços não roteados.
- expand-hosts: automaticamente anexar 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.20.
- cache-size: habilitar o 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 de configuração ‘/etc/hosts’ usando o comando do editor nano abaixo. Você pode definir o subdomínio para suas aplicações internas e será automaticamente configurado com o nome de domínio Dnsmasq ‘ howtoforge.local ‘.
sudo nano /etc/hostsAdicione as seguintes linhas ao arquivo. Neste exemplo, você definirá os subdomínios app1, db1 e files. O domínio raiz para esses subdomínios é o próprio servidor Dnsmasq ‘ howtoforge.local ‘.
Com as seguintes linhas, o ‘ app1.howtoforge.local ‘ será resolvido para o endereço IP ‘ 192.168.5.10 ‘, o subdomínio ‘ db1.howtoforge.local ‘ será apontado para o endereço IP do servidor ‘ 192.168.5.25 ‘, e o subdomínio ‘files.howtoforge.local ‘ será apontado para o endereço IP ‘192.168.5.50 ‘.
192.168.5.10 app1
192.168.5.25 db1
192.168.5.50 files Salve o arquivo e saia do editor quando terminar.
Em seguida, abra o arquivo ‘ /etc/resolv.conf ‘ com o seguinte comando do editor nano e adicione o endereço IP do servidor Dnsmasq como o ‘ nameserver ‘.
sudo nano /etc/resolv.confAdicione as seguintes linhas ao topo do arquivo. Certifique-se de alterar o endereço IP pelo endereço IP do servidor Dnsmasq.
nameserver 127.0.0.1
nameserver 192.168.5.20Salve o arquivo e saia do editor quando terminar.
Agora execute o comando ‘dnsmasq’ abaixo para verificar a configuração do Dnsmasq e garantir que você tenha o formato de configuração adequado. Você deve receber uma saída como ‘ dnsmasq - syntax check OK ‘.
sudo dnsmasq --testPor fim, execute o utilitário de comando systemctl abaixo para reiniciar o serviço ‘ dnsmasq’ e aplicar as alterações.
sudo systemctl restart dnsmasq
Neste ponto, você agora terminou a configuração do servidor DNS local via Dnsmasq no sistema Debian. Você também configurou o nome de domínio local e subdomínios, habilitou o cache DNS e habilitou o servidor DHCP via Dnsmasq.
Nos próximos passos, você verificará a instalação e configuração do seu servidor Dnsmasq.
Verificando a Instalação do Dnsmasq
Nesta etapa, você verificará a instalação do Dnsmasq verificando o serviço Dnsmasq e a porta LISTEN em seu sistema. Em seguida, você verificará o nome de domínio local e os subdomínios que você configurou via o arquivo ‘/etc/hosts’.
Execute o comando abaixo para garantir que o serviço Dnsmasq esteja em execução na porta 53. Em seguida, verifique o status do serviço Dnsmasq via o utilitário de comando systemctl.
ss -tulpn | grep 53
sudo systemctl status dnsmasqVocê receberá uma saída semelhante a esta - O serviço Dnsmasq está em execução na porta padrão 53 e está habilitado e será executado automaticamente na inicialização.

Em seguida, você verificará o nome de domínio e os subdomínios que você configurou no Dnsmasq via o arquivo ‘ /etc/hosts ‘. Mas antes disso, execute o comando apt abaixo para instalar o pacote ‘ dnsutils ‘ em seu sistema. O pacote ‘dnsutils’ fornece ferramentas de linha de comando para testar a configuração do servidor DNS.
sudo apt install dnsutilsDigite y quando solicitado e pressione ENTER para prosseguir com a instalação.
Após a instalação do ‘ dnsutils ‘, execute o seguinte comando dig para verificar o nome de domínio e os subdomínios que você configurou.
Verifique o domínio principal do Dnsmasq ‘ howtoforge.local ‘, que é apontado para o endereço IP do servidor Dnsmasq ‘192.168.5.20’.
dig howtoforge.local
Verifique os subdomínios que você definiu via o arquivo ‘/etc/hosts’ via o comando dig abaixo.
dig app1.howtoforge.local +short
dig db1.howtoforge.local +short
dig files.howtoforge.local +shortO subdomínio ‘ app1.howtoforge.local ‘ é apontado para o endereço IP ‘ 192.168.5.10 ‘, o subdomínio ‘ db1.howtoforge.local ‘ é apontado para o endereço IP ‘ 192.168.5.25 ‘, e por último ‘ files.howtoforge.local ‘ é apontado para o endereço IP ‘ 192.168.5.50 ‘.
Abaixo está a saída semelhante que você receberá.

Agora, você configurou e testou a instalação do Dnsmasq como o servidor DNS local em um servidor Debian. Nos próximos passos, você configurará e protegerá o Dnsmasq usando o firewall UFW.
Configurando o Firewall UFW
Agora você configurará o firewall em seu servidor DNS local. Você protegerá a instalação do Dnsmasq limitando o acesso ao servidor DNS via o firewall UFW.
Execute o comando apt abaixo para instalar o firewall UFW em seu sistema Debian.
sudo apt install ufw -y
Após instalar o UFW, execute o comando abaixo para adicionar o serviço OpenSSH e a porta DNS 53 ao firewall UFW. Neste exemplo, você especificará a origem da rede que está autorizada a acessar o servidor Dnsmasq, que é a rede local com endereços IP 192.168.5.0/24 ‘.
Certifique-se de alterar os endereços IP da rede local com sua sub-rede interna.
sudo ufw allow OpenSSH
sudo ufw allow from 192.168.5.0/24 to any port 53 proto udpEm seguida, execute o comando abaixo para iniciar e habilitar o firewall UFW.
sudo ufw enableQuando solicitado para a configuração, digite y para confirmar e pressione ENTER para prosseguir. E o firewall UFW agora deve estar em execução e habilitado e iniciará automaticamente na inicialização.

Por fim, execute o comando abaixo para verificar o status do firewall UFW. Você deve ver que o firewall UFW está ‘ativo’ e o serviço OpenSSH e a porta DNS 53 foram adicionados ao firewall.
sudo ufw status
Com o firewall UFW configurado, você pode agora adicionar clientes para se conectar ao seu servidor DNS local.
Configurando o Cliente
Nesta etapa, você configurará a máquina cliente com uma distribuição baseada em Debian e o nome do host ‘ client ‘. Você adicionará o servidor DNS local Dnsmasq à máquina cliente.
Execute o comando abaixo para remover o link do arquivo de configuração do resolvedor DNS ‘/etc/resolv.conf’. Em seguida, crie uma nova configuração de resolvedor ‘ /etc/resolv.conf ‘ usando o comando do editor nano abaixo.
sudo unlink /etc/resolv.conf
sudo nano /etc/resolv.confDigite a seguinte linha no arquivo. Certifique-se de alterar o endereço IP pelo endereço IP do seu servidor Dnsmasq.
nameserver 192.168.5.20Salve o arquivo e saia do editor quando terminar.
Em seguida, execute o comando abaixo para instalar o pacote ‘dnsutils’ na máquina cliente.
sudo apt install dnsutils
Agora execute o comando dig abaixo para verificar o nome de domínio ‘ howtoforge.local ‘, que será apontado para o endereço IP do servidor Dnsmasq.
dig howtoforge.localAbaixo está a saída que você receberá.

Para subdomínios, execute o comando dig abaixo. Cada subdomínio será apontado para o endereço IP definido no arquivo ‘ /etc/hosts ‘ no servidor Dnsmasq.
dig app1.howtoforge.local +short
dig db1.howtoforge.local +short
dig files.howtoforge.local +shortAbaixo está a saída semelhante que você receberá na máquina cliente.

Em seguida, você também precisará garantir que pode acessar o nome de domínio público via o servidor DNS local Dnsmasq. Você pode verificar isso verificando o nome de domínio público, como ‘ github.com ‘.
dig github.comVocê receberá uma saída semelhante a esta captura de tela - Na parte inferior da saída, você deve ver que sua solicitação é respondida pelo servidor DNS local Dnsmasq que está em execução em ‘ 192.168.5.20’ com a porta padrão ‘ 53 ‘. Com isso em mente, você se conectou com sucesso ao nome de domínio público via o servidor DNS local Dnsmasq.

Por fim, você verificará o cache DNS via os comandos ‘drill’ e ‘dig’. O comando ‘ drill ‘ é parte do pacote ‘ ldnsutils ‘, então execute o comando apt abaixo para instalá-lo.
sudo apt install ldnsutils
Após instalar o ldnsutils, execute o comando drill abaixo para verificar o cache DNS que você configurou no servidor Dnsmasq.
drill duckduckgo.com | grep "Query time"
drill duckduckgo.com | grep "Query time"Você receberá uma saída como a captura de tela a seguir - na primeira vez que você fizer a solicitação, o ‘ Query time ‘ é 60ms. Mas na segunda vez que você solicitar o mesmo domínio, o tempo de consulta é reduzido para 1 ms, o que significa que a solicitação DNS está em cache no servidor DNS local Dnsmasq.

Você também pode verificar o cache DNS via o comando dig com a opção ‘ +stats ‘.
dig +noall +stats duckduckgo.com
dig +noall +stats duckduckgo.comVocê agora terminou a configuração da máquina cliente e verificou que o servidor DNS local Dnsmasq está totalmente funcionando, desde o nome de domínio local e subdomínios que você definiu via o arquivo ‘/etc/hosts’, até o cache DNS que você habilitou no Dnsmasq.
Conclusão
Neste tutorial, você criou seu próprio servidor DNS local com Dnsmasq. Você configurou seu próprio servidor DNS local para seu ambiente local com o Dnmasq em um servidor Debian 12. 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 respostas DNS recorrentes mais rápidas e habilitou o servidor DHCP via o Dnsmasq.
Por fim, você também adicionou e configurou a máquina cliente 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.