Acabei de Lançar um Servidor DNS em 🦀 Rust!
📖 Introdução 📖
Eu estava em busca de um projeto desafiador, e decidi construir um servidor DNS do zero, totalmente modular e otimizado para alta performance. O foco foi criar algo escalável, assíncrono e fácil de manter, para que futuros contribuidores possam melhorar e expandir com facilidade. Aqui estão os destaques do que já foi implementado, com muitas mais melhorias a caminho:
✨ Principais Características ✨
- Código Modular: Refatorei a implementação original (um único arquivo) para uma estrutura mais limpa e modular, facilitando a manutenção e futuras contribuições.
- Escalabilidade Dinâmica: O servidor ajusta automaticamente o número de threads de trabalho conforme a demanda, permitindo um desempenho ótimo em diferentes cenários.
- Processamento Assíncrono: Com o poder do
tokio, o servidor lida com consultas DNS de forma assíncrona, sem bloqueios, o que melhora a escalabilidade e a latência. - Configuração Flexível: Toda a configuração do servidor (como servidores de nomes, fila de mensagens, número de workers) é gerenciável através de um arquivo
server.toml, tornando a customização super simples. - Compatibilidade com RFC 1034 e 1035: Implementa a resolução de DNS conforme os padrões RFC 1034 e RFC 1035, com suporte para endereços IPv4 e IPv6.
- Depuração Aprimorada: Melhorias no tratamento de erros e uma saída de depuração opcional para facilitar o diagnóstico e correção de problemas.
🔮 O Que Vem Por Aí? 🔮
O projeto está em constante evolução. O próximo passo é implementar recursos como cacheamento e DNS over HTTPS (DoH), tornando o servidor ainda mais robusto e pronto para ambientes de produção.
💡 Minha Jornada Com Rust 💡
Este projeto tem sido uma oportunidade incrível para aprofundar meus conhecimentos em Rust, uma linguagem que comecei a explorar recentemente. Como alguém com experiência prévia em C/C++, estou cada vez mais convencido das vantagens do Rust para construção de sistemas confiáveis e seguros. Mas não me esqueço das outras linguagens! Cada uma tem seu valor, e estou sempre aberto a aprender mais.
Acesse o repositório no GitHub e fique à vontade para contribuir ou sugerir melhorias
Agradecimentos especiais ao Emil Hernvall pelo código base 🙏