Djbdns
{{lowercase|title=djbdns}}
{{Infobox software
| name = djbdns
| logo =
| screenshot =
| caption =
| developer = Daniel J. Bernstein
| released = {{Start date and age|2000|3|25}}
| latest release version = 1.05
| latest release date = {{Start date and age|2001|2|11}}
| latest preview version =
| latest preview date =
| operating system = Unix-like
| platform =
| genre = DNS server
| license = Public domain
| website = {{URL|https://cr.yp.to/djbdns.html}}
}}
The djbdns software package is a DNS implementation. It was created by Daniel J. Bernstein in response to his frustrations with repeated security holes in the widely used BIND DNS software. As a challenge, Bernstein offered a $1000 prize{{cite web
|url=https://cr.yp.to/djbdns/guarantee.html
|title=The djbdns security guarantee
|access-date=2008-09-02
|archive-date=2012-07-06
|archive-url=https://web.archive.org/web/20120706100825/http://cr.yp.to/djbdns/guarantee.html
|url-status=live
}} for the first person to find a security hole in djbdns, which was awarded{{cite web
|url=http://article.gmane.org/gmane.network.djbdns/13864
|title=The djbdns prize claimed
|access-date=2009-03-04
|archive-url=https://web.archive.org/web/20090305125545/http://article.gmane.org/gmane.network.djbdns/13864
|archive-date=2009-03-05
|url-status=dead
}} in March 2009 to Matthew Dempsky.
{{As of|2004}}, djbdns's tinydns component was the second most popular DNS server in terms of the number of domains for which it was the authoritative server, and third most popular in terms of the number of DNS hosts running it.{{cite web | last = Moore | first = Don | year = 2004 | url = http://mydns.bboy.net./survey/ | title = DNS server survey | access-date = 2005-01-06 | archive-date = 2005-01-06 | archive-url = https://web.archive.org/web/20050106083440/http://mydns.bboy.net/survey/ | url-status = live }}
djbdns has never been vulnerable to the widespread cache poisoning vulnerability reported in July 2008,{{cite web
| url = http://www.kb.cert.org/CERT_WEB%5Cservices%5Cvul-notes.nsf/id/800113
| title = Multiple DNS implementations vulnerable to cache poisoning
| access-date = 2008-08-05
| archive-date = 2008-07-25
| archive-url = https://web.archive.org/web/20080725050549/http://www.kb.cert.org/CERT_WEB%5Cservices%5Cvul-notes.nsf/id/800113
| url-status = live
| url = http://www.doxpara.com/?p=1162
| title = An Astonishing Collaboration
| date = 9 July 2008
| access-date = 2008-08-05
| archive-date = 2008-08-04
| archive-url = https://web.archive.org/web/20080804192451/http://www.doxpara.com/?p=1162
| url-status = live
}} but it has been discovered that it is vulnerable to a related attack.{{cite web
| url = http://www.your.org/dnscache/
| title = Rapid DNS Poisoning in djbdns
| last = Day
| first = Kevin
| year = 2009
| access-date = 2009-02-23
| archive-date = 2009-02-21
| archive-url = https://web.archive.org/web/20090221073711/http://www.your.org/dnscache/
| url-status = live
}}
The source code has not been centrally managed since its release in 2001, and was released into the public domain in 2007.{{cite web |url=https://cr.yp.to/distributors.html |title=djbdns is placed in the public domain |access-date=2008-01-01 |archive-date=2012-05-25 |archive-url=https://web.archive.org/web/20120525075454/http://cr.yp.to/distributors.html |url-status=live }} As of March 2009, there are a number of forks, one of which is dbndns (part of the Debian Project), and more than a dozen patches to modify the released version.{{cite web|url=http://linuxmafia.com/faq/Network_Other/dns-servers.html#djbdns|title=Detailed overview of DNS server software by Rick Moen|access-date=2009-07-13|archive-date=2009-07-27|archive-url=https://web.archive.org/web/20090727202448/http://linuxmafia.com/faq/Network_Other/dns-servers.html#djbdns|url-status=live}}
While djbdns does not directly support DNSSEC, there are third party patches to add DNSSEC support to djbdns' authoritative-only tinydns component.{{Cite web |url=http://www.tinydnssec.org/ |title=DNSSEC for TinyDNS |access-date=2016-01-19 |archive-date=2016-01-26 |archive-url=https://web.archive.org/web/20160126233920/http://www.tinydnssec.org/ |url-status=live }}
Components
The djbdns software consists of servers, clients, and miscellaneous configuration tools.
=Servers=
- dnscache — the DNS resolver and cache.
- tinydns — a database-driven DNS server.
- walldns — a "reverse DNS wall", providing IP address-to-domain name lookup only.
- rbldns — a server designed for DNS blacklisting service.
- pickdns — a database-driven server that chooses from matching records depending on the requestor's location. (This feature is now a standard part of tinydns.)
- axfrdns — a zone transfer server.
=Client tools=
- axfr-get — a zone-transfer client.
- dnsip — simple address from name lookup.
- dnsipq — address from name lookup with rewriting rules.
- dnsname — simple name from address lookup.
- dnstxt — simple text record from name lookup.
- dnsmx — mail exchanger lookup.
- dnsfilter — looks up names for addresses read from stdin, in parallel.
- dnsqr — recursive general record lookup.
- dnsq — non-recursive general record lookup, useful for debugging.
- dnstrace (and dnstracesort) — comprehensive testing of the chains of authority over DNS servers and their names.
Design
In djbdns, different features and services are split off into separate programs. For example, zone transfers, zone file parsing, caching, and recursive resolving are implemented as separate programs. The result of these design decisions is a reduction in code size and complexity of the daemon program that provides the core function of answering lookup requests. Bernstein asserts that this is true to the spirit of the Unix operating system, and makes security verification much simpler.{{citation needed|reason=Where did he assert this?|date=May 2016}}
Copyright status
On December 28, 2007, Bernstein released djbdns into the public domain.{{cite web
| url = https://cr.yp.to/distributors.html
| title = Frequently asked questions from distributors
| access-date = 2007-12-31
| archive-date = 2012-05-25
| archive-url = https://web.archive.org/web/20120525075454/http://cr.yp.to/distributors.html
| url-status = live
}} Previously the package was distributed free of charge as license-free software. However this did not permit the distribution of modified versions of djbdns, which was one of the core principles of open-source software. Consequently, it was not included in those Linux distributions which required all components to be open-source.
See also
{{Portal|Free and open-source software}}
References
{{reflist|30em}}
External links
- [https://cr.yp.to/djbdns.html djbdns official homepage]
- [http://pjp.dgplug.org/djbdns/ N-DJBDNS]
- [http://lifewithdjbdns.org/ A guide to djbdns]
- [https://web.archive.org/web/20080704065627/http://djbdns.faqts.com/ The djbdns section of FAQTS]
- {{cite web|url=http://homepage.ntlworld.com./jonathan.deboynepollard/FGA/djbdns-myths-dispelled.html|title=Some of what is said about djbdns is wrong.|author=Jonathan de Boyne Pollard|work=Frequently Given Answers|url-status=dead|archive-url=https://web.archive.org/web/20110213061400/http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/djbdns-myths-dispelled.html|archive-date=2011-02-13}} — Jonathan de Boyne Pollard's debunking of several myths relating to djbdns
- {{cite web|url=http://homepage.ntlworld.com./jonathan.deboynepollard/FGA/djbdns-problems.html|title=The known problems with Dan Bernstein's djbdns|author=Jonathan de Boyne Pollard|work=Frequently Given Answers|access-date=2009-09-20|archive-url=https://web.archive.org/web/20100425055845/http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/djbdns-problems.html|archive-date=2010-04-25|url-status=dead}} — Jonathan de Boyne Pollard's list of the several known problems in djbdns
- [http://www.anders.com/projects/sysadmin/djbdnsRecordBuilder/ Supporting newer record formats through generic records.] {{Webarchive|url=https://web.archive.org/web/20050607083324/http://www.anders.com/projects/sysadmin/djbdnsRecordBuilder/ |date=2005-06-07 }}
- [https://lwn.net/2001/features/djbdns.php3 LWN (Linux weekly news) looks at djbdns]