Мне нужен бэкэнд MySQL для моего DNS-сервера, поэтому я решил переключиться с Bind на PowerDNS, бэкэнд MySQL которого немного удобнее.
В основном: пользователи добавляют домены в мою базу данных с помощью веб-интерфейса, эти домены зарегистрированы и доступны для PowerDNS. Когда я запрашиваю DNS-сервер об этих доменах, я получаю правильный ответ. Работает как шарм.
Дело в том, что мне нужно добавить свои домены и зоны в мои реестры DNS, и добавление их в базу данных нарушит логику моего приложения (только пользователи этого приложения должны добавлять домены). Я хотел бы добавить в PowerDNS дополнительные домены и зоны, не добавляя их напрямую в мою базу данных.
Есть ли способ зарегистрировать дополнительные домены, например, в файле, который будет прочитан перед выполнением любого запроса MySQL? Или, может быть, резервный файл на случай, если среди моих записей MySQL ничего не найдено?
Решение найдено в глубины панели запуска PowerDNS ! Есть способ прочитать файлы DNS-данных перед использованием бэкэнда MySQL, и это ... с помощью двух бэкэндов! Цитата:
Как описано в http://doc.powerdns.com/modules.html - просто не так много слов;) - PowerDNS может запускать любое количество разных или запекать одни и те же серверные модули с помощью оператора запуска. Обычно это делается в конфигурационном файле pdns.conf, а не в командной строке. Эти серверные ВМ будут исчерпаны для ответов на ваш DNS-запрос в том порядке, в котором они указаны в заявлении о запуске. Это означает, что если ваш первый бэкэнд в очереди может ответить на вопрос, так и будет, и если только четвертый в очереди сможет ответить на вопрос, у вас будет задержка цикла через первые три бэкэнда, пока PowerDNS не отправит ответ. Поэтому обязательно убедитесь, что ваши серверные ВМ действительно отвечают достаточно быстро где будет получаться достаточно быстро, и ответ за <1 с должно быть достаточно, чтобы быть совместимым с большинством рекурсивных серверов имен, но быстрее, конечно, лучше.
Для моей проблемы я решил использовать:
По сути, все, что требуется, - это небольшое изменение конфигурации в pdns.local
:
launch=bind,gmysql
Я слышал, что вы могли бы быть еще более конкретными с (присваивает имена бэкэндам):
launch=bind:first,gmysql:second
Затем просто добавьте параметры для обоих бэкэндов:
# Bind backend configuration
bind-config=/path/to/your/zones/file
# MySQL configuration
gmysql-host=localhost
gmysql-port=
gmysql-dbname=db
gmysql-user=user
gmysql-password=passwd
gmysql-dnssec=no
Все, что вам нужно сделать, это создать файл зоны привязки (zone{}
блоки), относящиеся к файлам, зависящим от домена (содержащие записи SOA, A, MX, NS, ...).
Начать сначала !