Dnsruby

Dnsruby is a pure Ruby DNS client library which implements a stub resolver. It aims to comply with all DNS RFCs, including DNSSEC NSEC3 support.

Dnsruby presents a new API for DNS. It is based on Ruby's core resolv.rb Resolv API, but has been much extended to provide a complete DNS implementation.

Dnsruby runs a single I/O thread to handle all concurrent queries. It is therefore suitable for high volume DNS applications.

The following is a (non-exhaustive) list of features :

o Implemented RRs : A, AAAA, AFSDB, ANY, CERT, CNAME, DNAME,

HINFO, ISDN, LOC, MB, MG, MINFO, MR, MX, NAPTR, NS, NSAP,
OPT, PTR, PX, RP, RT, SOA, SPF, SRV, TKEY, TSIG, TXT, WKS,
X25, DNSKEY, RRSIG, NSEC, NSEC3, NSEC3PARAM, DS, DLV

o Generic RR types supported (RFC3597)

o (Signed) Zone transfer (AXFR and IXFR) supported

o (Signed) Dyamic updates supported

o DNSSEC validation supported

Dependencies

Dnsruby can run with no dependencies. However, if you wish to use TSIG or DNSSEC then the OpenSSL library must be available. This is a part of the Ruby standard library, but appears not to be present on all Ruby platforms. If it is not available, then the test code will not run the tests which require it. Code which attempts to use the library (if it is not present) will raise an exception.

Demo code

The demo folder contains some example programs using Dnsruby. These examples include a basic dig tool (rubydig) and a tool to concurrently resolve many names, amongst others.

Online tests

Nominet operate a test server which the Dnsruby test code queries. If this server is not available then some of the online tests will not be run.

Contact

Use dnsruby rubyforge forums, or contact : alexd@nominet.org.uk