O Pi-hole é um sumidouro DNS que bloqueia domínios de publicidade e rastreamento no nível de rede antes de chegarem aos seus dispositivos. Em vez de instalar uma extensão de navegador em cada dispositivo, o Pi-hole é executado em um único servidor — um Raspberry Pi, uma VM Linux ou um contêiner Docker — e intercepta consultas DNS de domínios publicitários conhecidos, retornando uma resposta vazia. Cada telefone, tablet, smart TV, console de jogos e dispositivo IoT na sua rede se beneficia automaticamente. Este guia cobre instalação, configuração do roteador, gerenciamento de listas de bloqueio, DNS local e ajuste de desempenho do Pi-hole em um ambiente doméstico ou de pequeno escritório.

Pré-requisitos

  • Um Raspberry Pi (qualquer modelo 2+), uma máquina Linux sobressalente ou um servidor/VM Linux existente
  • Ubuntu 22.04/24.04, Debian 11/12 ou Raspberry Pi OS (64 bits recomendado)
  • Endereço IP estático atribuído ao host Pi-hole (via reserva DHCP do roteador ou configuração manual)
  • Acesso ao painel de administração do roteador para alterar as configurações DNS
  • Familiaridade básica com a linha de comando Linux
  • curl instalado (sudo apt install curl)

Instalando o Pi-hole

A maneira mais rápida de instalar o Pi-hole em um host Linux físico é o instalador oficial de uma linha:

curl -sSL https://install.pi-hole.net | bash

O assistente interativo pede que você confirme sua interface de rede, selecione um provedor DNS upstream (Cloudflare 1.1.1.1, Google 8.8.8.8 ou outros), escolha se deseja instalar a interface web de administração e defina uma senha de administrador. Aceite os padrões para a maioria das opções.

Após a instalação, anote o endereço IP do seu Pi-hole. O instalador exibe ao final:

Pi-hole installation complete!
  Admin console: http://192.168.1.50/admin

Instalando o Pi-hole com Docker

Se preferir contêineres, use a imagem oficial pihole/pihole com Docker Compose:

# docker-compose.yml
services:
  pihole:
    image: pihole/pihole:latest
    container_name: pihole
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "80:80/tcp"
    environment:
      TZ: "America/Sao_Paulo"
      WEBPASSWORD: "sua_senha_segura"
    volumes:
      - ./etc-pihole:/etc/pihole
      - ./etc-dnsmasq.d:/etc/dnsmasq.d
    restart: unless-stopped
docker compose up -d

A abordagem Docker facilita as atualizações (docker compose pull && docker compose up -d) e mantém o Pi-hole isolado do SO do host. Um ponto de atenção: a porta 53 pode conflitar se o host executar systemd-resolved. Desative primeiro:

sudo systemctl disable --now systemd-resolved
sudo rm /etc/resolv.conf
echo "nameserver 1.1.1.1" | sudo tee /etc/resolv.conf

Configurando o Roteador para Usar o Pi-hole

O Pi-hole é inútil se os dispositivos não enviam consultas DNS para ele. A forma mais limpa é configurar o servidor DHCP do roteador para anunciar o IP do Pi-hole como servidor DNS para toda a rede.

  1. Faça login no painel de administração do seu roteador (normalmente 192.168.1.1 ou 192.168.0.1).
  2. Encontre Configurações DHCP ou Configurações LAN.
  3. Defina o DNS Primário como o IP estático do seu Pi-hole (ex.: 192.168.1.50).
  4. Opcionalmente, defina o DNS Secundário como 1.1.1.1 como fallback (dispositivos ignorarão o Pi-hole se ele estiver inacessível — deixe em branco para bloqueio estrito).
  5. Salve e reinicie o serviço DHCP (os dispositivos conectados receberão o novo DNS no próximo renovação de concessão; force reconectando-se).

Verifique se o bloqueio funciona em qualquer dispositivo:

nslookup doubleclick.net 192.168.1.50
# Deve retornar 0.0.0.0 (bloqueado)

