HomeLab

Bloqueio de anúncios via DNS com Pi-hole e Docker (guia prático)

Neste artigo vamos mostrar como você pode bloquear rastreadores, desde simples telemetria até pixels invisíveis usados para capturar páginas visitadas, como páginas de vendas.
Esse tipo de rastreamento é o que faz você ser perseguido por anúncios de remarketing após uma busca ou acesso.
Além disso, você ganha desempenho na resolução de DNS, já que em vez de usar o DNS do seu provedor ou serviços públicos que podem estar a quilômetros de distância, você passa a usar um DNS local, a poucos metros, com latência próxima de zero.
Gostou da ideia? Vamos mostrar como ter tudo isso de forma simples e fácil.

Este artigo também está disponível em vídeo e no GitLab.
Acesse e faça o clone do repositório.

Pré-requisitos para rodar Pi-hole com Docker

Para esta instalação, vamos precisar essencialmente do Docker. No entanto, para que o serviço não dependa exclusivamente do seu PC, recomendamos instalá-lo em um computador dedicado, máquina virtual ou em SBCs, como Orange Pi, Banana Pi ou Raspberry Pi.

Esse ambiente precisa apenas atender aos requisitos mínimos que, no momento em que este artigo foi escrito, eram cerca de 4 GB de espaço em disco e 512 MB de memória RAM. Esses valores podem variar de acordo com a quantidade de consultas que será submetida ao Pi-hole, como, por exemplo, o número de dispositivos na rede.

No meu cenário, utilizo uma máquina virtual com 2 vCPUs e 2 GB de RAM para atender aproximadamente 45 dispositivos, sendo a maioria máquinas virtuais do homelab.

Para nosso artigo vou usar uma VM Com Ubuntu 22.04 além de ter 3CPU e 3gb de ram (muito superior ao minimo, mas é que essa vm é usada também para outros labs)

Instalando o Pi-hole com Docker Compose

Recentemente mostramos como instalar o Dockge e será ele que vamos utilizar durante este artigo. Além da documentação oficial, vamos iniciar baixando a imagem que será usada no processo.

Para isso, execute:

docker pull pihole/pihole:latest
Bash

Após finalizar o download, precisamos liberar a porta 53 no Ubuntu, já que ela é necessária para o funcionamento do Pi-hole. Por padrão, essa porta é utilizada pelo serviço de resolução de DNS do sistema.

Execute os comandos abaixo:

sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
Bash

Ao parar o serviço de DNS do sistema, precisamos definir um DNS fixo. No nosso caso, o objetivo final é que o próprio Pi-hole faça essa função.
No entanto, para evitar problemas durante a primeira inicialização, vamos definir servidores DNS diretamente no docker-compose.

Fazemos isso utilizando o docker-compose da documentação oficial e adicionando a seguinte configuração no serviço do Pi-hole:

    # coloca dentro do bloco pihole
    dns:
      - 1.1.1.1 #ipv4
      - 2606:4700:4700::1111 #ipv6
    environment:
      FTLCONF_dns_upstreams: '1.1.1.1;1.0.0.1;2606:4700:4700::1111;2606:4700:4700::1001'
      TZ: 'America/Sao_Paulo'
    volumes:
      - 'etc-pihole:/etc/pihole'
volumes:
  etc-pihole: {}
YAML

Com isso:

  • Garantimos que o container consiga resolver DNS durante o bootstrap
  • Já definimos servidores upstream IPv4 e IPv6
  • Ajustamos o fuso horário para o Brasil
  • Substituímos o uso de diretórios locais por um volume Docker, garantindo persistência dos dados

Essa configuração evita falhas na inicialização e deixa o ambiente pronto para os próximos passos do artigo.

Gerenciando a lista de bloqueio

Após fazer login na interface administrativa do Pi-hole, acesse o menu Group Management e, em seguida, a opção lists.

Por padrão, já existe uma lista de bloqueio configurada, mas é possível adicionar outras, como, por exemplo, a lista do OISD. Para isso, utilize a opção de adicionar nova lista, informe a URL da lista desejada e salve as alterações.

Após concluir a configuração, vá até o menu Tools e selecione a opção Update Gravity para atualizar a lista de bloqueios e aplicar as novas regras.

Como aplicar o Pi-hole em toda a rede

Essa é a etapa em que você vai configurar para que todos os dispositivos utilizem o novo servidor DNS.
Normalmente, isso é feito no servidor DHCP, indicando qual será o servidor DNS distribuído para a rede.

Essa configuração geralmente é realizada no roteador. Porém, como cada modelo e fabricante pode ter uma interface diferente, recomendamos que você busque instruções específicas para o seu modelo de roteador.

Na documentação do Pi-hole, eles apresentam exemplos de configuração para alguns roteadores. Consulte a documentação para mais detalhes.

Testando e validando o bloqueio de anúncios

Agora você já deve ser capaz de acessar sites e aplicativos e perceber espaços vazios onde antes existiam anúncios.
Se você estiver mais habituado com o terminal, também pode realizar alguns testes.

Por exemplo, execute o comando:

nslookup analytics.google.com
YAML

Nesse caso, esperamos que o servidor DNS do Pi-hole retorne um endereço IP como 0.0.0.0, indicando que o domínio foi bloqueado com sucesso.

Conclusão

Este foi apenas um artigo introdutório, mostrando como você pode gerenciar e controlar o seu homelab de forma simples e fácil.

Você já conhecia o Pi-hole? Utiliza alguma alternativa, como AdGuard ou similares? Deixe seu comentário abaixo.

Se quiser ver mais artigos como este, compartilhe sua sugestão, ela pode virar o próximo conteúdo

e não esqueça de acessar o nosso repo

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.