你如何设置一个DNS服务器,以便能够即时添加logging?

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

由于网站是即时创build的,因此我需要能够即时设置DNSlogging。 DNS通配符区域并没有真正缩放,因为最终我将超出第一台服务器,并需要将新实例推送到其他机器上。 因此,我需要能够将特定的子域指向特定的IP地址。

我四处寻找基于API的云DNS服务(这将是伟大的),但他们似乎非常昂贵,我的需求(大量低实例)。 Rackspace有一个免费的Cloud DNS服务,但它只能上传到500个区域,技术支持人员告诉我他们正在重写API,所以我想暂时避免他们的服务。

所以我想我会为这些区域build立我自己的DNS服务器。 因此,问题:什么是一个好的DNS服务器软件,这个特定的需求,将允许我创build区域而不重新启动?

有什么build议么? 谢谢!

如果您要添加的所有logging都是特定区域的子域,那么您可以轻松设置绑定以进行dynamic更新。 然后只需使用nsupdate将更新提交到区域。

如果所有新logging都是现有域中的logging,这应该可以正常工作。 如果您需要dynamic添加其他域,那么这不会真的有帮助。

// 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; }; }; 

使用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 

我使用myDNS它工作的很好,很简单,它也可以很容易地使用BIND。 还有像PowerDNS等其他的。

bind能够(重新)加载单个域的文件,而不用重新启动整个。

或者去与绑定的rndc接口,或者我更喜欢:使用PowerDNS

djbdns更新是完全透明的 – 不会中断 – “zonefile”结构非常适合脚本修改和自动化。 logging格式完全不同于BIND,但是它乍一看似乎并不难理解。 强烈推荐。