有关动态DNS的详细信息,请引用参考书/书籍吗?我已经尝试过维基百科,IEEE论文和RFC,让所有那些看着它的人都睁大眼睛。所以,欢迎任何意见。我需要帮助在项目中实现它,并希望了解更多。感谢。
答案 0 :(得分:2)
动态DNS是一种即时更新DNS记录的概念,而不是正常(静态)DNS,其中DNS记录中的更改需要手动干预。
动态DNS意味着您有一些DNS服务器,您可以通过编程方式更新其上的记录。这可以通过不同的方式实现:
RFC 2136动态DNS。它是良好的DNS协议的扩展,它允许获取 DNS记录,但更新它们。今天的大多数DNS服务器(例如BIND9和PowerDNS)都支持此协议。文档来源:RFC 2136定义协议。 nsupdate
是支持此协议的命令行工具,请阅读man nsupdate
。有关如何为动态更新配置BIND9的详细信息,请参阅BIND9 ARM。大多数语言都存在允许使用此协议进行动态DNS更新的库。例如,对于PHP,它是Net_DNS2。它没有很好的文档记录,但网站有很好的例子,很容易让我使用它。
某些DNS服务器(尤其是PowerDNS)可以从数据库后端读取其DNS记录。因此,可以将新的DNS记录写入普通的SQL数据库,服务器只需从那里获取它们。文档来源:如果您选择这种方式,我建议您使用PowerDNS,在PowerDNS site上查找文档。
如果不经常更新,则还可以更新DNS服务器上的文本区域文件,然后请求服务器重新读取更新的区域文件。虽然这可能不是一种方便的方式。所有主要DNS服务器都支持相同的区域文件格式,我发现DNS for Rocket Scientists非常好。
现在,动态DNS的一个完全不同的方面是动态DNS 服务,比如no-ip.com,我自己的net-me.net和其他许多人。它们都暴露了一些基于HTTP的API(通常非常简单)来更新DNS记录,并且经常提供实际更新它们的GUI客户端软件。快速了解更新协议,客户端以及您可以获得的整个过程here。由于没有标准存在,每个提供商都使用他自己的协议变体,通常它们看起来非常相似。 (所有这些动态DNS提供程序在内部使用某种1.2.3。如上所述。)
最后但并非最不重要的 - 有一本很棒的 Oreilly书 - DNS and BIND 5th edition涵盖了DNS的所有可能方面。