Skip to content

A lightweight DNS Sinkhole for Android/Termux written in pure POSIX Shell. Features UPnP automation and memory caching for high performance on minimal environments.

License

Notifications You must be signed in to change notification settings

sharesourcecode/DashHole

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 

Repository files navigation

DashHole 🛡

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.

🎯 Por que DashHole?

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 case para 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.


🛠️ Requisitos

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 nslookup e dig.

🚀 Instalação e Uso

  1. Clonar o repositório:

    git clone https://github.com/seu-usuario/DashHole.git
    cd DashHole
    chmod +x *.sh
  2. Preparar a Lista de Bloqueio: Execute o script de atualização para baixar e formatar a lista (ex: StevenBlack/OISD):

    ./update_list.sh
  3. 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.

📂 Estrutura do Projeto

  • 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).

🔍 Como Testar

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.101

Ou 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 1053

Se o domínio estiver na lista, o DashHole retornará 0.0.0.0. Caso contrário, retornará o IP do seu servidor.


📜 Licença

Este projeto está sob a licença MIT. Sinta-se à vontade para usar, modificar e distribuir.

About

A lightweight DNS Sinkhole for Android/Termux written in pure POSIX Shell. Features UPnP automation and memory caching for high performance on minimal environments.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages