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