Создание записи DNS A - PullRequest
       5

Создание записи DNS A

0 голосов
/ 18 октября 2018

Я пытаюсь создать небольшую службу DynDNS для своего собственного использования, но столкнулся со стеной: возможно ли программно создать запись A из PHP?Как бы я подошел к решению этой проблемы?Как другие провайдеры DynDNS решают эту проблему?

1 Ответ

0 голосов
/ 18 октября 2018

Ну, конечно, вы можете сделать это.Я сделал это некоторое время назад с «похожей» целью (это было создать NIC для пользовательского TLD).

Мой подход состоял в том, чтобы имена были зарегистрированы в базе данных со всеми их настройками (A, NS), TXT, CNAME ...).Затем, после внесения изменений, я переписал файл зоны BIND, на который затем указал основной конфигурации домена BIND.После его перезаписи вам просто нужно использовать rndc для перезагрузки вашей зоны:

rndc reload example.com.

Примечание: Вы также можете перезагрузить все зоны, не указавзона для перезагрузки в этой команде.Вам также может понадобиться доступ с правами root, проверить его безопасность, возможно, выполнить команду, выполняемую другой программой, не доступной извне, и строго ограничить доступ с правами root только к команде rndc.

Конечно, это означает, что ваша зона обрабатывается вашим собственным DNS-сервером, а не тем, который вам предоставляет ваш регистратор.Однако некоторые регистраторы (например, OVH) предоставляют API для прямого редактирования зоны для вашей записи на своих DNS-серверах.Это также может быть решением, но оно ограничит вас их обслуживанием.

Единственное, что вам нужно для этого сделать - это написать алгоритм для генерирования действительного файла зоны из ваших сохраненных записей (что, я думаю,в какой-то форме массива / объекта в один момент).Для записи SOA я бы посоветовал вам поместить ее в какой-нибудь файл шаблона, а затем дополнить данными зоны. Страница Wikipedia в файле зоны может помочь вам в этом.

Редактировать заметку: Если вы собираетесь «программно написать зону и перезагрузить сервер», я настоятельно советуем вам запускать эту часть как скрипт CLI, изолированный снаружи, который будет периодически перезагружать зону из базы данных или делать это по запросу, а также проверять, что вы пишете в своей зоне,Вы не должны помещать что-то, что вводит системные команды где-нибудь близко к внешнему миру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...