Сергей Алаев
Многие провайдеры используют BIND в качестве DNS-сервера. Но иногда
возникают проблемы с добавлением зон и записей в них, и это приводит к
перезапуску сервера, что крайне нежелательно из-за возможных ошибок при обработке
клиентских DNS-запросов. Чтобы предотвратить перезапуск DNS-сервера BIND,
целесообразно использовать внешние хранилища (MySQL, OpenLDAP, PostgreSQL и т.
д.).
Прелюдия
Сегодня подробно рассматрим хранение зон BIND в PostgreSQL. Этот метод
хранения зон позволяет динамически добавлять зоны и записи в них, а также
обновлять содержимое зон.
В качестве внешнего хранилища можно также
использовать MySQL, OpenLDAP, BerkeleyDB, ODBC, который предоставляет хранить
зоны в любой СУБД, и т. д.
Основными достоинствами методов
хранения являются:
n Возможность обновлять содержимое зон без
перезапуска.
n Экономия оперативной памяти (при запуске named
считывает все зоны из файлов, при большом количестве зон и записей в них это
занимает достаточно много оперативной памяти и времени).
n Более высокое быстродействие по сравнению с
хранением зон в файлах (результаты тестов можно посмотреть на http://bind-dlz.sourceforge.net/perf_tests.html).
Существует две реализации драйверов для хранения
зон во внешних хранилищах – DLZ и SDB.
DLZ-драйверы не входят в стандартный набор
исходных текстов BIND. Они более гибкие в настройке и поддерживают широкий
набор внешних хранилищ. Техническую документацию по настройке DLZ-драйверов вы
можете найти на http://bind-dlz.sourceforge.net.
SDB-драйверы входят в стандартный набор исходных
текстов BIND и содержат инструменты для автоматизированной интеграции зон из
файлов в базу данных. К недостаткам такого способа хранения зон можно отнести
поддержку только master-зон.
Рассмотрим обе реализации. В Fedora Core Linux
есть rpm-пакет bind-sdb с поддержкой необходимых драйверов SDB. Сначала
рассмотрим метод интеграции с помощью драйвера SDB. К сожалению, во FreeBSD нет
интегрированного порта BIND с поддержкой SDB PostgreSQL, поэтому устанавливать
будем из исходных текстов.