DNS 解析在 Web 浏览器中失败,但 nslookup 成功

Dan*_*Dan 10 domain-name-system active-directory windows-7 windows-server-2012

我们是一个拥有 300 个席位的小型组织,具有混合 BYOD 和 Active Directory 环境(Windows Server 2012 标准版、Windows 7 企业版),我们遇到了一个非常奇怪的问题,涉及在我们的域中解析我们组织的域名的非常特定范围的故障- 连接的,公司控制的机器。出于本次讨论的目的,我将使用company.com而不是我们的域名。

背景:

  • Active Directory 域控制器位于 172.16.1.3
  • AD/DC 机器也在运行 DHCP、DNS 和 HTTP (IIS)
  • 我们的组织网站company.comsubdomain.company.com由 AD/DC 机器上的 IIS 托管
  • 我们有一个拆分 DNS 方案,其中 AD/DC 服务器用于内部 DNS 解析,但不同的异地服务器为公共查询提供 DNS 解析
  • company.comsubdomain.company.com对应的IP地址是我们网络边缘防火墙使用的公网IP地址(AD/DC DNS服务器和异地DNS服务器)
  • 防火墙已正确配置为 NAT 以将其在其公共 IP 地址上收到的 HTTP 和 HTTPS 请求传递到 AD/DC 服务器的内部 IP,并反映

场景一:

  • 加入域的 Windows 7 Enterprise 计算机上的用户直接连接到我们的本地网络,本地地址为 172.16.6.100 /16,由 DHCP 服务器发布。
  • DNS 服务器条目由 DHCP (172.16.1.3) 提供
  • 该用户可以访问位于 company.com 和 subdomain.company.com 的网站
  • 编辑: nslookup 已在此场景中运行,并从内部 DNS 服务器 (172.16.1.3) 正确返回正确的 DNS 记录

场景2:

  • 同一个加入域的 Windows 7 Enterprise 机器上的同一个用户回家并使用他们的住宅 ISP 连接到 Internet
  • 客户端计算机的 IP 和 DNS 服务器条目由 DHCP 提供
  • 此用户可以访问任何互联网资源,例如 google.com
  • 此用户无法访问company.comsubdomain.company.com网站(返回“主机未解析”错误)
  • 当该用户运行的NSLOOKUP company.com他们不要接受由DNS提供了正确的公共IP地址
  • 对IP地址的HTTP/HTTPS请求成功,服务器正确返回网页
  • 此问题在所有网络浏览器中普遍存在
  • 使用tracert company.com返回“无法解析目标系统名称”
  • 使用ping company.com返回“找不到主机 company.com”
  • 在请求失败之前/期间在客户端上运行 Wireshark 时,客户端计算机不会发送任何数据包(用于 DNS 解析或初始 HTTP/ping/tracert 请求)
  • 重新启动 DNS 客户端服务不能解决问题
  • 停止 DNS 客户端服务不能解决问题
  • 使用ipconfig /flushdns不能解决这个问题
  • 使用route /f不能解决这个问题
  • 使用netsh int ip reset重置网络连接无法解决此问题
  • 编辑: nslookup 已在此场景中运行,并从用户使用的网络的 DHCP 设置指定的 DNS 服务器正确返回正确的 DNS 记录

场景3:

  • 当连接到我们的本地网络时,个人(未加入域)Windows 7 Professional 计算机上的同一用户能够访问company.comsubdomain.company.com 上的网站
  • 编辑: nslookup 已在此场景中运行,并从内部 DNS 服务器 (172.16.1.3) 正确返回正确的 DNS 记录

场景 4:

  • 个人(未加入域)Windows 7 Professional 计算机上的同一用户在连接其家庭网络时能够访问company.comsubdomain.company.com 上的网站
  • 编辑: nslookup 已在此场景中运行,并从用户使用的网络的 DHCP 设置指定的 DNS 服务器正确返回正确的 DNS 记录

最后说明:

这个问题似乎普遍影响到所有公司拥有的计算机。我们正在为所有公司拥有的计算机使用一个通用的系统映像,该映像刚刚在 8 月份加载。我一直在互联网上搜索可能的解决方案,但到目前为止一无所获——我非常感谢您提出的任何建议或建议。

Rob*_*ash 2

加入域的计算机将寻找其 DC,而不仅仅是进行基于 DNS 的查找。由于域名与公共网站相同,因此他们将搜索 SRV 记录来告诉他们如何访问 DC 并获取域名信息。由于远程网络中没有 DC,因此他们无法使用普通的 AD 感知 Windows 部件解析此名称。

当您使用 ping 或(几乎)任何 Windows 应用程序时,它会使用完整的 Windows IP 堆栈,包括与 AD 通信的部分。而 NSLookup 实际上只是执行 DNS 查询。您已使用 Wireshark 跟踪验证了这一点,当尝试访问 company.com 时,Windows 不会执行任何查找,但 nslookup 显示正确的 DNS 查找。这就是为什么您无法通过 ping 或 Web 浏览器解析域,但 nslookup 没问题。

第一部分的解决方案是使用 www.company.com 来访问内部和外部网站,以便客户完全忽略寻找 DC。

第二部分的解决方案比较棘手,具体取决于 subdomain.company.com 在内部和外部所指的内容。DC 是否有子域的 DNS 记录,或者这些请求只是发送到外部 DNS 服务器吗?如果它确实有 DNS 记录,该记录指向哪里?