你如何找出一台Windows机器如何解决共享名称?

从一个森林迁移到另一个森林时,我们遇到了一些奇怪的问题。 我们尝试closures旧域名的域控制器,突然之间,我们曾经访问过的另一个域名上的自己的森林消失了。

我在理解Windows客户端如何parsing共享时遇到问题。 即当我input\ XXXXXX \ yyy \ zzzz时,Windows究竟要做什么才能确定要连接的服务器? 请注意,我们曾经在旧域上拥有一个DFS共享,所以这也是其中的一部分。

有什么工具可以帮助你追踪Windows正在做什么? 即,如果我给它的path\ XXXXXX \ yyy \ zzzzlogging这样的事情在本地NETBIOS中检查名称。 没有在netbios中find名称。 检查DFScaching…在DFScaching中find\ computer.domain.com \ share for \ XXXXX \ yyy \ zzzz

这是整个故事。 我们正在另一个森林中从一个域D1.xxxx.com迁移到D2.yyyy.com。 我们有一个跨域信任的地方,除了DFS,一切都已经移动。 我们决定停止在域2中使用DFS,因为我们遇到了所有的麻烦。 相反,我们将在D2中有一个名为D1的主机,它将服务于整个DFS。 我们已经设置并复制了所有的文件。 然后,我们closures所有域控制器的D1,并删除信任。 现在,当我input\ D1 \ root \ things时,我希望D2域上的机器可以进入D1.yyyy.com上名为root的共享。 由于某种原因,似乎没有发生,我不明白为什么。 我尝试在客户端机器上使用dfsutil / pkflush,但仍然没有处理。

我现在想要做的是准确地看到我的客户端机器在尝试连接到\ D1 \ root \ things时正在做什么。 看到networking上发生的事情没有帮助。 我知道(或者相当肯定),它仍然在尝试去旧的DFS份额。

您应该问的问题是Windows如何parsing计算机或DFS名称。

好的一个例子

Servername =服务器

域名= dom.local

服务器的FQDN = server.dom.local

您的pc = dom.local的DNS后缀

共享path有两部分。 服务器或主机名“\ servername”和共享本身“share1”首先让我们来看看当windows使用pingparsing名称为IP时会发生什么情况。

你运行ping server来获取IP。 此时,您的PC将查看其TCP / IPconfiguration并获取DNS服务器的IP。 然后,它查询这个DNS服务器来parsing名称…或者它可能使用WINS(下面解释)。

很多人现在认为“哦,这很容易,它会查询DNS服务器,我知道这是明显的”。 不是这样! 它并不总是查询DNS服务器,这是人们感到困惑的地方。 这是真正发生的事情:

您的电脑将总是尝试解决这个名字为DNS名称。 如果失败,它将尝试查询WINS服务器(如果本地PC已经configuration了一个),如果失败则会执行NetBIOS广播。 它总是按这个顺序。

现在请注意上面提到的DNS后缀。 如果这是除了dom.local以外的其他东西,这个ping将会失败。 这是因为当我拼写时,我没有键入server.dom.local的FQDN,而是使用它的一部分,只是“服务器”。 Windows在后台执行的操作是使用DNS后缀(这是它的作用)。 所以,当你键入ping服务器时,你会看到windows然后说“pinging server.dom.local”,注意它是FQDN。 希望你能看到我在这里与DNS查询。 由于您有两个单独的域,DNS后缀可能会有所不同。 如果例如我的dns后缀是dom2.local当我ping服务器它会追加它的后缀和TRY来ping server.dom2.local。 再次混淆来自事实上它并没有实际上在屏幕上说(因为它失败),所以人们认为它是查询server.dom.local,实际上是不是。 一旦这个失败通过DNS它移动到WINS然后NetBIOS。 一旦通过其他方式解决,实际显示的是“ping服务器”。 注意两者之间的细微差别? 当一个查询与DNS协同工作时,它会说“pinging server.dom.local”,当它失败并解决使用WINS或NetBIOS,而不是说“ping服务器”。 这是你应该testing的东西,看看它是否通过DNS正确parsing名称。 大多数人都能ping通这个名字并得到回复,并且认为DNS正在工作,因为它parsing了名字。 他们从来没有注意到它没有解决FQDN的事实,尽pipe这意味着DNS实际上失败了。 有两个域在这个非常重要,如果你不警惕,很容易从名称parsing的angular度来破坏。 大多数人都没有意识到这一点,因为他们只有一个域名。 他们永远不需要知道DNS后缀是什么。

现在你应该知道你的份额是多less。 与DFS树完全相同。 Ping DFS名称和返回的IP告诉你DFS根目录在哪里。 暂时忘掉DFS。 回到个人电脑的…如果你的DNS查询解决了机器名,那么这是你的份额,简单明了。

如果查询是针对DFS名称空间的,请find服务器并加载DFSpipe理控制台。 可以说这是\ dom.local \ share1。 在这个例子中,你ping了dom.local,发现它parsing为192.168.5.4。 您RDP到此并加载DFSpipe理器,现在localte“share1”。 DFSpipe理器会告诉你它是在本地服务器还是redirect到另一台服务器。 从那里你只要按照面包屑,直到你到达实际的服务器,然后再分享。

现在有道理?

好吧,回答你的细节问题,我不认为你正确地阅读我的文章,并怀疑发生了什么事情。

还记得我上面说的DNS域名后缀,以及为什么他们是如此重要的时候传递域? 假设您试图连接到共享的这台PC仍然具有xxxx.com旧域的dns后缀。 当您键入或ping D1时,会在末尾添加此DNS后缀。 所以它真正连接到的是d1.xxxx.com …当你放弃你的xxxx.com域时,这个不再存在。 尝试连接到\ d1。 yyyy.com \ root \的东西,而不仅仅是\ d1 \ root \的东西。 让我知道如果这个作品,那么我们可以继续

我相信在这种特殊情况下,像Wireshark这样的东西可能会派上用场。 它实际上也显示了DNS查询。