Добавить дополнительные зоны за пределами базы данных MySQL

Добавить дополнительные зоны за пределами базы данных MySQL

Так как мне понадобился бэкэнд MySQL для моего DNS-сервера, я решил перейти с Bind на PowerDNS, бэкэнд MySQL которого немного удобнее.

В основном: пользователи добавляют домены в мою базу данных с помощью веб-интерфейса, эти домены регистрируются и доступны PowerDNS. Когда я запрашиваю DNS-сервер об этих доменах, я получаю допустимый ответ. Работает как по волшебству.

Дело в том, что мне нужно добавить мои домены и зоны в мои DNS-реестры, а добавление их в базу данных нарушит логику моего приложения (только пользователи этого приложения должны добавлять домены). Я хотел бы добавить дополнительные домены и зоны в PowerDNS, не добавляя их напрямую в мою базу данных.

Есть ли способ зарегистрировать дополнительные домены, например, в файле, который будет прочитан до того, как будет сделан запрос MySQL? Или, может быть, резервный файл, на случай, если среди моих записей MySQL ничего не будет найдено?

решение1

Решение найдено, вглубины стартовой площадки PowerDNS! Есть способ прочитать файлы DNS-данных перед использованием бэкэнда MySQL, и это... использование двух бэкэндов ! Цитата:

Как описано вhttp://doc.powerdns.com/modules.html- просто не с таким количеством слов ;) - PowerDNS может запускать любое количество различных или одинаковых бэкендов через оператор запуска. Обычно это делается в файле конфигурации pdns.conf вместо командной строки. Эти бэкенды будут исчерпаны для ответов на ваш DNS-запрос в том порядке, в котором они указаны в операторе запуска. Это означает, что если ваш первый бэкенд в строке может ответить на вопрос, он это сделает, а если только четвертый в строке может ответить на вопрос, у вас будет задержка цикла по первым трем бэкендам, пока PowerDNS не отправит ответ. Поэтому крайне важно, чтобы вы убедились, что ваши бэкенды отвечаютдостаточно быстрогде достаточно быстрое получение и ответ в течение <1 с должны быть совместимы с большинством рекурсивных серверов имен, однако, конечно, чем быстрее, тем лучше.

Для решения моей проблемы я решил использовать:

  • Бэкэнд Bind, который служит приоритетным файловым бэкэндом.
  • На втором месте — бэкэнд MySQL.

По сути, все, что нужно, это небольшое изменение конфигурации 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

Все, что вам нужно сделать, это создать файл зоны Bind ( zone{}блоки), ссылающийся на файлы, специфичные для домена (содержащие записи SOA, A, MX, NS, ...).

Перезапуск !

Связанный контент