您如何确定 Windows 机器如何解析共享名称?

Ben*_*kes 6 domain-name-system windows dfs netbios wins

在将域从一个林迁移到另一个林时,我们遇到了一些奇怪的问题。我们尝试关闭旧域的域控制器,突然之间,我们曾经可以访问的共享在另一个域上,在它自己的林中消失了。

我在理解 Windows 客户端如何解析共享时遇到问题。即当我输入\XXXXXX\yyy\zzzz 时,Windows 究竟做了什么来确定要连接到哪个服务器?请注意,我们曾经在旧域上也有一个 DFS 共享,因此它起到了一定的作用。

是否有任何工具可以帮助您跟踪 Windows 正在做什么?即如果我给它路径 \XXXXXX\yyy\zzzz 检查本地 NETBIOS 中的名称,则会记录类似这样的内容。在netbios中没有找到名称。检查 DFS 缓存...在 DFS 缓存中找到,使用 \computer.domain.com\share for \XXXXX\yyy\zzzz

这是整个故事。我们正在从一个域 D1.xxxx.com 迁移到另一个林中的 D2.yyyy.com。我们建立了跨域信任,除 DFS 外,所有内容都已移动。由于我们遇到的所有麻烦,我们决定停止在域 2 中使用 DFS。相反,我们将在 D2 中拥有一个名为 D1 的主机,它将为整个 DFS 提供服务。我们已经设置并复制了所有文件。然后我们关闭 D1 的所有域控制器并删除信任。现在,当我键入 \D1\root\things 时,我希望 D2 域上的计算机转到 D1.yyyy.com 上名为 root 的共享。出于某种原因,这似乎没有发生,我不知道为什么。我尝试在客户端机器上使用 dfsutil /pkflush ,但仍然没有解决。

我现在想要做的是在尝试连接到 \D1\root\things 时准确查看我的客户端计算机正在做什么。看看网络上发生了什么也无济于事。我知道(或相当肯定)它仍在尝试访问旧的 DFS 共享。

小智 7

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

好的例子

服务器名称 = 服务器

域名 = dom.local

服务器的 FQDN = server.dom.local

你的电脑的 DNS 后缀 = dom.local

共享路径有两个部分。服务器或主机名“\servername”和共享本身“share1” 首先让我们以 ping 为例,看看当 windows 将名称解析为 IP 时会发生什么。

你跑去ping server获取IP。此时,您的 PC 查看其 TCP/IP 配置并获取 DNS 服务器的 IP。然后它查询此 DNS 服务器以解析名称...或者它可能使用 WINS(如下所述)。

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

您的电脑将始终首先尝试将此名称解析为 DNS 名称。如果失败,它将尝试查询 WINS 服务器(如果本地 PC 已配置了一个),如果失败,它将进行 NetBIOS 广播。它总是按这个顺序。

现在注意我上面提到的DNS后缀。如果那是 dom.local 以外的其他任何东西,这个 ping 就会失败。这是因为当我 ping 它时,我没有输入 server.dom.local 的 FQDN,而是使用它的一部分只是“服务器”。Windows 在后台所做的是在它后面加上 DNS 后缀(这就是它的用途)。因此,当您键入 ping server 时,您实际上会看到 Windows 显示“ping server.dom.local”,注意它是 FQDN。希望您可以通过 DNS 查询了解我的目标。由于您有两个独立的域,因此 DNS 后缀可能不同。例如,如果我 ping 服务器时我的 dns 后缀是 dom2.local,它会附加该后缀并尝试 ping server.dom2.local。再次混淆来自事实上它没有 t 实际上在屏幕上说它(因为它失败了)所以人们认为它正在查询 server.dom.local 而实际上它不是。一旦这通过 DNS 失败,它就会移动到 WINS 然后是 NetBIOS。一旦通过其他方式解决,实际显示的是“ping server”。注意到两者之间的细微差别了吗?当查询使用 DNS 时,它会说“ping server.dom.local”,当它失败并使用 WINS 或 NetBIOS 解析时,它会说“ping server”。这是您应该测试的内容,以查看它是否通过 DNS 正确解析名称。大多数人 ping 名称并得到回复并认为 DNS 正在工作,因为它解析了名称。他们从不注意它没有解析 FQDN 的事实,尽管这意味着 DNS 实际上失败了。使用两个域,这非常重要,如果您不保持警惕,很容易从名称解析的角度造成严重破坏。大多数人幸福地没有意识到这一点,因为他们只有一个域。他们永远不需要知道 DNS 后缀的用途。

此时您应该知道您的共享所在的 IP。这同样适用于 DFS 树。Ping DFS 名称和返回的 IP 会告诉您 DFS 根目录在哪里。暂时忘记 DFS。回到 PC 上...如果您的 DNS 查询解析了机器名称,那么这就是您的共享所在的位置,简单明了。

如果查询是针对 DFS 名称空间,请定位服务器并加载 DFS 管理控制台。可以说它是\dom.local\share1。在本例中,您 ping dom.local 并发现它解析为 192.168.5.4。您对此进行 RDP 并加载 DFS 管理器,现在本地化“share1”。DFS 管理器会告诉您它是在本地服务器上还是重定向到另一台服务器。从那里,您只需按照面包屑导航,直到到达实际服务器,然后再进行共享。

现在有意义吗?

好的,为了回答您的 mroe 附加详细信息……我认为您没有正确阅读我的帖子并怀疑发生了什么……这里是。

还记得我在上面说过 DNS 域后缀以及为什么它们在转移域时如此重要吗???假设您尝试连接到共享的这台 PC 仍然具有旧域的 dns 后缀,即 xxxx.com。当您键入或 ping D1 时,它会在末尾附加此 DNS 后缀。所以它真正连接的是 d1.xxxx.com...当你删除你的 xxxx.com 域时,它不再存在。尝试连接到 \d1。yyyy.com \root\things 而不仅仅是 \d1\root\things。让我知道这是否有效,然后我们可以继续