rbldnsd: Small Daemon for DNSBLs

Quick links

Introduction

rbldnsd is a very small and fast DNS daemon which is especially made to serve DNSBL zones. This daemon was inspired by Dan J. Bernstein's rbldns program found in djbdns package.

rbldnsd is extremly fast - it outperforms both bind and djbdns greatly. It has very small memory footprint. Currently (2002-11), machine as small as i486-100 with 32Mb memory can be a DNS server for all zones of relays.osirusoft.com just fine. Compare this with requiriments for bind - 256Mb memory and 400MHz PPro or higher machine. On PII-233 machine and with relays.osirusoft.com zones (more than 360,000 records in combined zone), it performs as many as 3500 requests per secound - limited by machine's networking support only, requires less than 6Mb memory to operate, and takes 5 secounds to (re)load all zones.

The daemon can serve both IP-based (ordb.org, dsbl.org etc) and name-based (rfc-ignorant.org) blocklists. Unlike DJB's rbldns, it has ability to specify individual values for every entry, and can serve as many zones on a single IP address as you wish. The daemon keeps all zones in memory for faster operations, but it's memory usage is very efficient, especially for repeated TXT values which keept only once.

Zone File Format

Input format is very simple and far more sutable for such a task compared to one of full-featured bind. Rbldnsd may take input format of DJB's rbldns (i.e. file understood by rbldns-data program) as is, but it isn't limited to this format. Some examples of input format understood by rbldnsd: There are other zone formats available, including generic simplified bind-style format.

Usage

rbldnsd should be started as root user, in order to be able to bind to privileged port 53. After binding to the specified port and (optionally) changing it's root to a specified directory, daemon will change it's userid to specified value. Here is how rbldnsd can be used: There is no config file, rbldnsd accepts all configuration in command line. The same zonename may be repeated, to form zone contents from several datasets; ditto for a dataset, one dataset may be used for several zones (data will be loaded only once). See manual page included in tarball for details.

Download

The software is released under GPL license version 2 or any later version.

Note: versions between 0.2 and 0.82 inclusive contains a trivial buffer-overflow bug which was corrected in 0.83. This was a too stupid bug - initial code was right and was written carefully, but subsequent changes removed that check altogether... Oh well...

Last version, 0.96, released 29 May 2003, can be found here, recent news are here, changelog is here. Look here for installable packages.


Enjoy.
 -- Michael Tokarev, mjt {at} corpit {dot} ru.

Page last modified (except of bumping version number) Thu, 8 May 2003 17:40:11 +0400 by mjt.