DashHole é um servidor DNS Sinkhole leve e performático, escrito inteiramente em pure POSIX Shell (Dash). Ele foi projetado para rodar em ambientes minimalistas como o Termux (Android), utilizando automação UPnP para contornar restrições de rede sem necessidade de acesso Root.
Diferente de soluções pesadas, o DashHole foca na simplicidade e eficiência:
-
Zero Bashismos: Compatível com
/bin/sh(Dash), ideal para Busybox e Alpine Linux. -
Redução de Condicionais: Lógica de decisão otimizada com
casepara maior legibilidade e velocidade. -
Cache em Memória: Armazena domínios bloqueados em variáveis para evitar I/O excessivo no disco.
-
Automação de Rede: Utiliza UPnP para mapeamento dinâmico de portas no roteador.
No Termux, instale as dependências necessárias:
pkg update
pkg install binutils busybox miniupnpc dnsutils-
binutils: Necessário para o comando
strings(extração de domínios). -
busybox: Utilitários de sistema leves.
-
miniupnpc: Para o comando
upnpc(configuração do roteador). -
dnsutils: Ferramentas de teste como
nslookupedig.
-
Clonar o repositório:
git clone https://github.com/seu-usuario/DashHole.git cd DashHole chmod +x *.sh
-
Preparar a Lista de Bloqueio: Execute o script de atualização para baixar e formatar a lista (ex: StevenBlack/OISD):
./update_list.sh
-
Iniciar o Servidor:
./dns_server.sh
Importante: Certifique-se de que a opção UPnP está ativada nas configurações do seu roteador para que o redirecionamento automático da porta 53 funcione.
-
dns_server.sh: O "cérebro" do servidor. Captura requisições UDP, filtra domínios e responde com o IP local ou 0.0.0.0. -
update_list.sh: Script de manutenção que limpa e organiza a lista de bloqueio para busca ultra-rápida. -
lista_bloqueio.txt: Banco de dados de domínios (gerado após a atualização).
Após iniciar o servidor, use outro dispositivo na mesma rede:
# Teste via nslookup (Substitua pelo IP do seu celular)
nslookup google.com 192.168.0.101Ou abra outra aba no Termux e execute:
# Isso envia um pacote "vazio" só para despertar o script
echo "teste.com" | nc -u 192.168.0.101 1053Se o domínio estiver na lista, o DashHole retornará 0.0.0.0. Caso contrário, retornará o IP do seu servidor.
Este projeto está sob a licença MIT. Sinta-se à vontade para usar, modificar e distribuir.