My favorites | Sign in
Project Home Downloads Wiki Issues Source
Project Information
Members
Featured
Downloads
Links

Overview

gdnsd is a GPL3-licensed Authoritative DNS server written in C using libev and pthreads with a focus on high performance, low latency service. It does not offer any form of caching or recursive service, and does not support DNSSEC. The initial "g" stands for Geographic, as gdnsd offers a plugin system for geographic (or other sorts of) balancing, redirection, and service-state-conscious failover. If you don't care about that feature, you can ignore it and gdnsd still makes a great authoritative DNS server.

Please use the Google Group for discussion, questions, help, etc: gdnsd Google Group | gdnsd@googlegroups.com. It's really a lot better than emailing me directly, because we get a public archive of knowledge from the effort :)

Please report any bugs/requests through the Issue Tracker

Latest Release Info

The latest stable release is 1.4.6, released on Dec 3, 2011. ChangeLog

The 1.4.x stable series has been in mostly-bugfix-only mode since 1.4.0 on Jan 12, 2011.

Specific info about supported/missing features in the current stable series: Features

System requirements for building from the source are listed in the source's INSTALL file.

Information about release policies, branch management, future feature plans, old releases, etc: Planning

Detailed manpages and docs are included with the distribution.

Development Branch

The latest testing release is 1.5.13, released Jan 30, 2012. ChangeLog.

As of 1.5.13, the new code is considered a Release Candidate for 1.6.0, and will become 1.6.0 shortly once a little more validation and bug-hunting has been done. Please test this release. This release has already received some fairly deep testing and analysis and seems fairly high quality, but more never hurts!

Simplicity

If all you need to do is serve an authoritative domain or two, all you need is your zonefiles and a simple, short gdnsd configuration file that looks like this:

    zones = { example.com = {}, example.org = {} }

Name the zonefiles the same as their respective zone names, place them in the same directory as the above configuration file, and invoke "gdnsd -c /path/to/config.file start".

If you need to do trickier things, a world of non-default options are available. See the gdnsd.config manpage.

Plugins

A core feature (and the reason for starting this project, although it's more of a niche thing) is that gdnsd has an API for dso-based plugins for pluggable address resolution (conceptually similar to Apache modules) for A, AAAA, and CNAME records.

The core daemon also includes basic HTTP and raw TCP monitoring services with anti-flap that plugins can use to make failover decisions. Sufficient hooks exist to implement your own custom monitoring solution as well. The state of services monitored by this code is also reflected in gdnsd's own HTTP output.

Included with the gdnsd core are 3 trivial/testing plugins called null, static, reflect. Reflect is useful for real-world debugging (it sends the cache's IP back to itself as an answer on a short TTL).

Other useful simple plugins included are simplefo, multifo, and weighted, which do various forms of address failover and weighting.

Finally, there are also two included meta-plugins named metafo and geoip, which do higher-level failover (and geographic mapping) of resources defined in terms of other, simpler, plugins.


Powered by Google Project Hosting