您如何设置 DNS 服务器以便能够即时添加记录?

Gom*_*moX 6 domain-name-system linux dynamic

我需要在一堆服务器上托管一个基于子域的 SaaS 应用程序。服务器是 xx1.example.com、xx2.example.com 等。我想在这些服务器上托管一堆 yyy.example.com 站点。

因为站点是即时创建的,所以我也需要能够即时设置 DNS 记录。DNS 通配符区域并不能真正扩展,因为最终我会超出第一台服务器的容量并且需要将新实例推送到其他机器上。因此,我需要能够将特定的子域指向特定的 IP 地址。

我四处寻找基于 API 的云 DNS 服务(这会很棒),但它们对于我的需求(大量低容量实例)来说似乎非常昂贵。Rackspace 有一个免费的 Cloud DNS 服务,但它最多只能支持 500 个区域,技术支持告诉我他们正在重写 API,所以我想暂时避免使用他们的服务。

因此我想我将为这些区域设置我自己的 DNS 服务器。因此,问题是:对于这种特定需求,有什么好的 DNS 服务器软件可以让我在不重新启动的情况下创建区域?

有什么建议?谢谢!

Zor*_*che 12

如果您将添加的所有记录都是特定区域的子域,那么您可以轻松设置动态更新的绑定。然后只需使用 nsupdate 向区域提交更新。

如果所有新记录都是现有域中的记录,这应该可以正常工作。如果您需要动态添加其他域,那么这将无济于事。

// zone config
// using ip only for authentication, should really use hmac auth
zone "example.com" {
        type master;
        file "/etc/bind/dyn/example.com.dns";
        allow-query {any;};
        allow-update {
                127.0.0.1;
                192.0.2.0/24;
        };
};
Run Code Online (Sandbox Code Playgroud)

使用nsupdate更新脚本。

#!/bin/bash
record=yyy.example.com
(
 echo "server xx1.example.com"
 echo "zone example.com"

 echo "update delete ${record} A"
 echo "update add ${record} ${ttl} A 192.0.2.1"
 echo "send"
) | /usr/bin/nsupdate
Run Code Online (Sandbox Code Playgroud)