Введение

Пакет программного обеспечения djbdns является реализацией DNS. Он был создан Дэниелом Дж. Бернштейном в ответ на его разочарование повторяющимися уязвимостями в широко используемом программном обеспечении BIND DNS. В качестве вызова Бернштейн предложил приз в 1000 долларов первому человеку, обнаружившему уязвимость в djbdns, который был присужден в марте 2009 года Мэтью Демпски. По состоянию на 2004 год компонент tinydns в составе djbdns был вторым по популярности DNS-сервером по количеству доменов, для которых он являлся авторитетным сервером, и третьим по популярности по количеству DNS-хостов, на которых он работал. djbdns никогда не был уязвим для широко распространенной уязвимости отравления кэша, о которой сообщалось в июле 2008 года, однако было обнаружено, что он уязвим для схожей атаки. Исходный код не поддерживался централизованно с момента выпуска в 2001 году и был передан в общественное достояние в 2007 году. По состоянию на март 2009 года существует несколько ответвлений (форков), одним из которых является dbndns (часть проекта Debian), а также более десятка патчей для изменения выпущенной версии. Хотя djbdns напрямую не поддерживает DNSSEC, существуют сторонние патчи для добавления поддержки DNSSEC в авторитетный компонент tinydns.

Компоненты

Программное обеспечение djbdns состоит из серверов, клиентов и разнообразных инструментов настройки.

Серверы

dnscache — DNS-резолвер и кэш. tinydns — DNS-сервер, управляемый базой данных. walldns — "обратный DNS-брандмауэр", предоставляющий поиск доменного имени по IP-адресу. rbldns — сервер, предназначенный для службы DNS-черных списков. pickdns — сервер, управляемый базой данных, который выбирает соответствующие записи в зависимости от местоположения клиента. (Эта функция теперь является стандартной частью tinydns.) axfrdns — сервер для передачи зон.

Клиентские инструменты

axfr get — клиент для передачи зоны. dnsip — простой поиск адреса по имени. dnsipq — поиск адреса по имени с правилами переопределения. dnsname — простой поиск имени по адресу. dnstxt — поиск простой текстовой записи по имени. dnsmx — поиск MX-записи (сервера обмена почтой). dnsfilter — параллельный поиск имен для адресов, считываемых из стандартного ввода. dnsqr — рекурсивный общий поиск записей. dnsq — нерекурсивный общий поиск записей, полезный для отладки. dnstrace (и dnstracesort) — всестороннее тестирование цепочки делегирования полномочий над DNS-серверами и их именами.

Дизайн

В djbdns различные функции и сервисы выделены в отдельные программы. Например, передача зон, разбор файлов зон, кэширование и рекурсивное разрешение реализованы как отдельные программы. Результатом этих конструкторских решений стало уменьшение размера и сложности кода программы-демона, выполняющей основную функцию – обработку запросов на поиск. Бернштейн утверждает, что это соответствует принципам операционной системы Unix и значительно облегчает проверку безопасности.

Статус авторских прав

28 декабря 2007 года Бернштейн перевел djbdns в общественное достояние. Ранее пакет распространялся бесплатно как программное обеспечение без лицензионных ограничений. Однако это не разрешало распространение модифицированных версий djbdns, что противоречило одному из ключевых принципов программного обеспечения с открытым исходным кодом. В результате, он не включался в те дистрибутивы Linux, которые требовали, чтобы все компоненты были с открытым исходным кодом.