计算机指向错误站点的 DC

计算机指向错误站点的 DC

我需要你的帮助。我为此苦苦挣扎了几个月,但网上找不到任何帮助我的方法。问题是,域计算机有时会指向不同站点中的错误域控制器。我有两个通过 VPN 连接的站点:站点-A有两个域控制器和站点-B一个。这是我当前的配置:

网络配置

站点 A 中的计算机通常连接到 SRV-1 或 SRV-2(它们应该如此),但站点 B 中的计算机很少连接到 SRV-3。站点之间的 ADSL 连接非常慢,因此连接到错误的站点会使客户端几乎无法使用。

所有 DC 也是 DFS 服务器。最大的缺点是,当客户端连接到错误的 DC 时,它们也会连接到错误的 DFS 服务器,并且只将错误站点中的服务器列为可用的 DFS 服务器。

SRV-1 上有一个 WINS 服务器,所有计算机都将其 WINS 客户端指向 192.168.0.70。WINS 记录似乎没问题:

SRV-1 上的 WINS 记录

我还检查了所有服务器上的 DNS 记录,它们似乎是正确的。服务器位于 AD 站点和服务中的正确站点,并且已分配正确的子网. 所有服务器在 NTDS 设置中都互相连接(双向)。

我做了一些观察:

站点 A 中的 SRV-1 (192.168.0.0/24):

C:\Users\Administrator>nltest /DCLIST:DOMAIN
Get list of DCs in domain 'DOMAIN' from '\\SRV-1'.
    SRV-1.domain.example.local [PDC]  [DS] Site: Site-A
    SRV-2.domain.example.local        [DS] Site: Site-A
    SRV-3.domain.example.local        [DS] Site: Site-B
The command completed successfully

C:\Users\Administrator>nltest /DSGETSITE
Site-A
The command completed successfully

C:\Users\Administrator>nltest /DSGETDC:DOMAIN
           DC: \\SRV-1
      Address: \\192.168.0.70
     Dom Guid: d8a18714-3272-4075-a5de-b1af522ec649
     Dom Name: DOMAIN
  Forest Name: domain.example.local
 Dc Site Name: Site-A
Our Site Name: Site-A
        Flags: PDC GC DS LDAP KDC TIMESERV WRITABLE DNS_FOREST CLOSE_SITE FULL_SECRET WS
The command completed successfully

C:\Users\Administrator>nltest /dsgetsitecov
Site-A
The command completed successfully

站点 A 中的 SRV-2 (192.168.0.0/24):

C:\Users\Administrator>nltest /DCLIST:DOMAIN
Get list of DCs in domain 'DOMAIN' from '\\SRV-1'.
    SRV-1.domain.example.local [PDC]  [DS] Site: Site-A
    SRV-2.domain.example.local        [DS] Site: Site-A
    SRV-3.domain.example.local        [DS] Site: Site-B
The command completed successfully

C:\Users\Administrator.DOMAIN>nltest /DSGETSITE
Site-A
The command completed successfully

C:\Users\Administrator.DOMAIN>nltest /DSGETDC:DOMAIN
           DC: \\SRV-2
      Address: \\192.168.0.71
     Dom Guid: d8a18714-3272-4075-a5de-b1af522ec649
     Dom Name: DOMAIN
  Forest Name: domain.example.local
 Dc Site Name: Site-A
Our Site Name: Site-A
        Flags: GC DS LDAP KDC TIMESERV WRITABLE DNS_FOREST CLOSE_SITE FULL_SECRET WS
The command completed successfully

C:\Users\Administrator.DOMAIN>nltest /dsgetsitecov
Site-A
The command completed successfully

站点 B 中的 SRV-3 (192.168.2.0/24):

C:\Users\Administrator>nltest /DCLIST:DOMAIN
Get list of DCs in domain 'DOMAIN' from '\\SRV-1'.
    SRV-1.domain.example.local [PDC]  [DS] Site: Site-A
    SRV-2.domain.example.local        [DS] Site: Site-A
    SRV-3.domain.example.local        [DS] Site: Site-B
The command completed successfully

C:\Users\Administrator.DOMAIN>nltest /DSGETSITE
Site-B
The command completed successfully

C:\Users\Administrator.DOMAIN>nltest /DSGETDC:DOMAIN
           DC: \\SRV-3
      Address: \\192.168.2.70
     Dom Guid: d8a18714-3272-4075-a5de-b1af522ec649
     Dom Name: DOMAIN
  Forest Name: domain.example.local
 Dc Site Name: Site-B
