我有一个运行虚拟机管理程序的小型内部物理机网络,后者又运行多个KVM Ubuntu虚拟机.如何设置内部动态DNS服务器,以便在运行脚本创建新虚拟机时,该VM可以自动在DNS服务器中注册?
Bind似乎是Linux的标准DNS服务器,但它似乎是为更“静态”的DNS模型而设计的.动态更新这将需要一个复杂的脚本,必须SSH到DNS服务器,编辑配置文件,然后重新启动服务器.这似乎不是一个非常优雅的解决方案.有更好的选择吗?
我看到了similar question,尽管他们要求在亚马逊上设置公共场所的解决方案.我的服务器完全是私有的,我不想依赖外部VM主机或动态DNS提供程序.
解决方法
实际上Bind能够通过RFC 2136标准消息进行动态DNS更新.使用nsupdate工具和正确的配置(不是非常困难,但也不是完全无关紧要).
验证这些更新消息的选项是1)仅允许某些IP发送更新消息2a)TSIG对称加密2b)基于SIG(0)的公钥加密或1和2 *的组合.
其他地方的指示可以找到here
在亲自实现这一点时,我发现最大的问题是在/ var / named中赋予了命名的足够的写权限.它需要能够在目录中创建文件,并具有对动态区域的文件的写入权限.
使用名称为HOST和keytype KEY的dnssec-keygen实用程序生成Sig(0)密钥.
对于exmaple(可能不准确)(RSAMD5几乎涵盖了每个绑定包):
dnssec-keygen -a RSAMD5 -b 1024 -n HOST -f密钥host.domain.tld