README.md (6385B)
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) 5 6 # Alternative (more granular) approach to a DNS library 7 8 > Less is more. 9 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. 14 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. 17 18 # Goals 19 20 * KISS; 21 * Fast; 22 * Small API. If it's easy to code in Go, don't make a function for it. 23 24 # Users 25 26 A not-so-up-to-date-list-that-may-be-actually-current: 27 28 * https://github.com/coredns/coredns 29 * https://github.com/abh/geodns 30 * https://github.com/baidu/bfe 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://github.com/fcambus/statzone 45 * https://github.com/benschw/dns-clb-go 46 * https://github.com/corny/dnscheck for <http://public-dns.info/> 47 * https://github.com/miekg/unbound 48 * https://github.com/miekg/exdns 49 * https://dnslookup.org 50 * https://github.com/looterz/grimd 51 * https://github.com/phamhongviet/serf-dns 52 * https://github.com/mehrdadrad/mylg 53 * https://github.com/bamarni/dockness 54 * https://github.com/fffaraz/microdns 55 * https://github.com/ipdcode/hades <https://jd.com> 56 * https://github.com/StackExchange/dnscontrol/ 57 * https://www.dnsperf.com/ 58 * https://dnssectest.net/ 59 * https://github.com/oif/apex 60 * https://github.com/jedisct1/dnscrypt-proxy 61 * https://github.com/jedisct1/rpdns 62 * https://github.com/xor-gate/sshfp 63 * https://github.com/rs/dnstrace 64 * https://blitiri.com.ar/p/dnss ([github mirror](https://github.com/albertito/dnss)) 65 * https://render.com 66 * https://github.com/peterzen/goresolver 67 * https://github.com/folbricht/routedns 68 * https://domainr.com/ 69 * https://zonedb.org/ 70 * https://router7.org/ 71 * https://github.com/fortio/dnsping 72 * https://github.com/Luzilla/dnsbl_exporter 73 * https://github.com/bodgit/tsig 74 * https://github.com/v2fly/v2ray-core (test only) 75 * https://kuma.io/ 76 * https://www.misaka.io/services/dns 77 * https://ping.sx/dig 78 * https://fleetdeck.io/ 79 * https://github.com/markdingo/autoreverse 80 * https://github.com/slackhq/nebula 81 * https://addr.tools/ 82 * https://dnscheck.tools/ 83 * https://github.com/egbakou/domainverifier 84 85 86 Send pull request if you want to be listed here. 87 88 # Features 89 90 * UDP/TCP queries, IPv4 and IPv6 91 * RFC 1035 zone file parsing ($INCLUDE, $ORIGIN, $TTL and $GENERATE (for all record types) are supported 92 * Fast 93 * Server side programming (mimicking the net/http package) 94 * Client side programming 95 * DNSSEC: signing, validating and key generation for DSA, RSA, ECDSA and Ed25519 96 * EDNS0, NSID, Cookies 97 * AXFR/IXFR 98 * TSIG, SIG(0) 99 * DNS over TLS (DoT): encrypted connection between client and server over TCP 100 * DNS name compression 101 102 Have fun! 103 104 Miek Gieben - 2010-2012 - <miek@miek.nl> 105 DNS Authors 2012- 106 107 # Building 108 109 This library uses Go modules and uses semantic versioning. Building is done with the `go` tool, so 110 the following should work: 111 112 go get github.com/miekg/dns 113 go build github.com/miekg/dns 114 115 ## Examples 116 117 A short "how to use the API" is at the beginning of doc.go (this also will show when you call `godoc 118 github.com/miekg/dns`). 119 120 Example programs can be found in the `github.com/miekg/exdns` repository. 121 122 ## Supported RFCs 123 124 *all of them* 125 126 * 103{4,5} - DNS standard 127 * 1348 - NSAP record (removed the record) 128 * 1982 - Serial Arithmetic 129 * 1876 - LOC record 130 * 1995 - IXFR 131 * 1996 - DNS notify 132 * 2136 - DNS Update (dynamic updates) 133 * 2181 - RRset definition - there is no RRset type though, just []RR 134 * 2537 - RSAMD5 DNS keys 135 * 2065 - DNSSEC (updated in later RFCs) 136 * 2671 - EDNS record 137 * 2782 - SRV record 138 * 2845 - TSIG record 139 * 2915 - NAPTR record 140 * 2929 - DNS IANA Considerations 141 * 3110 - RSASHA1 DNS keys 142 * 3123 - APL record 143 * 3225 - DO bit (DNSSEC OK) 144 * 340{1,2,3} - NAPTR record 145 * 3445 - Limiting the scope of (DNS)KEY 146 * 3597 - Unknown RRs 147 * 4025 - A Method for Storing IPsec Keying Material in DNS 148 * 403{3,4,5} - DNSSEC + validation functions 149 * 4255 - SSHFP record 150 * 4343 - Case insensitivity 151 * 4408 - SPF record 152 * 4509 - SHA256 Hash in DS 153 * 4592 - Wildcards in the DNS 154 * 4635 - HMAC SHA TSIG 155 * 4701 - DHCID 156 * 4892 - id.server 157 * 5001 - NSID 158 * 5155 - NSEC3 record 159 * 5205 - HIP record 160 * 5702 - SHA2 in the DNS 161 * 5936 - AXFR 162 * 5966 - TCP implementation recommendations 163 * 6605 - ECDSA 164 * 6725 - IANA Registry Update 165 * 6742 - ILNP DNS 166 * 6840 - Clarifications and Implementation Notes for DNS Security 167 * 6844 - CAA record 168 * 6891 - EDNS0 update 169 * 6895 - DNS IANA considerations 170 * 6944 - DNSSEC DNSKEY Algorithm Status 171 * 6975 - Algorithm Understanding in DNSSEC 172 * 7043 - EUI48/EUI64 records 173 * 7314 - DNS (EDNS) EXPIRE Option 174 * 7477 - CSYNC RR 175 * 7828 - edns-tcp-keepalive EDNS0 Option 176 * 7553 - URI record 177 * 7858 - DNS over TLS: Initiation and Performance Considerations 178 * 7871 - EDNS0 Client Subnet 179 * 7873 - Domain Name System (DNS) Cookies 180 * 8080 - EdDSA for DNSSEC 181 * 8499 - DNS Terminology 182 * 8659 - DNS Certification Authority Authorization (CAA) Resource Record 183 * 8777 - DNS Reverse IP Automatic Multicast Tunneling (AMT) Discovery 184 * 8914 - Extended DNS Errors 185 * 8976 - Message Digest for DNS Zones (ZONEMD RR) 186 187 ## Loosely Based Upon 188 189 * ldns - <https://nlnetlabs.nl/projects/ldns/about/> 190 * NSD - <https://nlnetlabs.nl/projects/nsd/about/> 191 * Net::DNS - <http://www.net-dns.org/> 192 * GRONG - <https://github.com/bortzmeyer/grong>