Our Site Name: Site-B
        Flags: GC DS LDAP KDC WRITABLE DNS_FOREST CLOSE_SITE FULL_SECRET WS
The command completed successfully

C:\Users\Administrator.DOMAIN>nltest /dsgetsitecov
Site-B
The command completed successfully

站点 B 中的客户端 PC(192.168.2.0/24):

C:\WINDOWS\system32>nltest /DCLIST:DOMAIN
Get list of DCs in domain 'DOMAIN' from '\\SRV-2'.
    SRV-2.domain.example.local        [DS] Site: Site-A
    SRV-1.domain.example.local [PDC]  [DS] Site: Site-A
    SRV-3.domain.example.local        [DS] Site: Site-B
The command completed successfully

C:\WINDOWS\system32>nltest /DSGETSITE
Site-A
The command completed successfully

C:\WINDOWS\system32>nltest /DSGETDC:DOMAIN
           DC: \\SRV-2
      Address: \\192.168.0.71
     Dom Guid: d8a18714-3272-4075-a5de-b1af522ec649
     Dom Name: DOMAIN
  Forest Name: domain.example.local
 Dc Site Name: Site-A
Our Site Name: Site-A
        Flags: GC DS LDAP KDC TIMESERV WRITABLE DNS_FOREST CLOSE_SITE FULL_SECRET WS
The command completed successfully

请注意,DSGETSITE 和 DSGETDC 在客户端 PC 上返回错误的值。

有趣的是,客户端决定指向的位置每天都在变化。我试过重启客户端,但没用。我试过逐个重启服务器,但没什么效果。没有一个服务器是多宿主的。

服务器是Windows Server 2008 R2,客户端是Win7 Pro/Win10 Pro。

任何帮助都感激不尽!

答案1

好吧,我搞明白了。归根结底,这是网络问题;不需要对域控制器进行任何更改。我已经为 VPN 配置了策略路由,但我忘记指定如何对数据包进行优先级排序。我为 LAN 内流量添加了一条额外的策略路由,并为其分配了 DSCP 值 cs4。对于隧道路由,我给了 cs5。我不熟悉 DSCP,但我知道数字越小,路由就越重要(4 和 5 只是随机数)。以下是我在 ZyXEL ZyWall 路由器上的最终配置的屏幕截图(希望您喜欢 Paint art):

在此处输入图片描述

我大概明白了为什么这解决了我的问题:现在主要任务是将数据包发送到本地网络,然后才通过 VPN 发送。我仍然觉得有点困惑。如果服务器和客户端位于不同的网络中,服务器是否可能看不到客户端的 IP,而是看到其中一个路由器的 IP,因此无法确定 IP 地址属于哪个站点?我很想知道进一步的解释。

感谢所有帮助过我的人,我非常感激:)

答案2

Ping 不会提供任何有用的信息。Ping 是直接的 DNS 查找,并不代表 DC Locator 进程如何运行。

您可能需要使用w32tm /query /status /verbose /computer:SRV-3它来确认 SRV-3 上的时间服务是否正常运行。

进行数据包捕获可能是最简单的方法,但是您也可以通过模拟站点 B 中客户端 PC 上发生的情况来手动隔离流程失败的位置。

  1. nslookup
    设置类型=srv
    _ldap._tcp.dc._msdcs.domain

这应该返回所有域控制器的列表(在 DNS 中注册了 A 记录/未被 DNS 助记符过滤)。

  1. 通过对每个 DC 执行 LDAP 绑定来构建功能 DC 列表。

  2. 第一个响应的 DC 返回客户端站点、DC 所在的站点和 DSClosestFlag(0 或 1)。

  3. 如果 DC 位于客户端站点或 DSClosestFlag = 1 或客户端没有站点,则使用该 DC。如果不是,则执行:

    nslookup
    设置类型 = srv
    _ldap._tcp.sitename._sites.domain

  4. 通过对每个 DC 执行 LDAP 绑定来构建功能 DC 列表。

  5. 如果没有结果,请使用任何可运行的 DC。(除非启用了“尝试下一个最近的站点”。默认情况下未启用。)

  6. 如果结果只有一个 DC,则使用该 DC。如果有多个结果,则根据 SRV 最低优先级数/最高权重数选择 DC。

相关内容