This is a clone/fork of https://github.com/miekg/dns
Go to file
Miek Gieben 970b2239a1 Add NSEC3 helper function back in
I'm going to use this in 'q', but it may came in handy for other
developers too. This is the first ramp up to a full blown Go only
recursive resolver.
2013-12-24 16:52:39 +00:00
.gitignore gitignore update 2013-10-15 13:22:35 +00:00
CONTRIBUTORS.md add myself as a contributor to this version 2013-12-04 13:12:41 -05:00
LICENSE Update the copy right for the original GO files 2013-05-12 16:07:06 +02:00
README.md abbreviate markdown to md 2013-10-19 12:03:44 +01:00
TODO.md Implement EID and NIMLOC records 2013-10-19 21:31:12 +01:00
client.go Remove this tidbit of documentation 2013-11-21 13:27:20 +00:00
client_test.go Fix merge conflict from net branch 2013-10-12 17:59:46 +01:00
clientconfig.go Resolv merge conflicts 2013-05-12 19:08:37 +02:00
defaults.go gofmt 2013-10-15 14:21:47 +00:00
dns.go Go over the documentation again 2013-10-15 13:42:24 +00:00
dns_test.go Fix axfr tsig 2013-10-12 14:00:10 +01:00
dnssec.go Allocate just enough space 2013-12-06 11:30:33 +00:00
dnssec_test.go Fix the unknown record sign test 2013-12-06 09:43:26 +00:00
dyn_test.go Set license on test files 2013-05-12 16:09:52 +02:00
edns.go Return bytes when packing EDNS0_LLQ struct 2013-12-14 10:52:44 +11:00
example_test.go Nobody uses these author/version handlers, kill them 2013-10-17 20:23:30 +01:00
keygen.go Update all copyright notices 2013-05-12 16:15:52 +02:00
kscan.go Small go vet issues 2013-10-15 14:21:32 +00:00
labels.go Remove long deprecated functions too 2013-09-30 20:24:18 +01:00
labels_test.go Fixup PrevLabel and add a test 2013-09-12 09:58:42 +01:00
msg.go Fix the unknown record sign test 2013-12-06 09:43:26 +00:00
nsecx.go Add NSEC3 helper function back in 2013-12-24 16:52:39 +00:00
nsecx_test.go Add NSEC3 helper function back in 2013-12-24 16:52:39 +00:00
parse_test.go merged 2013-12-05 19:46:03 +00:00
rawmsg.go gofmt 2013-06-14 19:42:55 +01:00
scanner.go Update all copyright notices 2013-05-12 16:15:52 +02:00
server.go typo in doc 2013-10-26 21:36:43 +01:00
server_test.go tweaks comment 2013-10-19 11:52:15 +01:00
singleinflight.go Implement outstanding query detection. 2013-08-24 02:28:58 +00:00
tlsa.go Update all copyright notices 2013-05-12 16:15:52 +02:00
tsig.go Slight doc updates 2013-10-12 19:19:24 +01:00
types.go Allocate just enough space 2013-12-06 11:30:33 +00:00
update.go Update all copyright notices 2013-05-12 16:15:52 +02:00
xfr.go Also use Dial in xfr 2013-11-01 09:44:24 +00:00
zgenerate.go Use *Token instead of Token when parsing 2013-11-09 19:34:46 +00:00
zscan.go remove bogus comments 2013-12-05 09:56:15 +00:00
zscan_rr.go Test for TYPE65534 records, copy now copies slices correctly 2013-12-06 07:37:48 +00:00

README.md

Alternative (more granular) approach to a DNS library.

Less is more.

Complete and usable DNS library. All widely used Resource Records are supported, including the DNSSEC types. It follows a lean and mean philosophy. If there is stuff you should know as a DNS programmer there isn't a convenience function for it. Server side and client side programming is supported, i.e. you can build servers and resolvers with it.

If you like this, you may also be interested in:

Goals

  • KISS;
  • Fast
  • Small API, if its easy to code in Go, don't make a function for it.

Users

A not-so-up-to-date-list-that-may-be-actually-current:

Features

  • UDP/TCP queries, IPv4 and IPv6;
  • RFC 1035 zone file parsing ($INCLUDE, $ORIGIN, $TTL and $GENERATE (for all record types) are supported;
  • Fast:
    • Reply speed around ~ 80K qps (faster hardware results in more qps);
    • Parsing RRs with ~ 100K RR/s, that's 5M records in about 50 seconds;
  • Server side programming (mimicking the net/http package);
  • Client side programming;
  • DNSSEC: signing, validating and key generation for DSA, RSA and ECDSA;
  • EDNS0, NSID;
  • AXFR/IXFR;
  • TSIG;
  • DNS name compression.

Have fun!

Miek Gieben - 2010-2012 - miek@miek.nl

Building

Building is done with the go tool. If you have setup your GOPATH correctly, the following should work:

go get github.com/miekg/dns
go build github.com/miekg/dns

Examples

A short "how to use the API" is at the beginning of dns.go (this also will show when you call go doc github.com/miekg/dns.

Example programs can be found in the github.com/miekg/exdns repository.

Supported RFCs

all of them

  • 103{4,5} - DNS standard
  • 1348 - NSAP record
  • 1982 - Serial Arithmetic
  • 1876 - LOC record
  • 1995 - IXFR
  • 1996 - DNS notify
  • 2136 - DNS Update (dynamic updates)
  • 2181 - RRset definition
  • 2537 - RSAMD5 DNS keys
  • 2065 - DNSSEC (updated in later RFCs)
  • 2671 - EDNS record
  • 2782 - SRV record
  • 2845 - TSIG record
  • 2915 - NAPTR record
  • 2929 - DNS IANA Considerations
  • 3110 - RSASHA1 DNS keys
  • 3225 - DO bit (DNSSEC OK)
  • 340{1,2,3} - NAPTR record
  • 3445 - Limiting the scope of (DNS)KEY
  • 3597 - Unkown RRs
  • 403{3,4,5} - DNSSEC + validation functions
  • 4255 - SSHFP record
  • 4343 - Case insensitivity
  • 4408 - SPF record
  • 4509 - SHA256 Hash in DS
  • 4592 - Wildcards in the DNS
  • 4635 - HMAC SHA TSIG
  • 4701 - DHCID
  • 4892 - id.server
  • 5001 - NSID
  • 5155 - NSEC3 record
  • 5205 - HIP record
  • 5702 - SHA2 in the DNS
  • 5936 - AXFR
  • 5966 - TCP implementation recommendations
  • 6605 - ECDSA
  • 6742 - ILNP DNS
  • 6891 - EDNS0 update
  • 6895 - DNS IANA considerations
  • xxxx - URI record (draft)
  • xxxx - EDNS0 DNS Update Lease (draft)
  • xxxx - IEU48/IEU64 records (draft)
  • xxxx - Algorithm-Signal (draft)

Loosely based upon

  • ldns
  • NSD
  • Net::DNS
  • GRONG