/dns-resolver

DNS Resolver rápido e privado.

Primary LanguageJavaMIT LicenseMIT

🚧 DNS Resolver 🚧

jdk redis

DNS Resolver rápido e privado.

⚠️ Em desenvolvimento ⚠️

📜 Sumário

📋 Sobre o Projeto

Este projeto tem dois objetivos principais: fornecer uma implementação prática de um DNS Resolver completamente funcional, rápido e privado, além de servir como um recurso educacional sobre o funcionamento do DNS e as ameaças relacionadas.

O projeto segue as especificações das seguintes RFCs:

  • RFC 1035, que define a implementação básica de um resolver DNS.
  • RFC 3425, que trata da descontinuação de consultas inversas pelo DNS.
  • RFC 3596, que adiciona suporte para registros DNS relacionados ao IPv6 (registro AAAA).
  • RFC 7766, que especifica o uso de DNS sobre TCP para consultas maiores.

Embora este projeto não implemente diretamente o protocolo DNS over HTTPS (DoH), como definido na RFC 8484, ele repassa consultas DNS para o servidor da Cloudflare, que utiliza DoH para melhorar a segurança e privacidade das resoluções DNS.

Essas RFCs formam a base teórica necessária para o desenvolvimento prático deste projeto.

Caution

É desencorajado o uso dessa solução em ambientes que necessitam de alta disponibilidade e robustez.

💡 Funcionalidades

⚠️OBS⚠️: este projeto se encontra em estado de desenvolvimento ativo, algumas das funcionalidades planejadas não estão funcionando corretamente ou ainda não foram implementadas.

✅️: Funcionando corretamente.
⚠️: Funcionando com alguns problemas.
❌️: Não implementado.

  • ❌️ EDNS

  • ✅️ Consultas UDP

  • ✅️ Resolução de Consultas UDP usando DoH (Cloudflare)

  • ❌️ Resolução de Consultas UDP usando TCP

  • ❌️ Consultas TCP

  • ⚠️ Consulta Recursiva

  • Tipos de Consultas

    • ✅️ A
    • ✅️ NS
    • ✅️ CNAME
    • ✅️ MX
    • ✅️ AAAA
    • ✅️ SOA
    • ✅️ PTR
    • ❌️ HTTPS
  • Blacklist para sites de:

    • ❌️ Jogos de Azar
    • ❌️ Pornôgrafia
    • ❌️ Redes sociais
    • ❌️ Rastreadores
    • ❌️ Anúncios
    • ❌️ Fake news
    • ❌️ Malwares
  • ❌️ Renovação de Cache em segundo plano

  • Configurações

    • Caches
      • ❌️ Cache por arquivo
      • ❌️ Cache usando Redis
      • ❌️ Cache em memória
      • ⚠️ Sem cache
    • Servidores
      • ✅️ UDP (IPv4)
      • ✅️ UDP (IPv6)
      • ❌️ TCP (IPv4)
      • ❌️ TCP (IPv6)
    • NameServers
      • ❌️ Lista de Nameservers personalizada
      • ❌️ Nameserver aleatório
    • Resolvers
      • ✅️ Cloudflare DoH Resolver
      • ✅️ Cloudflare DNS Resolver
      • ✅️ Google DNS Resolver
      • ⚠️ UDP DNS Resolver
      • ❌️ TCP DNS Resolver
    • BlackList
      • ❌️ Lista de Nomes proibidos

📦 Pré-requisitos

Antes de começar, verifique se você possui as seguintes ferramentas instaladas:

  • JDK 21 ou superior
  • Gerenciador de dependências Maven
  • Um editor de código recomendado: IntelliJ IDEA (ou outro de sua preferência)

🔧 Configurando o Projeto

Configure e execute o projeto:

Manualmente

Siga os passos abaixo para configurar e executar o projeto:

Usando Docker

Siga os passos abaixo para configurar um container docker e começar a usar o projeto:

👤 Autor

Feito por cybermumuca. Se você tiver alguma dúvida ou sugestão, sinta-se à vontade para entrar em contato!

⚖️ Licença

Este projeto está licenciado sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.