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 update

Em 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-resolved

Remova o arquivo de link da configuração do resolvedor DNS ‘/etc/resolv.conf’ via o seguinte comando.

sudo unlink /etc/resolv.conf

Depois 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.conf

Adicione 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.8

Salve o arquivo e saia do editor quando terminar. Agora, passe para os próximos passos para a instalação e configuração do Dnsmasq.

prepare the system

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 dnsmasq

Quando solicitado, digite y para confirmar e pressione ENTER para prosseguir.

install dnsmasq

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 dnsmasq

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

verify dnsmasq

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.conf

Adicione 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-authoritative

Salve 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.

dnsmasq config

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/hosts

Adicione 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.conf

Adicione 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.20

Salve 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 --test

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

sudo systemctl restart dnsmasq

verify dnsmasq and configure it

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 dnsmasq

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

verify dnsmasq service

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 dnsutils

Digite 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

testing with dig command

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 +short

O 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á.

verify sub domains

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

install ufw firewall

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 udp

Em seguida, execute o comando abaixo para iniciar e habilitar o firewall UFW.

sudo ufw enable

Quando 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.

setup enable ufw

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

verify ufw

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.conf

Digite 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.20

Salve 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

setup client

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.local

Abaixo está a saída que você receberá.

verify domain from client

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 +short

Abaixo está a saída semelhante que você receberá na máquina cliente.

verify sub domains

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.com

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

ensure dns is working

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

install ldns

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.

verify dns cache

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.com

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

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.