我公司的 DNS 服务器有时无法解析某些虚拟机的主机名,可能的原因有哪些?

我公司的 DNS 服务器有时无法解析某些虚拟机的主机名,可能的原因有哪些?

我负责管理一组虚拟机,我所属组的成员使用这些虚拟机来访问 Web 应用、Web 服务、构建服务器以及诸如此类的内容。IT 负责 DNS 服务器,而我无权访问它们。

所有虚拟机都是同一本地域的一部分,并且都配置为使用相同的默认网关、子网掩码以及 dns1 和 dns2 服务器,每个虚拟机都有自己唯一的静态 IP 地址。

正如我从不同的客户端计算机一次又一次测试的那样,DNS 服务器从未无法解析某些虚拟机(Windows 服务器虚拟机)的主机名,但有一半时间它们无法解析特定一组虚拟机(Windows 7 虚拟机)的主机名。

例如,如果我在尝试访问机器后立即在客户端 PC 上运行以下命令,导致出现“未找到服务器”错误消息,则会得到以下输出:

ipconfig /displaydns

vm1host.mycompany.local
----------------------------------------
Name does not exist.

nslookup vm1主机

Server:  dnsserver1.mycompany.local
Address:  <dnsserver1-ip-address>

*** dnsserver1.mycompany.local can't find vm1host: Non-existent domain

nslookup vm1host.mycompany.local

Server:  dnsserver1.mycompany.local
Address:  <dnsserver1-ip-address>

*** dnsserver1.mycompany.local can't find vm1host.mycompany.local: Non-existent domain

nslookup

Server:  dnsserver1.mycompany.local
Address:  <dnsserver1-ip-address>

Name:    vm1host.mycompany.local
Address:  <vm1-ip-address>

ping 虚拟机1主机

Ping request could not find host vm1host. Please check the name and try again.

ping vm1host.mycompany.local

Ping request could not find host vm1host.mycompany.local Please check the name and try again.

Pinging <vm1-ip-address> with 32 bytes of data:
Reply from <vm1-ip-address>: bytes=32 time=1ms TTL=127
Reply from <vm1-ip-address>: bytes=32 time<1ms TTL=127
Reply from <vm1-ip-address>: bytes=32 time=2ms TTL=127
Reply from <vm1-ip-address>: bytes=32 time<1ms TTL=127

Ping statistics for <vm1-ip-address>:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 2ms, Average = 0ms

我与 IT 部门讨论了这个问题,在能够向他们证明问题不是出在客户端电脑上之后,我可以选择忍受这个问题,修改每个客户端的主机文件,或者提交一张票据让 IT 部门的某个人手动向 DNS 服务器添加一个条目,映射每台有问题的机器的主机名/IP 地址。

最后的行动方案可能会解决当前的问题,但它不会让我更接近了解问题的原因,也不会让我在下次新的虚拟机遇到此问题时减少对 IT 的依赖。

我尝试解决该问题,包括在每台有问题的机器上执行以下操作:

  1. 运行 ipconfig /registerdns

  2. 运行定期调用 ipconfig /registerdns 的批处理脚本

  3. 更改机器的名称,让其加入工作组,重新启动机器,将机器名称改回原来的名称,让其重新加入本地域,重新启动机器。

  4. 在以下注册表项中添加DWORD名为“ DisabledComponents”且值为的条目:(以防机器错误地注册其 IPv6 地址而不是其 IPv4 地址)0x20HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\

关于步骤 3,当我让机器重新加入本地域时,我收到消息“将此计算机的主域 DNS 名称更改为“”失败。”

根据这篇文章http://support.microsoft.com/kb/2018583导致该消息的原因可能是以下之一:

  1. 已在所加入计算机的 IPv4 属性中禁用“禁用 TCP/IP 上的 NetBIOS”复选框
  2. 客户端与在目标域中为加入操作提供服务的辅助 DC 之间的 UDP 端口 137 上的连接被阻止*
  3. TCP/IPv4 协议已被禁用,以便加入的客户端或 LDAP BIND 所针对的目标域中的 DC 仅运行 TCP/IPv6。

我确认这些都不是事实。我还确认机器的防火墙正在使用域的配置文件,并且具有有关 UPD 端口 137 的以下规则:

域入站已启用:

  • -文件和打印机共享 (NB-Name-In),本地 UPD 端口 137
  • -NetBIOS 名称服务,本地 UPD 端口 137 + 特定远程地址(我猜是域的防火墙策略设置的)

域入站已禁用:

  • -网络发现(NB-Name-In),本地 UPD 端口 137

域出站已启用:

  • -文件和打印机共享 (NB-Name-Out),远程 UPD 端口 137

域出站已禁用:

  • -网络发现 (NB-Name-Out),远程 UPD 端口 137

再次,Windows Server 计算机(DNS 服务器始终能够解析其主机名的计算机)的防火墙设置也设置得类似。

我链接到的知识库文章最终承认,只要NetpCompleteOfflineDomainJoin SUCCESS: Requested a reboot :0x0出现在中C:\Windows\debug\NetSetup.LOG,错误消息就只不过是令人烦恼而已。

故事讲得更详细一些,为了确定问题出在 Windows 7 VM 的配置方式还是 DNS 服务器上,我设置了自己的 DNS 服务器,并让客户端 PC 指向该 DNS 服务器,令我惊讶的是,我的 DNS 服务器从未无法解析任何 VM 的主机名。唉,当我与 IT 部门分享这个好消息时,他们告诉我要删除它,因为它可能会搞乱公司的 DNS 服务器。

除了不再依赖 DNS 服务器来解析 Windows 7 机器的主机名(我在这里假设问题与受影响的机器都运行 Windows 7 有关),我还能做些什么来解决当前问题并防止将来出现类似的问题?

答案1

如果有问题的机器不是 DNS 服务器信任的 Active Directory 域的成员,那么它们将没有权限将条目插入 DNS 服务器。

如果您公司的 DNS 服务器托管 .local 域,那么它将干扰 Windows 7 等操作系统可用的 mDNS/DNS-SD 的 zerconf 功能。

问题Windows DNS 有时无法获取我的虚拟机的主机名类似,虽然问题机器不是基于Windows的,但可能会涉及类似的问题。

相关内容