Tutorial: configurar servidor DHCP e DNS local com dnsmasq no Debian para ambiente de desenvolvimento

Redes & Segurança · Por · Publicado em · Atualizado em · 9 min de leitura

Portas de um equipamento de rede com cabos Ethernet conectados e LEDs de link acesos
Cabos Ethernet conectados a um equipamento de rede, representando infraestrutura para DHCP/DNS local. Foto: Pixabay / Pexels

Este tutorial — configurar servidor DHCP e DNS local com dnsmasq no Debian para ambiente de desenvolvimento — guia você passo a passo. Você vai criar uma zona local, encaminhar consultas externas, definir a faixa DHCP, reservar IPs por MAC e validar tudo com testes simples. Útil para times que precisam de nomes previsíveis e IPs estáveis no lab.

Pré-requisitos e plano de rede

Vamos provisionar um host Debian como servidor DNS (forwarder + cache) e DHCP para a rede de desenvolvimento. Nunca ative dois servidores DHCP no mesmo segmento. Desative o DHCP do roteador ou isole este serviço em uma VLAN. Escolha um domínio local sem conflito. Prefira subdomínios de home.arpa (ex.: dev.home.arpa) ou o sufixo .test. Evite .local.

Pré-requisitos:

- Debian recente (11/12), acesso root ou sudo.

- IP estático para o servidor na sub-rede de desenvolvimento.

- Janela de mudança para ativar o DHCP sem afetar outros hosts.

Defina seu plano de rede e guarde os valores abaixo.

  • Debian recente com root/sudo
  • IP do servidor fixo na sub-rede
  • Janela de mudança para ativar DHCP
Item Exemplo Observações
Rede/sub-rede 192.168.50.0/24 Sub-rede do lab/dev
IP do servidor (dnsmasq) 192.168.50.2 Host que rodará DNS/DHCP
Gateway/roteador 192.168.50.1 Saída para internet
Faixa DHCP 192.168.50.100–192.168.50.150 Tamanho conforme número de clientes
Domínio local dev.home.arpa Evite .local; prefira home.arpa/.test
DNS upstream 1.1.1.1 e 8.8.8.8 Resolutores públicos ou do provedor

Passo 1 — Instalar dnsmasq e utilitários

Instale dnsmasq e ferramentas para depuração de DNS. dnsmasq fornece DNS cache/forwarder e servidor DHCP leve, ideal para labs. Após instalar, o serviço sobe com uma configuração básica. Faremos ajustes em arquivos dentro de /etc/dnsmasq.d/.

Se já existir outro serviço escutando na porta 53, pare-o antes de prosseguir (por exemplo, um resolved local).

sudo apt update
sudo apt install -y dnsmasq dnsutils

# Verifique o status do serviço
systemctl status dnsmasq --no-pager

# (Opcional) Confira se a porta 53 está livre e usada pelo dnsmasq
ss -luntp | grep -E ':53 ' || true

Passo 2 — Confirmar IP estático e rota padrão

Garanta que o servidor tenha IP estático na sub-rede do lab. O caminho simples é reservar o MAC do servidor no roteador e fixar o IP lá. Se o IP deste host mudar, clientes podem perder DNS e DHCP.

Confirme o IP atual e a rota padrão do servidor antes de configurar o dnsmasq.

ip -4 addr show | grep -E 'inet .* brd' | awk '{print $2, $NF}'
ip route | grep default

Passo 3 — Configurar DNS local e encaminhamento

Crie um arquivo de resolvers upstream para o dnsmasq e um arquivo de configuração específico da sua zona local. Usaremos dev.home.arpa como exemplo. Ajuste endereços conforme seu plano de rede. Incluímos alguns registros estáticos e um wildcard para facilitar subdomínios temporários em desenvolvimento.

Ao final, o dnsmasq vai escutar no IP do servidor, responder pela zona local, encaminhar consultas externas aos resolvers definidos e manter um cache.

# Defina DNS upstream usados pelo dnsmasq (não mexe no /etc/resolv.conf do sistema)
sudo tee /etc/dnsmasq.resolv.conf >/dev/null <<'EOF'
nameserver 1.1.1.1
nameserver 8.8.8.8
EOF

