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 指定。
一般(以 Windows 为中心):
安装支持动态 DNS 的 DNS 服务器
在服务器上配置适当的 DNS 区域
配置 DNS 服务器以允许区域的安全和不安全 DNS 更新
使用与 DNS 区域匹配的 DNS 后缀配置 DNS 客户端
配置 DNS 客户端以使用 DNS 服务器进行名称解析
配置 DNS 客户端以在 DNS 中注册