DNS Resolver is a Go-based recursive DNS resolver library with built-in DNSSEC validation. Designed to handle domain name resolution from root nameservers, it ensures the authenticity and integrity of DNS responses by integrating support for DNSSEC validation via the dnssec package.
This project began as a learning exercise, focusing primarily on DNSSEC but also exploring the broader complexities of DNS — an area that isn’t easy to master.
Additionally, I want to contribute to the Go DNS ecosystem. Go’s built-in net package (https://go.dev/src/net/lookup.go) provides a simple interface for domain name resolution but lacks the capability to request data authentication. Conversely, the miekg/dns package (https://github.com/miekg/dns) supports data authentication requests but, by design, only offers a lower-level API. Hopefully this might help bridge this gap by combining the simplicity of Go’s net package with the robust functionality of miekg/dns.
In addition to learning, the project aims to contribute to the Go DNS ecosystem. Go’s built-in net package (lookup.go) provides a straightforward interface for domain name resolution but lacks the ability to request data authentication. On the other hand, the miekg/dns package (miekg/dns) supports such requests but offers only a low-level API. This resolver seeks to bridge that gap, combining the simplicity of Go’s net package with the robust DNSSEC functionality of miekg/dns.