![Windows DNS 有时无法获取我的虚拟机的主机名](https://linux22.com/image/1403132/Windows%20DNS%20%E6%9C%89%E6%97%B6%E6%97%A0%E6%B3%95%E8%8E%B7%E5%8F%96%E6%88%91%E7%9A%84%E8%99%9A%E6%8B%9F%E6%9C%BA%E7%9A%84%E4%B8%BB%E6%9C%BA%E5%90%8D.png)
RE:未解析的主机名/未找到主机/主机未知
VM 是在 Win8 下运行 Ubuntu 的 VirtualBox,使用桥接网络。
它几乎总是能够将自身注册到我公司的 Windows DNS 服务器,这样我就可以ping myvm1
从我的 DOS 或dig myvm1.mycompany.com
Ubuntu 内部进行注册。但有时我无法做到这两点。我会收到主机未知错误。Ubuntu VM 始终相同,所以我认为是 Windows DNS 服务器导致了问题。
我自己寻找解决方案时,却发现一个未解答的问题,其症状与我的完全相同——我公司的 DNS 服务器有时无法解析某些虚拟机的主机名,可能的原因有哪些?
有什么想法可以解决或排除故障吗?
PS. 将 Ubuntu/Linux 添加到标签中 - 无论如何知道 Ubuntu VM 将自身注册到哪个 DNS 服务器?如何强制重新注册我的 Ubuntu 的 dhcp/dns?
答案1
这是一个可以向各个方向延伸的问题,因为有很多方法可以进行。
首先,Windows 中的名称解析不仅仅使用 DNS。用于查看 DNS 是否可以解析名称的命令是 nslookup,因此您可以使用它nslookup myvm1.mycompany.com
来查看该域的 DNS 中是否存在该名称。
其次,ping myvm1
从机器执行操作将不仅仅使用 DNS 进行名称解析,还可能使用 NetBIOS、WINS 或某些自动发现查询,如多播 DNS (mDNS) 或 DNS 自我发现 (DNS-SD),Ubuntu 通过 avahi 守护程序实现这些。即使它正在执行 DNS 查找,也可能使用的不仅仅是 mycompany.com DNS 搜索域。
鉴于它在大多数情况下都有效,我猜测名称 myvm1 与 avahi 一起使用,其中包含 mDNS 或 DNS-SD,Windows 名称解析器在您运行 ping 时会查询这些名称。这些 zeroconf 名称解析协议不使用实际的 DNS 服务器,因此不需要向 AD 集成 DNS 服务器进行身份验证。根据我的经验,zeroconf mDNS/DNS-SD 协议并非 100% 可靠,这进一步让我相信这些协议正在您的案例中使用,因为它与您的情况相符。
你可以从这里往多个方向走
- 确保 avahi 正常运行
- 如果 mycompany.com 是由 Active Directory 运行的典型 Windows 域,则需要计算机成为域的一部分,以便将自动 DNS 更新推送到服务器。您可以手动将 DNS 输入 mycompany.com 域,然后
- 将 ubuntu vm 设置为静态 IP,其本地配置中有固定 IP 或 DHCP 保留。这些是我对解决方案的第一和第二选择。
- 允许对名称 myvm1.mycompany.com 进行不安全的更新
- 将 Ubuntu VM 设为 AD 域的一部分,以便它可以执行经过身份验证的自动 DNS 更新。这可能需要 samba 版本 4 或更高版本。
作为第一步,我会检查
- 检查 Windows 机器上的 DNS 搜索域顺序,查看当您仅输入主机名时它是否正在查看域 mycompany.com。
- 在 Ubuntu VM 上,确保已按照说明为机器设置了完整限定域名 这个如何。