从数据库读取 DNS 区域

从数据库读取 DNS 区域

我用 Laravel 开发了一个应用程序(它与网站构建器相同),客户可以将他们的信息添加到他们的个人资料中,最后,他们可以将域名停放在个人资料中(通过为域名设置我的 DNS)

在应用程序控制器中,我将获取域名(带有request()->getHost())并且将加载正确的配置文件。

当我通过添加示例域在本地测试我的应用程序时,一切正常/etc/hosts

我的问题是在服务器上,因为我需要为每个域添加一个 DNS 区域(据我所知),我想知道是否有任何解决方案可以从 MySQL 数据库而不是文件中读取 DNS 记录?因为 BIND 将从文本文件加载 DNS 区域,而我不想生成该文件。

服务器是CentOS 8。

答案1

您是否可以切换到 PowerDNS 而不是 BIND?PowerDNS 支持从 MySQL 数据库读取 DNS 记录,并且具有 JSON API 来添加/删除您可以从应用程序中使用的记录(它将处理诸如正确增加序列号之类的事情),而不是手动操作其数据库。

答案2

BIND 具有数据库支持,称为动态可加载区域 (DLZ)

DLZ(动态可加载区域)是 BIND 9 的扩展,允许直接从外部数据库检索区域数据。无需任何格式或架构。DLZ 驱动程序适用于多种不同的数据库后端,包括 PostgreSQL、MySQL 和 LDAP,也可以为任何其他数据库后端编写。

还有一篇文章在 BIND 中使用 DLZ

相关内容