1 [![Build Status](https://travis-ci.org/miekg/dns.svg?branch=master)](https://travis-ci.org/miekg/dns)
2 [![Code Coverage](https://img.shields.io/codecov/c/github/miekg/dns/master.svg)](https://codecov.io/github/miekg/dns?branch=master)
3 [![Go Report Card](https://goreportcard.com/badge/github.com/miekg/dns)](https://goreportcard.com/report/miekg/dns)
4 [![](https://godoc.org/github.com/miekg/dns?status.svg)](https://godoc.org/github.com/miekg/dns)
6 # Alternative (more granular) approach to a DNS library
10 Complete and usable DNS library. All Resource Records are supported, including the DNSSEC types.
11 It follows a lean and mean philosophy. If there is stuff you should know as a DNS programmer there
12 isn't a convenience function for it. Server side and client side programming is supported, i.e. you
13 can build servers and resolvers with it.
15 We try to keep the "master" branch as sane as possible and at the bleeding edge of standards,
16 avoiding breaking changes wherever reasonable. We support the last two versions of Go.
22 * Small API. If it's easy to code in Go, don't make a function for it.
26 A not-so-up-to-date-list-that-may-be-actually-current:
28 * https://github.com/coredns/coredns
29 * https://cloudflare.com
30 * https://github.com/abh/geodns
31 * http://www.statdns.com/
32 * http://www.dnsinspect.com/
33 * https://github.com/chuangbo/jianbing-dictionary-dns
34 * http://www.dns-lg.com/
35 * https://github.com/fcambus/rrda
36 * https://github.com/kenshinx/godns
37 * https://github.com/skynetservices/skydns
38 * https://github.com/hashicorp/consul
39 * https://github.com/DevelopersPL/godnsagent
40 * https://github.com/duedil-ltd/discodns
41 * https://github.com/StalkR/dns-reverse-proxy
42 * https://github.com/tianon/rawdns
43 * https://mesosphere.github.io/mesos-dns/
44 * https://pulse.turbobytes.com/
45 * https://github.com/fcambus/statzone
46 * https://github.com/benschw/dns-clb-go
47 * https://github.com/corny/dnscheck for <http://public-dns.info/>
48 * https://namesmith.io
49 * https://github.com/miekg/unbound
50 * https://github.com/miekg/exdns
51 * https://dnslookup.org
52 * https://github.com/looterz/grimd
53 * https://github.com/phamhongviet/serf-dns
54 * https://github.com/mehrdadrad/mylg
55 * https://github.com/bamarni/dockness
56 * https://github.com/fffaraz/microdns
58 * https://github.com/ipdcode/hades <https://jd.com>
59 * https://github.com/StackExchange/dnscontrol/
60 * https://www.dnsperf.com/
61 * https://dnssectest.net/
62 * https://dns.apebits.com
63 * https://github.com/oif/apex
64 * https://github.com/jedisct1/dnscrypt-proxy
65 * https://github.com/jedisct1/rpdns
66 * https://github.com/xor-gate/sshfp
67 * https://github.com/rs/dnstrace
68 * https://blitiri.com.ar/p/dnss ([github mirror](https://github.com/albertito/dnss))
69 * https://github.com/semihalev/sdns
71 * https://github.com/peterzen/goresolver
73 Send pull request if you want to be listed here.
77 * UDP/TCP queries, IPv4 and IPv6
78 * RFC 1035 zone file parsing ($INCLUDE, $ORIGIN, $TTL and $GENERATE (for all record types) are supported
80 * Server side programming (mimicking the net/http package)
81 * Client side programming
82 * DNSSEC: signing, validating and key generation for DSA, RSA, ECDSA and Ed25519
83 * EDNS0, NSID, Cookies
86 * DNS over TLS (DoT): encrypted connection between client and server over TCP
87 * DNS name compression
91 Miek Gieben - 2010-2012 - <miek@miek.nl>
96 Building is done with the `go` tool. If you have setup your GOPATH correctly, the following should
99 go get github.com/miekg/dns
100 go build github.com/miekg/dns
104 A short "how to use the API" is at the beginning of doc.go (this also will show when you call `godoc
105 github.com/miekg/dns`).
107 Example programs can be found in the `github.com/miekg/exdns` repository.
113 * 103{4,5} - DNS standard
114 * 1348 - NSAP record (removed the record)
115 * 1982 - Serial Arithmetic
119 * 2136 - DNS Update (dynamic updates)
120 * 2181 - RRset definition - there is no RRset type though, just []RR
121 * 2537 - RSAMD5 DNS keys
122 * 2065 - DNSSEC (updated in later RFCs)
126 * 2915 - NAPTR record
127 * 2929 - DNS IANA Considerations
128 * 3110 - RSASHA1 DNS keys
129 * 3225 - DO bit (DNSSEC OK)
130 * 340{1,2,3} - NAPTR record
131 * 3445 - Limiting the scope of (DNS)KEY
133 * 403{3,4,5} - DNSSEC + validation functions
134 * 4255 - SSHFP record
135 * 4343 - Case insensitivity
137 * 4509 - SHA256 Hash in DS
138 * 4592 - Wildcards in the DNS
139 * 4635 - HMAC SHA TSIG
143 * 5155 - NSEC3 record
145 * 5702 - SHA2 in the DNS
147 * 5966 - TCP implementation recommendations
149 * 6725 - IANA Registry Update
151 * 6840 - Clarifications and Implementation Notes for DNS Security
153 * 6891 - EDNS0 update
154 * 6895 - DNS IANA considerations
155 * 6975 - Algorithm Understanding in DNSSEC
156 * 7043 - EUI48/EUI64 records
157 * 7314 - DNS (EDNS) EXPIRE Option
159 * 7828 - edns-tcp-keepalive EDNS0 Option
161 * 7858 - DNS over TLS: Initiation and Performance Considerations
162 * 7871 - EDNS0 Client Subnet
163 * 7873 - Domain Name System (DNS) Cookies
164 * 8080 - EdDSA for DNSSEC
165 * 8499 - DNS Terminology
167 ## Loosely Based Upon
169 * ldns - <https://nlnetlabs.nl/projects/ldns/about/>
170 * NSD - <https://nlnetlabs.nl/projects/nsd/about/>
171 * Net::DNS - <http://www.net-dns.org/>
172 * GRONG - <https://github.com/bortzmeyer/grong>