Capítulo 7.3 - DNS e Resolução de Nomes
Objetivos de Aprendizagem
Ao final deste capítulo, você será capaz de:
- Compreender o sistema DNS
- Configurar servidores DNS
- Utilizar /etc/hosts
- Configurar /etc/resolv.conf
- Testar a resolução DNS
- Utilizar ferramentas DNS (dig, nslookup, host)
O que é DNS?
DNS (Domain Name System) traduz nomes de domínio em endereços IP.
Função:
- Resolver nomes → IPs
- Resolver IPs → nomes (reverse DNS)
- Cache para desempenho
/etc/hosts
Formato
# /etc/hosts
127.0.0.1 localhost
127.0.1.1 hostname.localdomain hostname
192.168.1.100 server.local
10.0.0.50 database.internal
Formato:
IP_ADDRESS HOSTNAME [ALIASES...]
Utilização
# Adicionar entrada
echo "192.168.1.100 meu-servidor.local" | sudo tee -a /etc/hosts
# Verificar
cat /etc/hosts
Prioridade:
/etc/hostsé verificado antes do DNS- Útil para sobrescrever localmente
- Testes e desenvolvimento
/etc/resolv.conf
Configuração
# /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 1.1.1.1
search example.com localdomain
options timeout:2 attempts:3
Diretivas:
- nameserver: Servidores DNS (até 3)
- search: Domínios de busca
- options: Timeout, tentativas, etc.
Servidores DNS Populares
# Google DNS
nameserver 8.8.8.8
nameserver 8.8.4.4
# Cloudflare DNS
nameserver 1.1.1.1
nameserver 1.0.0.1
# OpenDNS
nameserver 208.67.222.222
nameserver 208.67.220.220
Nota: Em sistemas modernos, /etc/resolv.conf pode ser gerenciado pelo NetworkManager ou systemd-resolved.
systemd-resolved
Configuração
# /etc/systemd/resolved.conf
[Resolve]
DNS=8.8.8.8 1.1.1.1
FallbackDNS=8.8.4.4 1.0.0.1
Domains=example.com
Reiniciar:
sudo systemctl restart systemd-resolved
Verificar
# Status
systemd-resolve --status
# Resolver
systemd-resolve google.com
Ferramentas DNS
dig - Consulta DNS
# Resolução simples
dig google.com
# Servidor DNS específico
dig @8.8.8.8 google.com
# Tipo de registro
dig google.com A # Registro A
dig google.com MX # Registro MX
dig google.com NS # Registro NS
dig google.com TXT # Registro TXT
# Reverse DNS
dig -x 8.8.8.8
# Formato curto
dig +short google.com
nslookup
# Resolução
nslookup google.com
# Servidor específico
nslookup google.com 8.8.8.8
# Modo interativo
nslookup
> google.com
> server 8.8.8.8
> exit
host
# Resolução simples
host google.com
# Apenas IP
host -t A google.com
# Reverse DNS
host 8.8.8.8
# Servidor específico
host google.com 8.8.8.8
getent
# Resolução via sistema
getent hosts google.com
# Usa /etc/hosts e DNS
Teste de Resolução
Verificar Configuração
# Ver servidores DNS configurados
cat /etc/resolv.conf
systemd-resolve --status
# Testar resolução
ping -c 2 google.com
host google.com
dig google.com
Verificar Cache
# Limpar cache do systemd-resolved
sudo systemd-resolve --flush-caches
# Verificar cache
systemd-resolve --statistics
Configuração Permanente
Ubuntu/Debian (Netplan)
# /etc/netplan/01-netcfg.yaml
network:
version: 2
ethernets:
eth0:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
search:
- example.com
Red Hat/CentOS
# /etc/sysconfig/network-scripts/ifcfg-eth0
DNS1=8.8.8.8
DNS2=8.8.4.4
DOMAIN=example.com
Troubleshooting DNS
Problemas Comuns
# 1. Verificar resolução
host google.com
dig google.com
# 2. Verificar servidores DNS
cat /etc/resolv.conf
# 3. Testar servidor DNS diretamente
dig @8.8.8.8 google.com
# 4. Verificar conectividade
ping -c 2 8.8.8.8
# 5. Verificar /etc/hosts
cat /etc/hosts
# 6. Limpar cache
sudo systemd-resolve --flush-caches
Script de Diagnóstico
#!/bin/bash
# Diagnóstico DNS
echo "=== Configuração DNS ==="
cat /etc/resolv.conf
echo "=== Teste de resolução ==="
host google.com
dig +short google.com
echo "=== Teste de servidor DNS ==="
dig @8.8.8.8 google.com +short
echo "=== Cache ==="
systemd-resolve --statistics 2>/dev/null || echo "systemd-resolved não ativo"
Exemplos Práticos
Configuração DNS Personalizada
#!/bin/bash
# Configurar DNS
# Backup
sudo cp /etc/resolv.conf /etc/resolv.conf.bak
# Nova configuração
cat <<EOF | sudo tee /etc/resolv.conf
nameserver 8.8.8.8
nameserver 1.1.1.1
search localdomain
EOF
# Verificar
cat /etc/resolv.conf
Override Local
#!/bin/bash
# Adicionar entrada /etc/hosts
HOST="dev-server.local"
IP="192.168.1.50"
# Verificar se existe
if ! grep -q "$HOST" /etc/hosts; then
echo "$IP $HOST" | sudo tee -a /etc/hosts
echo "Adicionado: $HOST -> $IP"
else
echo "$HOST já existe"
fi
Resumo
Neste capítulo, você aprendeu:
DNS: Resolução de nomes → IPs
/etc/hosts: Resolução local, prioridade sobre DNS
/etc/resolv.conf: Configuração de servidores DNS
systemd-resolved: Serviço DNS moderno
Ferramentas: dig, nslookup, host para testes
Configuração: Netplan, arquivos ifcfg-*
Troubleshooting: Testes de resolução, cache
Próximos Passos
Capítulo 7.4: Ferramentas de Rede
Módulo 8: Serviços e daemons
Capítulo criado em: Dezembro 2024