← All projects

darvaza.org/resolver

Pluggable DNS resolver library with forwarding, iterative, and parallel lookup strategies built on miekg/dns.

Pluggable DNS resolver library built on miekg/dns. Defines the Resolver, Lookuper, and Exchanger interfaces that decouple DNS consumers from the transport and resolution strategy.

Three resolver constructors cover the common cases: SystemResolver wraps net.Resolver, NewResolver delegates to any Lookuper, and NewRootResolver performs iterative resolution from the root servers.

Lookuper implementations§

LookuperDescription
SingleLookuperForwards queries to a single Client
MultiLookuperFans out to multiple lookupers, returns the first response
RootLookuperIterative resolution from root nameservers
SingleFlightDeduplicates identical concurrent queries

Well-known recursive resolvers (Google, Cloudflare, Quad9) are available as one-liner constructors.

Client middleware§

MiddlewareDescription
AutoSelects protocol by server prefix (udp://, tcp://, tls://), retries truncated UDP as TCP
SingleFlightPer-server deduplication with short-lived caching
WorkerPoolConcurrency limiter for exchange calls
NoAAAAStrips AAAA records for IPv4-only environments

Additional packages§

See also§