在Web浏览器中DNSparsing失败,但nslookup成功

我们是一个拥有混合BYOD和Active Directory环境(Windows Server 2012 Standard,Windows 7 Enterprise)的300人的小型组织,我们遇到了一个非常奇怪的问题,涉及非常具体的失败问题,以解决我们组织的域名问题join了公司控制的机器。 为了讨论的目的,我将使用company.com而不是我们的域名。

背景:

  • Active Directory域控制器位于172.16.1.3
  • AD / DC机器也运行DHCP,DNS和HTTP(IIS)
  • 我们在company.comsubdomain.company.com的组织网站由AD / DC机器上的IIS托pipe
  • 我们有一个拆分DNSscheme,其中AD / DC服务器用于内部DNSparsing,但另一个异地服务器为公共查询提供DNSparsing
  • company.comsubdomain.company.com对应的IP地址是我们networking边缘的防火墙所使用的公共IP地址(AD / DC DNS服务器和非本地DNS服务器)
  • 防火墙已正确configuration为使NAT通过其公有IP地址收到的HTTP和HTTPS请求传递到AD / DC服务器的内部IP

情况1:

  • join域的Windows 7 Enterprise计算机上的用户直接连接到本地networking,本地地址为DHCP服务器发布的本地地址172.16.6.100/16。
  • DNS服务器条目由DHCP(172.16.1.3)
  • 此用户可以访问在company.com和subdomain.company.com上托pipe的网站
  • 编辑: NSLOOKUP已经在这种情况下运行,并正确地返回从内部DNS服务器(172.16.1.3)正确的DNSlogging

情景2:

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

情景3:

  • 个人(未join域)的Windows 7 Professional计算机上的这个用户可以在连接到本地networking时访问company.comsubdomain.company.com上的网站
  • 编辑: NSLOOKUP已经在这种情况下运行,并正确地返回从内部DNS服务器(172.16.1.3)正确的DNSlogging

场景4:

  • 个人(未join域)的Windows 7 Professional计算机上的这个用户在连接到他们的家庭networking时能够访问company.comsubdomain.company.com上的网站
  • 编辑: NSLOOKUP已经在这种情况下运行,并正确地返回从用户使用的networking的DHCP设置指定的DNS服务器正确的DNSlogging

最后说明:

这个问题似乎被广泛地影响到所有公司拥有的计算机。 我们正在为所有公司拥有的计算机使用一个共同的系统映像,这些计算机在八月份刚装载完毕。 我一直在网上搜寻可能的解决scheme,到目前为止空手而来 – 我真的很感激你的build议或build议。

join计算机的域将会寻找他们的DC,而不仅仅是做一个基于DNS的查找。 由于该域与公共网站相同,因此他们将searchSRVlogging以告诉他们如何到达DC并获取域信息。 由于远程networking中没有DC,因此无法使用正常的AD感知窗口部件来parsing此名称。

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

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

第二部分的解决scheme是棘手的,取决于subdomain.company.com在内部和外部引用的内容。 DC是否具有子域的DNSlogging,还是仅发送给外部DNS服务器的请求? 如果它有一个DNSlogging,该logging点在哪里?

我会检查机器上的HOSTS文件( http://en.wikipedia.org/wiki/Hosts_%28file%29#Location_in_the_file_system )是否包含您正在尝试访问的主机的任何条目。 我认为NSLOOKUP工具绕过主机文件,但networking浏览器不会。

我也会检查你没有在networking浏览器中configuration代理,因为某些types的代理也可以parsingDNS。

我也会试着用IE(iexplore -extoff)或Firefox(按住shift键或“firefox -safe-mode”)的方式来运行浏览器的“安全模式”(即禁用所有插件和插件)。

理想情况下,尽可能使用其他networking浏览器来缩小它是networking浏览器还是操作系统。

那么,如果我还没有到达任何地方,我会检查什么服务绑定到networking适配器(疯狂的防火墙与特定的规则阻碍?)

最后,这是越来越不可能的,但NSLOOKUP将追加计算机或连接特定的域名到查询自动。 例如,我的路由器将域名设置为“路由器”,所以任何类似“matthew”的nslookup实际上都会在DNS中search“matthew.router”,这可能是因为networking浏览器没有这样做。如你所说,捕捉它听起来不像这是你的问题..但是,以防万一你错过了在数据包捕获或您的捕获环境是不正确的:-)。

这些是我会尝试的,希望这也能帮助你:-)。