Назад | Перейти на главную страницу

Компьютеры указывают на DC не на том сайте

Мне нужна ваша помощь. Я боролся с этим месяцами, и ничего из того, что я нашел в Интернете, мне не помогло. Проблема в том, что компьютеры домена иногда указывают на неправильный контроллер домена на другом сайте. У меня два сайта подключены через VPN: Сайт-А с двумя контроллерами домена и Сайт-B с одним. Вот моя текущая конфигурация:

Компьютеры в Зоне А обычно подключаются к SRV-1 или SRV-2 (как они должны), но компьютеры в Зоне B редко подключаются к SRV-3. Между сайтами очень медленное ADSL-соединение, поэтому подключение к неправильному сайту делает клиента практически непригодным для использования.

Все контроллеры домена также являются серверами DFS. Самым большим недостатком является то, что, хотя клиенты подключаются к неправильному DC, они также подключаются к неправильному серверу DFS и перечисляют только серверы на неправильном сайте как доступные серверы DFS.

На SRV-1 есть WINS-сервер, и все машины указывают своему WINS-клиенту на 192.168.0.70. Записи WINS кажутся нормальными:

WINS записи на SRV-1

Я также просмотрел записи 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.

  1. nslookup
    установить тип = SRV
    _ldap._tcp.dc._msdcs.domain

Это должно вернуть список ВСЕХ ваших контроллеров домена (которые имеют запись A, зарегистрированную в DNS / не фильтруются с помощью DNS Mnemonics).

  1. Составьте список функциональных DC, выполнив привязку LDAP к каждому DC.

  2. Первый ответивший контроллер домена возвращает сайт клиента, сайт, на котором находится контроллер домена, и DSClosestFlag (0 или 1).

  3. Если контроллер домена находится на сайте клиента или DSClosestFlag = 1, или у клиента нет сайта, используйте этот контроллер домена. Если нет, выполните:

    nslookup
    установить тип = SRV
    _ldap._tcp.sitename._sites.domain

  4. Составьте список функциональных DC, выполнив привязку LDAP к каждому DC.

  5. Если ничего не получается, используйте любой исправный DC. (Если не включен параметр «Попробуйте следующий ближайший сайт». По умолчанию это не так.)

  6. Если результаты и только один DC, используйте его. Если результатов несколько, выберите DC на основе номера наименьшего приоритета / наибольшего веса SRV.