# Crie a configuração da zona local
sudo tee /etc/dnsmasq.d/dev.conf >/dev/null <<'EOF'
# Zona local
domain=dev.home.arpa
local=/dev.home.arpa/
expand-hosts

# Interface/IP de escuta (ajuste o IP do servidor)
listen-address=192.168.50.2,127.0.0.1
bind-interfaces

# Regras de resolução
domain-needed
bogus-priv
no-resolv
resolv-file=/etc/dnsmasq.resolv.conf
cache-size=10000

# Registros locais úteis (exemplos)
# Registros tipo A
host-record=registry.dev.home.arpa,192.168.50.10
address=/app.dev.home.arpa/192.168.50.20

# Wildcard para facilitar prévias por subdomínio (ex.: *.svc.dev.home.arpa)
address=/.dev.home.arpa/192.168.50.30
EOF

Passo 4 — Habilitar DHCP básico e reservas

Ative o DHCP para a faixa definida. Incluímos opções padrão de gateway, DNS e domínio de busca. Também é possível reservar IPs por MAC para hosts críticos, como banco ou runner de CI.

Atenção: ao iniciar o DHCP, todos os clientes do segmento podem receber IP deste servidor. Execute em janela de mudança, com o antigo DHCP desativado ou em uma VLAN isolada.

# Acrescente as diretivas de DHCP ao mesmo arquivo
sudo tee -a /etc/dnsmasq.d/dev.conf >/dev/null <<'EOF'
# DHCP básico
# Faixa: 192.168.50.100–150, concessão de 12h
 dhcp-range=192.168.50.100,192.168.50.150,255.255.255.0,12h
# Gateway padrão
 dhcp-option=option:router,192.168.50.1
# Servidor(es) DNS oferecido(s) aos clientes (use o próprio servidor)
 dhcp-option=option:dns-server,192.168.50.2
# Domínio de busca
 dhcp-option=option:domain-search,dev.home.arpa

# (Opcional) Declare autoridade na sub-rede (use somente se este for o único DHCP)
# dhcp-authoritative

# (Opcional) Reservas por MAC (exemplos)
 dhcp-host=AA:BB:CC:DD:EE:01,192.168.50.10,ci-runner,12h
 dhcp-host=AA:BB:CC:DD:EE:02,192.168.50.20,db-dev,12h
EOF

Passo 5 — Abrir portas e iniciar o serviço

Abra as portas do firewall para DNS (TCP/UDP 53) e DHCP (UDP 67). Em seguida, reinicie e habilite o dnsmasq no boot. Verifique os logs para confirmar que está escutando na interface correta e anunciando a faixa DHCP.

Se usa UFW, veja o guia como configurar firewall no Ubuntu com UFW para revisar regras e políticas.

  • Portas DNS: 53/TCP e 53/UDP
  • Porta DHCP: 67/UDP
  • Habilitar dnsmasq no boot e revisar logs
# Abrir portas no UFW (se em uso)
sudo ufw allow 53/udp
sudo ufw allow 53/tcp
sudo ufw allow 67/udp

# Reiniciar e habilitar o serviço
echo "Reiniciando dnsmasq..."
sudo systemctl restart dnsmasq
sudo systemctl enable dnsmasq

# Logs e checagens
journalctl -u dnsmasq -n 50 --no-pager
ss -luntp | grep -E ':53 |:67 ' || true

Passo 6 — Testes práticos de DNS e DHCP

Teste o DNS local direto no servidor e em um cliente. Depois, valide o DHCP renovando o lease de uma máquina da rede de desenvolvimento. Em clientes não Linux, use a interface gráfica para desconectar e reconectar à rede.

Durante os testes, mantenha um terminal com os logs do dnsmasq aberto. Assim você observa consultas DNS e concessões de IP em tempo real.

# Testar DNS no servidor (local)
dig +short registry.dev.home.arpa @127.0.0.1
dig +short app.dev.home.arpa @127.0.0.1

dig +time=1 +tries=1 debian.org @127.0.0.1  # Encaminhamento externo

# Em um cliente Linux da mesma sub-rede:
# 1) Configure para obter IP automaticamente (DHCP)
# 2) Renove o lease (pode desconectar/reconectar a interface)
sudo dhclient -r || true
sudo dhclient -v

