A complete, fast, and lean DNS library for Go, supporting all Resource Records, DNSSEC, and both client and server programming.
miekg/dns is a DNS library written in Go that provides a complete implementation of the Domain Name System protocol. It enables developers to build DNS servers, resolvers, and tools with support for all standard Resource Records, DNSSEC, and modern extensions like DNS over TLS. The library solves the need for a reliable, high-performance DNS programming toolkit in the Go ecosystem.
Go developers building DNS servers, resolvers, monitoring tools, or any application requiring low-level DNS protocol handling. It's also used by projects like CoreDNS, Consul, and other infrastructure tools.
Developers choose miekg/dns for its comprehensive RFC compliance, lean API design, and performance. It stands out by supporting both client and server programming, full DNSSEC capabilities, and a philosophy that avoids bloat while keeping up with evolving DNS standards.
DNS library in Go
Supports all DNS Resource Records and a wide range of RFCs, from core standards to modern extensions like DNS over TLS and DNSSEC, as listed in the README with over 50 supported RFCs.
Includes signing, validating, and key generation for multiple algorithms (DSA, RSA, ECDSA, Ed25519), making it suitable for secure DNS operations without external dependencies.
Emphasizes lean, efficient code with a minimal API, and version 2 is noted to be 2x faster, as mentioned in the README's performance goals.
Enables building both DNS servers (mimicking net/http patterns) and client-side resolvers, with support for UDP/TCP, IPv4/IPv6, and advanced features like AXFR/IXFR.
Used by major projects like CoreDNS, Consul, and others listed in the README, indicating reliability and community trust in production environments.
Follows a 'less is more' approach that avoids convenience functions, requiring developers to handle low-level DNS details manually, which can increase development time for common tasks.
Examples are separated into a different repository (github.com/miekg/exdns), and the README provides only basic guidance, making it harder for newcomers to get started quickly.
The README states that version 2 is hosted elsewhere and this repo may be archived, leading to potential fragmentation and uncertainty about long-term support.
Lacks out-of-the-box features like caching, load balancing, or DNS over HTTPS support, requiring additional implementation effort for comprehensive resolver or server functionality.
Fast HTTP package for Go. Tuned for high performance. Zero memory allocations in hot paths. Up to 10x faster than net/http
Pure Go implementation of the WebRTC API
Reliable UDP Transmission Optimizer based on KCP: Enhancing network efficiency in poor connectivity environments.
Cloudflare Tunnel client
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.