Мне нужна ваша помощь. Я боролся с этим месяцами, и ничего из того, что я нашел в Интернете, мне не помогло. Проблема в том, что компьютеры домена иногда указывают на неправильный контроллер домена на другом сайте. У меня два сайта подключены через VPN: Сайт-А с двумя контроллерами домена и Сайт-B с одним. Вот моя текущая конфигурация:
Компьютеры в Зоне А обычно подключаются к SRV-1 или SRV-2 (как они должны), но компьютеры в Зоне B редко подключаются к SRV-3. Между сайтами очень медленное ADSL-соединение, поэтому подключение к неправильному сайту делает клиента практически непригодным для использования.
Все контроллеры домена также являются серверами DFS. Самым большим недостатком является то, что, хотя клиенты подключаются к неправильному DC, они также подключаются к неправильному серверу DFS и перечисляют только серверы на неправильном сайте как доступные серверы DFS.
На SRV-1 есть WINS-сервер, и все машины указывают своему WINS-клиенту на 192.168.0.70. Записи WINS кажутся нормальными:
Я также просмотрел записи DNS на всех серверах, и они кажутся правильными. Серверы находятся на правильных сайтах в AD Sites and Services, и им были назначены правильные подсети.. Все серверы подключены (двусторонние) друг к другу в настройках NTDS.
Некоторые наблюдения, которые я сделал:
SRV-1 в Зоне A (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
SRV-2 в Зоне A (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
SRV-3 в Зоне B (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 (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 возвращают неверные значения на клиентском ПК.
Забавно то, что он меняется день ото дня, когда клиенты решают указать на себя. Пробовал перезапускать клиентов, не помогает. Я пробовал перезагружать серверы один за другим, без разницы. Ни один из серверов не является многосетевым.
Серверы - это Windows Server 2008 R2 и клиент Win7 Pro / Win10 Pro.
Любая помощь будет высоко ценится!
Хорошо, я разобрался. В конце концов, это была проблема с сетью; в контроллеры домена вносить изменения не требуется. Я уже настроил маршруты политики для VPN, но забыл указать, как расставлять приоритеты для пакетов. Я добавил дополнительный маршрут политики для трафика в локальной сети и присвоил ему значение DSCP cs4. Для маршрутов туннелирования дал cs5. Я не знаком с DSCP, но понял, что чем меньше число, тем важнее маршрут (4 и 5 - это просто случайные числа). Ниже приведен снимок экрана с окончательной конфигурацией моих маршрутизаторов ZyXEL ZyWall (надеюсь, вам понравится Paint):
Я как бы понимаю, почему это решило мою проблему: теперь основной приоритет - отправка пакетов в локальную сеть, и только после этого по VPN. Я все еще нахожу это немного запутанным. Возможно ли, что если сервер и клиент находятся в разных сетях, сервер видит не IP-адрес клиента, а IP-адрес одного из маршрутизаторов, и поэтому не может принять решение о том, какому сайту принадлежит IP-адрес? Мне любопытно найти дальнейшее объяснение.
Спасибо всем, кто мне помогал, очень ценю :)
Ping не предоставляет никакой полезной информации. Ping - это прямой поиск в DNS, который не отражает принцип работы процесса DC Locator.
Вы можете использовать w32tm /query /status /verbose /computer:SRV-3
для подтверждения правильности работы службы времени на SRV-3.
Вероятно, проще всего выполнить захват пакетов, но вы также можете вручную определить, где происходит сбой процесса, смоделировав то, что происходит на клиентском ПК на сайте B.
Это должно вернуть список ВСЕХ ваших контроллеров домена (которые имеют запись A, зарегистрированную в DNS / не фильтруются с помощью DNS Mnemonics).
Составьте список функциональных DC, выполнив привязку LDAP к каждому DC.
Первый ответивший контроллер домена возвращает сайт клиента, сайт, на котором находится контроллер домена, и DSClosestFlag (0 или 1).
Если контроллер домена находится на сайте клиента или DSClosestFlag = 1, или у клиента нет сайта, используйте этот контроллер домена. Если нет, выполните:
nslookup
установить тип = SRV
_ldap._tcp.sitename._sites.domain
Составьте список функциональных DC, выполнив привязку LDAP к каждому DC.
Если ничего не получается, используйте любой исправный DC. (Если не включен параметр «Попробуйте следующий ближайший сайт». По умолчанию это не так.)
Если результаты и только один DC, используйте его. Если результатов несколько, выберите DC на основе номера наименьшего приоритета / наибольшего веса SRV.