# Confirme IP obtido e DNS aplicado
ip -4 a show
grep -E 'nameserver|search' /etc/resolv.conf || true

Solução de problemas comuns

Conflito de DHCP: se outro DHCP estiver ativo no segmento, clientes podem receber IPs de servidores distintos. Desative o DHCP do roteador ou isole a rede de desenvolvimento.

Porta 53 ocupada: verifique qual processo escuta na 53. Pare-o ou mude a configuração para o dnsmasq escutar somente no IP do servidor (bind-interfaces + listen-address).

Sem navegação externa: revise dhcp-option router e o resolv-file do dnsmasq. Confirme conectividade do servidor ao gateway e aos DNS upstream.

Resolução local falha: cheque domínio correto (dev.home.arpa), nomes e IPs nos registros host-record/address. Limpe caches do cliente antes de retestar.

Fortaleça o host: aplique hardening e monitore serviços. O checklist de segurança para VPS Linux ajuda a revisar pontos críticos.

  • Desative DHCP conflitante no roteador ou isole a VLAN
  • Corrija processos que usam a porta 53
  • Revise opções de gateway/DNS no DHCP
  • Limpe caches e verifique a zona local
  • Reforce hardening e monitore o host

Dicas avançadas para times de desenvolvimento

Wildcard DNS acelera prévias e ambientes efêmeros. Combine-o com um proxy reverso para rotear *.dev.home.arpa aos serviços internos. Veja o comparativo Traefik vs Nginx como reverse proxy para escolher o melhor para seu stack.

Acesso remoto seguro ao lab: crie uma VPN para a rede de desenvolvimento. Assim a equipe usa o mesmo DNS interno fora do escritório. Siga o passo a passo configurar WireGuard VPN road‑warrior no Debian.

Fortaleça a base: aplique práticas consistentes de hardening e firewall no host do dnsmasq. Isso reduz surpresas durante os sprints e incidentes difíceis.

  • Wildcard + proxy reverso para prévias
  • VPN para acesso remoto seguro ao lab
  • Hardening e firewall no host do DNS/DHCP

Perguntas frequentes

Posso usar .local como domínio do lab?

Evite .local. Esse sufixo é usado por mDNS e pode causar conflitos e lentidão. Prefira domínios reservados como home.arpa (ex.: dev.home.arpa) ou .test. Assim, a resolução local fica previsível e sem interferir com descoberta mDNS.

Como evitar conflito com o DHCP do meu roteador?

Execute o DHCP do dnsmasq apenas em uma rede isolada (VLAN/lab) ou desative o DHCP do roteador antes de ativar o dnsmasq. Rodar dois DHCPs no mesmo segmento causa concessões inconsistentes e intermitências de rede nos clientes.

Consigo fazer reservas por hostname em vez de MAC?

No DHCP, reservas confiáveis usam MAC address. No dnsmasq, use dhcp-host com o MAC do equipamento e o IP desejado. Para nomes, combine a reserva com o hostname no parâmetro dhcp-host ou crie registros DNS estáticos na zona local.

É possível entregar PXE/TFTP com dnsmasq para boot de VMs?

Sim. dnsmasq suporta opções de PXE/TFTP (por exemplo, dhcp-boot e tftp-root). Ative o servidor TFTP integrado e aponte o arquivo de boot. Faça isso apenas em redes controladas, pois clientes podem carregar imagens de boot inadvertidamente.

Como limitar o dnsmasq a uma interface específica?

Use bind-interfaces e listen-address no arquivo de configuração, apontando para o IP do servidor na sub-rede desejada. Assim, o dnsmasq não responderá em outras interfaces, reduzindo riscos e evitando conflitos em ambientes com múltiplas redes.

Posso aplicar políticas de DNS diferentes para times distintos?

Crie sub-redes ou VLANs separadas, cada uma com seu dnsmasq e zona local, ou use instâncias isoladas do serviço. Essa separação evita efeitos colaterais e permite regras específicas por equipe, como ranges DHCP e registros customizados.

Padronizar o DNS/DHCP do seu lab de desenvolvimento?

Se você quer acelerar testes com nomes previsíveis, reservas por MAC e wildcard de subdomínios, podemos discutir o cenário e próximos passos.

Falar sobre o ambiente de desenvolvimento

Veja também