Show HN: I built a DNS resolver from scratch in Rust – no DNS libraries
I built a DNS resolver that lets me use https://frontend.numa instead of localhost:5173 — auto-generated TLS certs, WebSocket passthrough, path routing. No mkcert, no nginx, no /etc/hosts.
66 points by rdme - 47 comments
I wrote about the DNSSEC implementation here: https://numa.rs/blog/posts/dnssec-from-scratch.html It's now my daily system DNS. Single binary (~8MB), macOS/Linux/Windows.
`sudo numa install`
It binds to 0.0.0.0:53 by default, so just point your devices' DNS to the board's IP
5 minutes ago | parent | next | edit | delete
Very cool project by the way. I wonder how this would run on an OpenWRT device.
I see in your install.sh that you support Linux and Darwin/MacOS, do you think there would be any major hurdles in supporting FreeBSD?
On OpenWRT — it's musl-based Linux so the binary should run the arm one would need a crosscompile Free BSD can be done (pr's welcome?)
Furthermore it is a little off-putting to see a vibecoded UI because I have very little confidence that the rest of the backend code is not vibecoded. I know I am possibly being unfair, but this is how it looks to me. If the developer tells me they didn't use AI at all, I would believe it.
I guess to be fair, beforehand no body would be attempting this kind of thing and releasing it unless they knew what they were doing
Still, if you're looking for something that "just works" and is widely used, have a look at caddy.
There's also a per-domain allowlist and you can pause/unpause blocking from the dashboard or API.
Here's how the resolution pipeline looks like: https://numa.rs/blog/posts/dns-from-scratch.html#the-resolut...