我们有一个虚拟网络,在 Azure 上有一个云服务器。此虚拟网络有多个服务器节点 - 包括 Windows 计算机和一些 Linux 计算机。其中一台 Windows 计算机托管本地 DNS 服务器,用于虚拟网络内的名称解析。所有节点都是使用 DNS 选项创建的,因此本地 DNS 会作为其 DNS 注册到节点中。此外,虚拟网络设置已更新,以将此 DNS 服务器 (172.16.0.4) 包含为 VN 的 DNS。
我的 Windows 机器能够正常工作 - 在新的配置或重新启动后,DNS 会自动更新以反映该机器的新 IP(如果有)。
但是,Linux 机器根本没有在这个本地 DNS 上注册。Linux 节点能够使用本地 DNS (172.16.0.4) 解析 Windows 节点 IP,但它们无法通过名称解析访问其他 Linux 节点。
我尝试更新 resolvconf/resolvconf.d/tail 文件,并添加“搜索”条目,然后重新启动。还尝试将 FQDN 提供给 Linux 服务器的主机名文件。我注意到 resolv.conf 仍然有一个“search reddog.microsoft.com”字符串。这表明正在使用的 DNS 后缀仍然是较旧的,即使 VN 内有新的本地 DNS 服务器可用。resolv.conf 如下所示:
nameserver 172.16.0.4
search reddog.microsoft.com
据我了解,该问题的根本原因是 Azure DHCP 服务器应向此本地 DNS(已正式注册为 VN 级 DNS)发送 DDNS 请求,以更新进入此 VN 的任何新节点或重新启动节点的记录。但 Azure DHCP 似乎没有将这些 DDNS 请求发送到 DNS。我遗漏了什么?
答案1
我最初的想法是,这是您的 DNS 服务器接受来自 Linux 服务器的注册时出现的问题,而不是将其定向到 Linux 服务器时出现的问题。需要检查的一件事是,您的 DNS 区域是否配置为接受不安全的更新?这是必需的,因为 Linux 服务器将无法通过身份验证来更新 DNS。
答案2
您可以通过添加以下行来修改 DHCP 客户端的配置:
supersede domain-name "your.domainname.com";
supersede domain-search "your.domainname.com";
supersede search "your.domainname.com";
通常,您可以在文件中找到 DHCP 配置。在里面/etc/dhcp/dhclient.conf
搜索以找到正确的配置。dhclient
/etc/
答案3
更不用说每次服务器重启时 /etc/resolv.conf 的内容都会重置为 Azure 默认值。因此,即使您确实更改了它,下次重启时,它也会恢复为 reddog.microsoft.com 的搜索域以及您的默认 Azure 名称服务器。