Technitium DNS no homelab: nomes internos e sem anúncios

No meu homelab, o Technitium DNS resolve os nomes internos e bloqueia anúncios para a casa toda. Instalação, zona própria e cuidados com o DNS.

Publicado
Leitura
5 min
Painel web do Technitium DNS Server com gráficos de consultas e bloqueios
Painel do Technitium DNS. Foto: Technitium, Divulgação (original).
Neste post

No homelab, o DNS é daquelas peças que ninguém nota até parar. Aqui em casa, quem faz esse papel é o Technitium DNS Server, rodando num container LXC no Proxmox. Ele cuida de duas coisas: resolver os nomes internos dos meus serviços e bloquear anúncios para a rede inteira.

Antes dele, instalei o Pi-hole e o AdGuard pelo community-scripts. Hoje é o Technitium que fica. Neste post conto o que ele faz, como instalar e configurar o básico, e os cuidados para não derrubar a internet da casa junto com o DNS.

O que o Technitium faz #

Pela documentação oficial, o Technitium é um servidor DNS completo, de código aberto (GPLv3), que roda em Linux, Windows, macOS e Raspberry Pi, com imagem oficial no Docker Hub. Para um homelab, os recursos que mais importam são:

  • zonas próprias, para criar nomes internos (com suporte a curinga, como *.casa.lan);
  • listas de bloqueio por URL, que se atualizam sozinhas todo dia;
  • encaminhamento criptografado para resolvedores públicos, com DNS-over-TLS, DNS-over-HTTPS ou DNS-over-QUIC;
  • console web na porta 5380, com registro de consultas e autenticação em dois fatores;
  • servidor DHCP embutido, se você quiser tirar essa função do roteador.

Na prática, ele junta num lugar só o DNS da rede de casa e o bloqueio de anúncios, sem precisar de uma peça para cada coisa.

Instalação #

Há dois caminhos simples no Proxmox.

Pelo community-scripts, que cria um container Debian unprivileged com o Technitium instalado. O script define 1 núcleo, 512 MB de RAM e 2 GB de disco por padrão:

bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/technitiumdns.sh)"

Pelo instalador oficial, num container Debian que você mesmo criou:

curl -sSL https://download.technitium.com/dns/install.sh | sudo bash

O mesmo comando também serve para atualizar. Como sempre, leia o script antes de rodar como root.

Depois de instalado, o console fica em http://IP-DO-CONTAINER:5380/.

Nomes internos com uma zona própria #

Nome interno é o que tira a necessidade de decorar IPs. No Technitium, isso é uma zona primária:

  1. No console, vá em Zones e adicione uma zona do tipo Primary Zone, com um nome que só existe na sua rede.
  2. Dentro dela, crie registros A para cada serviço, apontando para o IP do container.

Para o nome da zona, evite inventar um domínio que pode existir na internet. Use um subdomínio de um domínio que você já tem (por exemplo, lan.seudominio.com) ou o sufixo home.arpa, que foi reservado para redes domésticas pelo RFC 8375.

Com a zona criada, dá para testar de qualquer máquina da rede:

dig @192.168.1.53 vault.home.arpa +short

Troque o IP pelo do seu container do Technitium e o nome pelo registro que você criou. Se voltar o IP do serviço, a zona está funcionando.

Bloqueio de anúncios para a casa inteira #

O bloqueio funciona por listas de domínios. Em Settings > Blocking, você liga o bloqueio e adiciona as URLs das listas. O console tem uma opção de adicionar rápido as listas mais conhecidas, e ele baixa tudo de novo uma vez por dia.

Algumas dicas:

  • Comece com poucas listas. Uma lista grande e bem mantida já bloqueia a maior parte. Empilhar dez listas aumenta a chance de quebrar site legítimo.
  • Olhe o registro de consultas quando algo parar de funcionar. Ali aparece qual domínio foi bloqueado, e dá para liberar só ele.
  • Bloqueio por DNS não pega tudo. Anúncio servido do mesmo domínio do conteúdo, como em alguns apps e vídeos, passa. É um filtro bom, não mágico.

Para onde ele pergunta o resto #

O Technitium responde sozinho pelas zonas que você criou. O resto ele pode resolver de duas formas: indo direto aos servidores raiz (modo recursivo) ou encaminhando para um resolvedor público. Se escolher encaminhar, vale usar uma das opções criptografadas (DNS-over-TLS ou DNS-over-HTTPS), que ele já traz configuradas para resolvedores como Cloudflare, Google e Quad9. Assim o seu provedor de internet não vê as consultas em texto puro.

Cuidados para não derrubar a internet #

Quando o DNS para, a casa inteira acha que “a internet caiu”. Alguns cuidados:

  • IP fixo para o container. DNS com endereço que muda é receita para dor de cabeça.
  • Backup. O container entra no vzdump da noite como todos os outros, então perder a configuração não é um risco. Como faço está no post sobre backup no Proxmox.
  • Energia. Se o servidor desliga, o DNS vai junto. Aqui o Proxmox está na EcoFlow River 3 Plus como UPS, junto com modem e roteador.
  • Um DNS secundário, se a casa depende muito dele. O Technitium tem recurso de cluster para gerenciar mais de uma instância pelo mesmo console. Com uma instância só, vale saber como voltar o roteador para o DNS do provedor rapidamente, se precisar.

Resumindo #

  • O Technitium junta DNS interno e bloqueio de anúncios num container leve.
  • Troque a senha admin e ligue o segundo fator logo no primeiro acesso.
  • Crie uma zona própria (de preferência home.arpa ou um subdomínio seu) e pare de decorar IPs.
  • Comece com poucas listas de bloqueio e use o registro de consultas para liberar o que quebrar.
  • Teste em um aparelho antes de mudar o DNS da casa inteira.

O resultado é o que eu queria de um DNS em casa: nomes em vez de IPs e menos anúncio em todos os aparelhos, sem instalar nada em nenhum deles.

Fontes e documentação