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

Многосайтовый Active Directory. Выберите ближайшие DC в приложениях Linux / Not-Microsoft

У меня проблема с использованием ldap на основе Active Directory в многосайтовой среде.

В основном у меня есть несколько разных сред (сайтов), и каждая из них имеет свою собственную выделенную пару серверов контроллеров домена. Каждая пара контроллеров домена общается с парами на других сайтах, чтобы синхронизировать всю информацию.

В каждой среде у меня также есть несколько разных серверов Linux (веб-серверы, серверы приложений и т. Д.), И для целей аутентификации и авторизации они должны связываться с правильными контроллерами домена, которые предназначены для их среды.

Моя проблема в том, что я не могу найти способ указать в конфигурации этих серверов, как связаться с их «ближайшим» контроллером домена.

До сих пор я использовал запись DNS A domain.local который возвращает КАЖДЫЙ контроллер домена в домен; проблема в том, что он также возвращает контроллеры домена не на правильном сайте и поэтому недоступны.

Другой способ, который я подумал, - создать запись CNAME для каждого сайта, которая ссылается на правильные контроллеры домена.

DC-Site1 CNAME to DC1 and DC2
DC-Site2 CNAME to DC3 and DC4
DC-Site3 CNAME to DC5 and DC6
....

Итак, используя запись DC-SiteX.domain.local я могу связаться с правильной парой контроллеров домена на сайте.

Проблема этого решения заключается в том, что мне не нужно вводить код на сервере конфигурации, которому он принадлежит. Мне это не нравится, потому что я могу переместить серверы на другой сайт, и мне нужно не забыть обновить эту конфигурацию.

Как обычно вы справляетесь с этой ситуацией?

У вас есть изящное решение этой проблемы?

Вы правы, использование имени domain.local вернет список всех адресов всех контроллеров домена в домене, но если вы попытаетесь пинговать domain.local (я имею в виду фактическое имя вашего домена), DNS должен вернуть IP-адрес локального контроллер домена.

Я не знаю, действуют ли ваши контроллеры домена также как DNS-серверы, но если это так, установите флажок DNS Server Setting -> Advanced Tab -> Enable netmask ordering checkbox.

Что касается CNAME, вы можете создать несколько CNAME для одного сервера, но не одну CNAME для нескольких серверов, поэтому вам нужно создать две записи A с одинаковым именем, указывающие на разные IP-адреса локальных контроллеров домена. Но в этом случае вам также необходимо убедиться, что в расширенных настройках DNS-сервера у вас активирован роуд-робин, поэтому запросы будут балансироваться между серверами с помощью DNS-сервера.

С уважением, Сергей

Знают ли серверы unix о том, на каком сайте они находятся?

Контроллер AD правильно обновил SRV DNS-записи (делает по умолчанию)?

Если серверу unix известно, что он находится, например, в SITE1.EXAMPLE.ORG, он может запросить контроллер AD, какой сервер LDAP включен на SITE1, с помощью следующего:

ldapsearch -v -H "ldap:///dc%3Dsite1%2Cdc%3Dexample%2Cdc%3Dorg" [...]

в основном это ldapsearch для любого сервера, имеющего LDAP SRV регистрация на SITE1.EXAMPLE.ORG:

host -t SRV _ldap._tcp.site1.example.org.

Это несколько старый пост, но я хотел предложить следующую информацию всем, кто сталкивается с этим. Можно контролировать, какие записи A и SRV динамически регистрируются контроллерами домена и на каких сайтах, а также настраивать вес и приоритет записи SRV. См. Следующую статью Microsoft: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/76bc11f0-8bc2-4d6c-a643-328f479aae1b

Это дает мне правильные записи SRV для контроллеров домена определенного сайта. Был задействован брандмауэр, поэтому полагаться на «IP-адрес клиента» было неэффективно.

инструмент командной строки Windows

nslookup -type=SRV _ldap._tcp.$sitename$._sites.dc._msdcs.$domain.name$

Это ответственность приложения. Любое приложение, которому необходимо интегрироваться с Active Directory, должно соответствовать принципу работы. Это включает в себя приоритизацию используемых контроллеров домена по предпочтениям сайта / местоположения, выбор подходящего работающего контроллера домена и переключение на другой контроллер домена в случае возникновения ошибки.

Другими словами, приложение должно работать так же, как клиентские функции Windows.