rootwalk is a tiny DNS resolver I wrote to learn more about how DNS works and to practice writing Go. Read the blog post: https://mostafaahmed.hashnode.dev/series/building-a-dns-resolver-in-go-from-scratch
It's a simple recursive* resolver using only the Go standard library. It's meant to be used for educational purposes, you probably shouldn't depend on this in production :D.
rootwalk's purpose is to resolve a domain name starting from the root nameservers, it navigates the hierarchy of DNS nameservers and outputs the resolution journey.
* Recursive resolvers should support result caching by definition, this is a limitation in rootwalk.
go build
./rootwalk <domain> <root>
# or
go run . <domain> <root>
Where:
domain
is the domain name to be resolved.root
a value betweena
-m
specifying which root server should be used, defaults toa
.
- No caching
- Limited support for resource record types, only
A
,AAA
andNS
atm.