Skip to end of metadata
Go to start of metadata

Symptom:

This page lists information for application developers that like to use DNS apart from the simple name-to-address mapping provided by libc getaddrinfo()

Solution

  • DnsQuery: MSN Information on the DnsQuery() API call available in Windows operating systems: http://msdn.microsoft.com/en-us/library/ms682016(VS.85).aspx
  • GNU adns: Advanced, easy to use, asynchronous-capable DNS client library and utilities: http://www.chiark.greenend.org.uk/~ian/adns/
  • dnsruby: Dnsruby is a pure Ruby DNS client library. It provides a complete DNS client implementation, including DNSSEC. It can also load (BIND) zone files. Dnsruby has been used in OpenDNSSEC and ISC's DLV service. http://rubyforge.org/projects/dnsruby/
  • dnspython: dnspython is a DNS toolkit for Python. It supports almost all record types. It can be used for queries, zone transfers, and dynamic updates. It supports TSIG authenticated messages and EDNS0. http://www.dnspython.org/
  • BIND10: the BIND 10 DNS server comes with a dnslibrary and a python interface: http://bind10.isc.org/
  • ldns: The goal of ldns is to simplify DNS programming, it supports recent RFCs like the DNSSEC documents, and allows developers to easily create software conforming to current RFCs, and experimental software for current Internet Drafts. A secondary benefit of using ldns is speed; ldns is written in C it should be a lot faster than Perl. http://nlnetlabs.nl/projects/ldns/
  • Net::DNS: Net::DNS is a DNS resolver implemented in Perl. It allows the programmer to perform nearly any type of DNS query from a Perl script. http://www.net-dns.org/
  • c-ares: c-ares is a C library that performs DNS requests and name resolves asynchronously. http://c-ares.haxx.se/
  • RULI Resolver User Layer Interface: RULI stands for Resolver User Layer Interface. It's a library built on top of an asynchronous DNS stub resolver. RULI provides an easy-to-use interface for querying DNS SRV resource records. The goal is to promote wide deployment of SRV-cognizant software. RULI aims to fully support SRV-related standards. There are bindings for PHP, Perl, Guile/Scheme, Java, and Lua. IPv6 is supported: http://www.nongnu.org/ruli/
  • dnsjava: dnsjava is an implementation of DNS in Java. It supports all defined record types (including the DNSSEC types), and unknown types. It can be used for queries, zone transfers, and dynamic updates. It includes a cache which can be used by clients, and a minimal implementation of a server. It supports TSIG authenticated messages, partial DNSSEC verification, and EDNS0. http://www.dnsjava.org/
  • Library DNS (from nmap): Simple DNS library supporting packet creation, encoding, decoding, and querying.  http://nmap.org/nsedoc/lib/dns.html
  • .NET DNS Class: Provides simple domain name resolution functionality. http://msdn.microsoft.com/en-us/library/system.net.dns.aspx
  • libval is a validating library that comes with the DNSSEC-Tools package. It allows applications to issue DNS queries and verify that the returned responses are trusted as defined by the policies defined in the system's dnsval.conf file. https://www.dnssec-tools.org/wiki/index.php/Libval_and_libsres