Raspberry Pi como servidor de DNS local com Pi-hole
1. Introdução ao Pi-hole e seus benefícios
O Pi-hole é uma aplicação de rede que atua como um "sumidouro de DNS" (DNS sinkhole), funcionando como um servidor DNS local que filtra consultas indesejadas antes que elas cheguem aos seus destinos. Quando um dispositivo da rede tenta acessar um domínio, o Pi-hole verifica se esse domínio está em sua lista de bloqueio. Se estiver, a consulta é descartada e o dispositivo recebe uma resposta nula, efetivamente impedindo o carregamento de anúncios, rastreadores e conteúdo malicioso.
As vantagens de implementar um servidor DNS local com Pi-hole são significativas. Primeiro, o bloqueio de anúncios ocorre em nível de rede, protegendo todos os dispositivos conectados — desde computadores e smartphones até smart TVs e dispositivos IoT. Segundo, a privacidade é ampliada, pois consultas DNS deixam de ser enviadas para servidores públicos que podem registrar seu histórico de navegação. Terceiro, o desempenho da rede melhora, já que o carregamento de páginas não precisa processar dezenas de requisições para servidores de anúncios.
O Raspberry Pi é a plataforma ideal para este projeto devido ao seu baixo consumo de energia (cerca de 2 a 5 watts), tamanho compacto e capacidade de processamento mais que suficiente para gerenciar consultas DNS de uma residência ou pequeno escritório. Um modelo como o Raspberry Pi 3 ou superior pode lidar com milhares de consultas por segundo sem esforço.
2. Preparando o hardware e o sistema operacional
Para este projeto, qualquer modelo de Raspberry Pi funciona, mas recomenda-se:
- Raspberry Pi Zero 2 W: Suficiente para redes residenciais com até 20 dispositivos
- Raspberry Pi 3 ou 4: Ideal para redes mais movimentadas
- Raspberry Pi 5: Para quem planeja integrações avançadas como Unbound
Comece instalando o Raspberry Pi OS Lite, a versão sem interface gráfica que reduz o consumo de recursos. Após gravar o sistema no cartão SD usando o Raspberry Pi Imager, configure o SSH e uma senha durante o processo de instalação.
Conecte-se via SSH e execute as configurações iniciais:
sudo apt update && sudo apt upgrade -y
sudo raspi-config
No raspi-config, navegue até "Interface Options" e habilite o SSH se ainda não estiver ativo. Em seguida, configure um IP estático editando o arquivo de configuração do DHCP:
sudo nano /etc/dhcpcd.conf
Adicione as seguintes linhas no final (ajuste para sua rede):
interface eth0
static ip_address=192.168.1.100/24
static routers=192.168.1.1
static domain_name_servers=8.8.8.8 1.1.1.1
Reinicie o serviço para aplicar as mudanças:
sudo systemctl restart dhcpcd
3. Instalação do Pi-hole
O método mais direto é usar o script automático oficial. Execute:
curl -sSL https://install.pi-hole.net | bash
Durante a instalação, você será guiado por algumas escolhas importantes:
- DNS upstream: Selecione provedores como Cloudflare (1.1.1.1) ou Google (8.8.8.8). Para maior privacidade, escolha "Quad9" ou posteriormente configure o Unbound.
- Interface de rede: Selecione a interface que receberá as consultas (geralmente
eth0para cabo ouwlan0para Wi-Fi). - Bloqueio de IPv6: Recomenda-se manter ativado se sua rede suporta IPv6.
Ao final, o instalador exibirá um endereço IP e uma senha para acesso à interface web. Anote essas informações.
Alternativamente, para quem prefere contêineres, o Docker pode ser usado:
docker run -d \
--name pihole \
-p 53:53/tcp -p 53:53/udp \
-p 80:80 \
-e TZ="America/Sao_Paulo" \
-v "$(pwd)/etc-pihole:/etc/pihole" \
-v "$(pwd)/etc-dnsmasq.d:/etc/dnsmasq.d" \
pihole/pihole:latest
4. Configuração básica do Pi-hole
Acesse a interface web digitando http://192.168.1.100/admin no navegador (substitua pelo IP do seu Pi). Faça login com a senha gerada na instalação.
No painel, vá até "Group Management > Adlists" para gerenciar listas de bloqueio. O Pi-hole já vem com listas padrão, mas você pode adicionar outras reconhecidas:
https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
https://someonewhocares.org/hosts/zero/hosts
https://raw.githubusercontent.com/AdguardTeam/AdguardFilters/master/SpywareFilter/sections/tracking_servers.txt
Para evitar falsos positivos (sites legítimos bloqueados por engano), adicione domínios à lista branca em "Group Management > Whitelist". Exemplos comuns:
clients1.google.comssl.google-analytics.comwww.googletagmanager.com
Após modificar listas, atualize a gravidade executando:
pihole updateGravity
5. Configurando os dispositivos da rede para usar o Pi-hole
A maneira mais eficiente é configurar o servidor DNS no roteador. Acesse o painel do roteador (geralmente em 192.168.1.1), localize as configurações de DHCP e defina o DNS primário como o IP do Raspberry Pi. Todos os dispositivos que receberem IP via DHCP usarão automaticamente o Pi-hole.
Para configuração manual em dispositivos individuais:
Windows:
Configurações > Rede e Internet > Wi-Fi/Ethernet > Propriedades > Editar DNS
DNS preferencial: 192.168.1.100
Linux:
sudo nano /etc/resolv.conf
nameserver 192.168.1.100
Android:
Configurações > Wi-Fi > Rede atual > Modificar rede > Configurações IP > Estático
DNS 1: 192.168.1.100
Teste a resolução de DNS com comandos:
nslookup google.com 192.168.1.100
dig @192.168.1.100 doubleclick.net
O segundo comando deve retornar 0.0.0.0 ou 127.0.0.1, indicando que o domínio de anúncio foi bloqueado.
6. Monitoramento e análise de tráfego DNS
O dashboard do Pi-hole oferece métricas em tempo real:
- Consultas totais: Número de requisições DNS processadas
- Consultas bloqueadas: Percentual de tráfego indesejado filtrado
- Domínios mais requisitados: Identifica quais sites seus dispositivos mais acessam
- Top clientes: Mostra quais dispositivos geram mais consultas
Para visualizar logs detalhados de consultas, use o terminal:
pihole -q dominio.com
pihole -l
Configure alertas por e-mail editando o arquivo /etc/pihole/pihole-FTL.conf:
EMAIL_SERVER=smtp.gmail.com:587
EMAIL_USER=seuemail@gmail.com
EMAIL_PASS=suasenha
Ou utilize a API do Pi-hole para integrações:
http://192.168.1.100/admin/api.php?summary
http://192.168.1.100/admin/api.php?enable
http://192.168.1.100/admin/api.php?disable
7. Otimização e manutenção avançada
Configure atualizações automáticas do Pi-hole e das listas de bloqueio:
sudo crontab -e
# Adicione a linha:
0 3 * * * /usr/local/bin/pihole updateGravity && /usr/local/bin/pihole -up
Para maior privacidade, integre o Pi-hole com o Unbound, um resolvedor DNS recursivo. Instale o Unbound:
sudo apt install unbound
sudo nano /etc/unbound/unbound.conf.d/pi-hole.conf
Configure o Unbound e altere o DNS upstream do Pi-hole para 127.0.0.1#5335. Isso elimina a dependência de servidores DNS externos, tornando suas consultas completamente privadas.
O Pi-hole também pode atuar como servidor DHCP. Ative essa opção em "Settings > DHCP" e desabilite o DHCP do roteador para evitar conflitos.
8. Solução de problemas e boas práticas
Se o DNS parar de funcionar, verifique o serviço:
sudo systemctl status pihole-FTL
sudo pihole status
pihole -d
O comando pihole -d gera um relatório de diagnóstico que ajuda a identificar problemas de conectividade ou configuração.
Dispositivos como Chromecast e alguns smart TVs podem ignorar o DNS configurado e usar seus próprios servidores. Para contornar, bloqueie portas DNS externas no firewall do roteador (porta 53 UDP) ou configure regras de redirecionamento.
Faça backup regular da configuração:
sudo pihole -a -t
Esse comando gera um arquivo .tar.gz com toda a configuração, listas e estatísticas. Armazene-o em local seguro.
Para redundância, considere configurar um segundo Raspberry Pi como servidor DNS secundário. No roteador, defina o DNS primário como o IP do primeiro Pi e o secundário como o IP do segundo.
Referências
- Documentação oficial do Pi-hole — Guia completo de instalação, configuração e administração do Pi-hole
- Pi-hole no Raspberry Pi - Tutorial oficial — Página dedicada à instalação do Pi-hole em Raspberry Pi
- Unbound DNS com Pi-hole — Guia oficial para configurar resolução DNS recursiva com Unbound
- Listas de bloqueio recomendadas — Curadoria de listas de bloqueio testadas e confiáveis para Pi-hole
- Comunidade Pi-hole no Reddit — Fórum ativo com discussões, dicas e soluções de problemas da comunidade