Gerenciando Listas de Bloqueio com Gravity

O banco de dados de listas de bloqueio do Pi-hole é chamado gravity. A instalação padrão inclui a lista de hosts do StevenBlack (~180.000 domínios). Expandi-la melhora significativamente a cobertura do bloqueio.

Adicionando Listas de Bloqueio pelo Painel de Administração

  1. Abra http://SEU_IP_PIHOLE/admin e faça login.
  2. Vá para Adlists (na seção Gerenciamento de Grupos).
  3. Cole as URLs das listas de bloqueio e clique em Adicionar. Listas recomendadas do firebog.net:
https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
https://raw.githubusercontent.com/PolishFiltersTeam/KADhosts/master/KADhosts.txt
https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.Spam/hosts
https://v.firebog.net/hosts/Easylist.txt
https://v.firebog.net/hosts/Easyprivacy.txt
https://v.firebog.net/hosts/AdguardDNS.txt
  1. Após adicionar as listas, atualize o gravity para baixá-las e compilá-las:
pihole -g

Uma configuração típica com 5-6 listas bloqueia entre 500.000 e 1.000.000 domínios. Evite adicionar muitas listas sobrepostas — os retornos decrescentes aparecem rapidamente acima de 1,5 milhão de entradas.

Agendando Atualizações Automáticas

Adicione uma tarefa cron semanal para manter o gravity atualizado:

sudo crontab -e
# Adicione esta linha:
0 3 * * 0 pihole -g > /var/log/pihole_gravity.log 2>&1

Pi-hole vs. Alternativas

RecursoPi-holeAdGuard HomeNextDNSExtensão de Navegador
Cobertura de rede completaSimSimSimNão (apenas navegador)
Auto-hospedadoSimSimNão (nuvem)N/A
Bloqueio IoT/TVSimSimSimNão
Complexidade de configuraçãoMédiaMédiaBaixaMuito baixa
DNS local personalizadoSimSimLimitadoNão
Suporte DNSSECSimSimSimNão
Bloqueio por regexNãoSimLimitadoDepende
CustoGratuitoGratuitoGratuito/pagoGratuito/pago

O AdGuard Home é uma alternativa valiosa com bloqueio baseado em regex e uma interface mais moderna. O NextDNS é excelente se você quiser zero manutenção de servidor. O Pi-hole vence para configurações auto-hospedadas com controle total.

Cenário Real: Homelab com Mais de 30 Dispositivos

Você gerencia uma rede doméstica com smart TVs, telefones, tablets, vários servidores Linux e dispositivos IoT como lâmpadas inteligentes e câmeras. Antes do Pi-hole, os logs DNS do seu roteador mostram tráfego constante para googleadservices.com, doubleclick.net e endpoints de telemetria do fabricante da sua smart TV.

Após implantar o Pi-hole em um Raspberry Pi 4 com IP estático 192.168.1.50:

  • O DHCP do seu roteador anuncia 192.168.1.50 como DNS.
  • Cada dispositivo começa automaticamente a usar o Pi-hole sem reconfiguração.
  • O painel mostra que 25-40% de todas as consultas DNS são bloqueadas — principalmente anúncios e telemetria.
  • Você adiciona entradas DNS locais para que nas.home resolva o IP do seu NAS e plex.home aponte para seu servidor de mídia.
  • Sua smart TV para de se comunicar com servidores de análise.

O log de consultas do Pi-hole permite auditar exatamente quais domínios cada dispositivo está consultando, o que é inestimável para detectar tráfego de rede inesperado de dispositivos IoT.

DNS Local e Registros CNAME

Um dos recursos subestimados do Pi-hole é atuar como resolvedor DNS local para hostnames do homelab. Navegue para Local DNS no painel de administração:

  • Registros DNS — mapeia hostnames para IPs (ex.: nas.home → 192.168.1.100)
  • Registros CNAME — cria aliases (ex.: arquivos.home → nas.home)

