计算机在错误的站点指向DC

我需要你的帮助。 我已经挣扎了几个月,没有什么我在网上find了帮助我。 问题是,计算机有时会指向不同站点中的不正确的域控制器。 我有两个通过VPN连接的站点: 站点A有两个域控制器, 站点B有一个。 这是我目前的configuration:

网络配置

站点A中的计算机通常连接到SRV-1或SRV-2(他们应该),但是站点B中的计算机很less连接到SRV-3。 站点之间的ADSL连接非常慢,因此连接到错误的站点使得客户端几乎不可用。

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

在SRV-1上有一个WINS服务器,所有的机器都将他们的WINS客户端指向192.168.0.70。 WINSlogging似乎没问题:

WINSlogging在SRV-1上

我也浏览了所有服务器上的DNSlogging,看起来是正确的。 AD网站和服务中的服务器位于正确的位置,并且已经分配了正确的子网 。 在NTDS设置中,所有服务器都相互连接(双向)。

我所做的一些观察:

Site-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 

Site-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 

Site-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 

Site-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。

任何帮助都感激不尽!

Ping没有提供任何有用的信息。 Ping是一个直接的DNS查找,并不代表DC定位器进程的function。

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

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

  1. NSLOOKUP
    set type = srv
    _ldap._tcp.dc._msdcs.domain

这应该返回所有您的域控制器的列表(有logging在DNS中的Alogging/不被DNS助记符过滤)。

  1. 通过对每个DC执行LDAP绑定来构buildfunctionDC的列表。

  2. 首先要回应的DC返回客户端站点,DC所在的站点以及DSClosestFlag(0或1)。

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

    NSLOOKUP
    set type = srv
    _ldap._tcp.sitename._sites.domain

  4. 通过对每个DC执行LDAP绑定来构buildfunctionDC的列表。

  5. 如果没有结果,使用任何functionDC。 (除非“尝试下一个最接近的站点”已启用,默认情况下不是。)。

  6. 如果结果只有一个DC,请使用它。 如果有多个结果,请根据SRV最低优先级号/最高权重号selectDC。

好吧,我明白了。 最后,这是一个networking问题。 不需要对域控制器进行任何更改。 我已经为VPNconfiguration了策略路由,但是我忘了指定如何区分数据包的优先级。 我为局域网内的stream量添加了一个额外的策略路由,并为其指定了DSCP值cs4。 对于隧道路线,我给了CS5。 我对DSCP并不熟悉,但我明白数字越小,路由就越重要(4和5只是随机数)。 下面是我的ZyXEL ZyWall路由器的最终configuration的屏幕截图(我希望你能欣赏Paint art):

在这里输入图像说明

我有点理解为什么这解决了我的问题:现在的主要优先事项是发送数据包到本地networking,并且只有通过VPN后。 我仍然觉得有点困惑。 如果服务器和客户端在不同的networking中,服务器可能没有看到客户端的IP,而是看到其中一台路由器的IP,从而无法做出IP地址属于哪个站点的决定。 我很好奇寻找进一步的解释。

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