Mas o cenário mudou. Com a chegada do RouterOS v7, a MikroTik trouxe o suporte nativo a Containers (Docker). Isto significa que pode rodar a imagem oficial do Pi-hole diretamente no router de borda da sua rede, economizando energia, pontos de falha e gestão de hardware.
Abaixo, detalho o procedimento direto da trincheira para colocar esta arquitetura a funcionar.
⚠️ Atenção Absoluta: Requisitos do Sistema
Antes de colocar as mãos na linha de comandos, preste atenção nestes três pilares:
RouterOS v7 Obrigatório: O suporte a containers não existe no RouterOS v6. Precisa de estar no RouterOS v7 (recomendado v7.4 ou superior) e com o pacote extra
containerinstalado.Arquitetura Suportada: A imagem do Pi-hole precisa de ser compatível com a arquitetura da sua Routerboard (ARM, ARM64 ou x86). Equipamentos baseados em MIPSBE (como as antigas RB2011) não suportam este cenário.
Não mate a sua NAND (Armazenamento Externo): Containers fazem muita leitura e escrita nos discos. Se rodar a imagem na memória interna (NAND) do seu MikroTik, vai queimar o chip rapidamente. Use uma porta USB ou slot microSD com um disco formatado em EXT4.
Passo a Passo da Instalação
Considere que já formatou uma pendrive ou cartão SD e este está montado no MikroTik como disk1. O nosso laboratório utilizará a rede 172.17.0.0/24 para a ponte do Docker, sendo o 172.17.0.2 o IP do nosso Pi-hole.
1. Habilitar o Modo de Container no MikroTik
A MikroTik, por questões de segurança, obriga que a ativação dos containers seja confirmada fisicamente ou via console seguro. Execute:
/system/device-mode/update container=yes
Após o comando, terá 5 minutos para pressionar o botão físico de Reset no seu router ou desligar/ligar a energia da máquina. Sem isto, a funcionalidade não desbloqueia.
2. Criar a Rede (Bridge e VETH)
Os containers precisam de uma interface virtual (veth) ligada a uma bridge para comunicar com o router.
# Criar a interface virtual com o IP do Pi-hole e o gateway
/interface/veth
add name=veth-pihole address=172.17.0.2/24 gateway=172.17.0.1
# Criar a bridge isolada para os containers
/interface/bridge
add name=bridge-containers
# Adicionar a interface VETH à bridge
/interface/bridge/port
add bridge=bridge-containers interface=veth-pihole
# Dar um IP para a bridge (o Gateway dos containers)
/ip/address
add address=172.17.0.1/24 interface=bridge-containers network=172.17.0.0
Não se esqueça de configurar o NAT (Masquerade) para a rede 172.17.0.0/24 poder aceder à internet e baixar a imagem, caso ainda não tenha uma regra geral na sua rede.
3. Configurar as Variáveis de Ambiente e Registry
O Pi-hole precisa saber a sua password de acesso à página web e o fuso horário. A MikroTik precisa saber de onde fazer download da imagem (Docker Hub).
# Configurar a URL do Docker Hub
/container/config
set registry-url=https://registry-1.docker.io
# Criar a lista de variáveis
/container/envs
add name=pihole_envs key=TZ value="America/Sao_Paulo"
add name=pihole_envs key=WEBPASSWORD value="sua_senha_segura_aqui"
add name=pihole_envs key=DNSMASQ_LISTENING value="all"
4. Fazer Download e Criar o Container
Agora vamos puxar a imagem e gravá-la no armazenamento externo (disk1/pihole). Este processo pode demorar alguns minutos dependendo da sua ligação e do processador do MikroTik.
/container
add remote-image="pihole/pihole:latest" interface=veth-pihole root-dir=disk1/pihole envlist=pihole_envs logging=yes
Para monitorar se a extração terminou, execute /container/print. Quando o estado passar de extracting para stopped, ele está pronto.
5. Iniciar o Pi-hole
/container/start 0
(O "0" é o número do container na lista do comando print. Verifique se corresponde ao seu).
Se tudo estiver a funcionar, poderá abrir o browser noutra máquina da sua rede e aceder à interface de administração: [http://172.17.0.2/admin](http://172.17.0.2/admin).
O Golpe Final: Forçar o Tráfego DNS
Para que o Pi-hole efetivamente bloqueie os anúncios da rede, os seus clientes têm de usar o IP 172.17.0.2 como servidor de DNS principal. Pode fazer isso alterando o servidor DNS no DHCP Server da sua LAN:
/ip/dhcp-server/network
set [find] dns-server=172.17.0.2
Ou, se for o "paranóico" da infraestrutura (e deveria ser), crie uma regra de NAT para redirecionar qualquer pedido DNS "rebelde" da sua rede (dispositivos IoT, TVs) para o Pi-hole à força:
/ip/firewall/nat
add action=dst-nat chain=dstnat dst-port=53 protocol=udp src-address=192.168.88.0/24 to-addresses=172.17.0.2
add action=dst-nat chain=dstnat dst-port=53 protocol=tcp src-address=192.168.88.0/24 to-addresses=172.17.0.2
O isolamento e a convergência nunca estiveram tão integrados num equipamento de rede corporativa. Já atualizou o seu MikroTik para a v7 e começou a explorar o motor de containers? Deixe o seu feedback!