Isso permite acessar serviços por nome em vez de endereço IP, o que é especialmente útil quando os endereços IP mudam.

Armadilhas e Casos Especiais

Pi-hole cai e a internet para de funcionar. Isso acontece se você configurar o Pi-hole como o único DNS e ele falhar ou o host reiniciar. Soluções: configure uma segunda instância do Pi-hole, ou configure um DNS de fallback no roteador. Para ambientes críticos, execute duas instâncias do Pi-hole.

Anúncios HTTPS não são bloqueados. O Pi-hole só lida com DNS. Ele não pode inspecionar tráfego HTTPS nem bloquear anúncios servidos pelo mesmo domínio que o conteúdo (como anúncios do YouTube, que usam subdomínios de youtube.com). Para esses casos, você ainda precisa de uma extensão de navegador como uBlock Origin.

Clientes ignorando suas configurações DNS. Alguns dispositivos (Chromecast, Google Home) têm o DNS do Google 8.8.8.8 codificado. Você pode interceptá-los com uma regra de firewall:

# Redirecionar todo o tráfego DNS para o Pi-hole (requer iptables no roteador/firewall)
iptables -t nat -A PREROUTING -i br0 -p udp --dport 53 ! -d 192.168.1.50 -j DNAT --to 192.168.1.50:53
iptables -t nat -A PREROUTING -i br0 -p tcp --dport 53 ! -d 192.168.1.50 -j DNAT --to 192.168.1.50:53

Atualização do gravity falha após atualização do SO. Após atualizar o SO do host, execute pihole -r (reparar) para restaurar os arquivos de configuração do Pi-hole.

Contêiner Docker perde configuração ao reiniciar. Sempre monte /etc/pihole e /etc/dnsmasq.d como volumes — nunca dependa do sistema de arquivos do contêiner para dados persistentes.

Resolução de Problemas Comuns

Anúncios ainda aparecem após a configuração. Verifique: (1) O dispositivo está realmente usando o IP do Pi-hole como DNS? Execute nslookup google.com e veja a linha Server:. (2) O dispositivo tinha uma resposta DNS em cache? Limpe o cache DNS do dispositivo. (3) O anúncio é servido pelo mesmo domínio que o conteúdo?

Painel do Pi-hole retorna 404. O servidor web lighttpd pode não estar em execução. Reinicie: sudo systemctl restart lighttpd.

Atualização do gravity falha com erros de certificado. Os certificados CA do host podem estar desatualizados. Solução: sudo apt update && sudo apt install ca-certificates.

Alta latência nas consultas. O Pi-hole adiciona ~1ms de latência. Se você ver muito mais, verifique se o cache de consultas está habilitado (já habilitado por padrão) e se seu provedor DNS upstream está responsivo.

Verificando o status do Pi-hole:

pihole status
pihole -c          # estatísticas em tempo real
pihole tail        # log de consultas ao vivo
pihole -q exemplo.com  # testar se um domínio está bloqueado

Resumo

  • O Pi-hole é um sumidouro DNS que bloqueia anúncios e rastreadores para todos os dispositivos da sua rede sem instalar software em cada dispositivo individualmente
  • Instale com o instalador de uma linha em qualquer host Linux Debian/Ubuntu, ou implante via Docker Compose
  • Atribua um IP estático ao host Pi-hole e configure o DHCP do roteador para anunciá-lo como DNS
  • Amplie a cobertura adicionando listas de bloqueio selecionadas do firebog.net e executando pihole -g para atualizar o gravity
  • Use o recurso DNS local do Pi-hole para dar nomes memoráveis aos serviços do homelab
  • O Pi-hole não pode bloquear anúncios HTTPS servidos pelo mesmo domínio que o conteúdo (YouTube); combine com uBlock Origin no navegador para cobertura total
  • Para redundância, execute uma segunda instância do Pi-hole ou configure um DNS de fallback para que o acesso à internet sobreviva a uma falha do Pi-hole

Artigos Relacionados