如何设置一个简单的自托管动态 DNS 服务器

Cer*_*rin 9 domain-name-system linux ubuntu dynamic-dns

我有一个运行虚拟机管理程序的物理机器的小型内部网络,它依次运行多个 KVM Ubuntu 虚拟机。我将如何设置内部动态 DNS 服务器,以便当我运行脚本来创建新虚拟机时,该 VM 可以自动在 DNS 服务器中注册自己?

Bind似乎是 Linux 的标准 DNS 服务器,但它似乎是为更“静态”的 DNS 模型而设计的。动态更新这将需要一个复杂的脚本,该脚本必须通过 SSH 连接到 DNS 服务器,编辑配置文件,然后重新启动服务器。这似乎不是一个非常优雅的解决方案。有更好的选择吗?

我看到了一个类似的问题,尽管他们要求为亚马逊上的公共设置提供解决方案。我的服务器是完全私有的,我不想依赖外部 VM 主机或动态 DNS 提供商。

小智 8

实际上 Bind 能够通过 RFC 2136 标准消息进行动态 dns 更新。使用 nsupdate 工具和正确的配置(不是非常困难但也不是完全无足轻重)。

验证这些更新消息的选项是 1) 仅允许某些 IP 发送更新消息 2a) TSIG 对称加密 2b) 基于 SIG(0) 的公钥加密或 1 和 2* 的组合。在其他地方可以找到说明在这里

在个人实现这一点时,我发现最大的问题是在 /var/named 中给命名足够的写权限。它需要能够在目录中创建文件以及对动态区域的文件具有写权限。

Sig(0) 密钥是使用 dnssec-keygen 实用程序生成的,名称类型为 HOST,密钥类型为 KEY。例如(可能不准确)(RSAMD5 几乎涵盖了每个绑定包):

dnssec-keygen -a RSAMD5 -b 1024 -n HOST -f 密钥 host.domain.tld

生成的 .key 文件将添加到您的区域文件中,.private 将在命令行上使用 nsupdate 指定。


joe*_*rty 0

一般(以 Windows 为中心):

  1. 安装支持动态 DNS 的 DNS 服务器

  2. 在服务器上配置适当的 DNS 区域

  3. 配置 DNS 服务器以允许区域的安全和不安全 DNS 更新

  4. 使用与 DNS 区域匹配的 DNS 后缀配置 DNS 客户端

  5. 配置 DNS 客户端以使用 DNS 服务器进行名称解析

  6. 配置 DNS 客户端以在 DNS 中注册