Я привязываю FreeNAS к AD для входа студентов в SMB. Все работает нормально.
У меня есть сценарий bash, который запускается на FreeNAS для создания страницы index.html, указывающей на подкаталог домашнего каталога каждого учащегося, где они могут размещать готовые проекты кодирования в Интернете для всеобщего просмотра. Это тоже работает.
Сценарий выполняет поиск в AD для каждого пользователя FreeNAS и добавляет их в файл index.html только в том случае, если они являются студентами (т. Е. Членами CN=students
группа):
ldapsearch -Q -LLL cn=[someuser] ObjectCategory:CN=Person memberOf
Вот что самое странное. Примерно в 80% случаев поиск в AD происходит мгновенно. Каждый пятый поиск занимает 75 секунд. Я написал сценарий, чтобы проверить это, и шаблон вполне воспроизводим. Почти всегда каждый 5-й поиск занимает ровно 75 секунд, и не имеет значения, просматриваете ли вы одно и то же имя 5 раз или разные.
Если я сделаю ldapsearch
сразу в командной строке:
ldapsearch -LLL cn=someuser
и делаю это многократно, каждое 5-е повторение медленно. Если я прерву медленный запрос, нажав Ctrl-C, в следующий раз снова быстро.
Я не использую сервер AD, и администратор AD не знает, почему это происходит. Какие-нибудь подсказки?
DNS настроен правильно в обоих направлениях AFAIK - или, по крайней мере, все остальное в настройке, похоже, работает (пользователи могут входить в FreeNAS, используя учетные данные AD, и это происходит достаточно быстро). Все часы тоже синхронизированы.
Пятый запрос, вероятно, направлен к контроллеру домена на другом сайте (см. https://technet.microsoft.com/en-us/library/cc782048%28v=ws.10%29.aspx, это для 2003 г., но все еще актуально).
С таким запросом:
ldapsearch -h domaincontroller -LLL -s sub -x -W -b cn=configuration,dc=your,dc=domain -Z -D "cn=youruser,ou=container,dc=your,dc=domain" "objectclass=subnet" cn siteobject
Enter LDAP Password:
dn: CN=172.20.4.0/24,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain
cn: 172.20.4.0/24
siteObject: CN=Default-First-Site-Name,CN=Sites,CN=Configuration,dc=your,dc=domain
dn: CN=172.20.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain
cn: 172.20.0.0/16
siteObject: CN=Default-First-Site-Name,CN=Sites,CN=Configuration,dc=your,dc=domain
dn: CN=172.30.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain
cn: 172.30.0.0/16
siteObject: CN=London,CN=Sites,CN=Configuration,dc=your,dc=domain
dn: CN=172.19.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain
cn: 172.19.0.0/16
siteObject: CN=Default-First-Site-Name,CN=Sites,CN=Configuration,dc=your,dc=domain
dn: CN=172.18.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain
cn: 172.18.0.0/16
siteObject: CN=Default-First-Site-Name,CN=Sites,CN=Configuration,dc=your,dc=domain
dn: CN=172.21.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain
cn: 172.21.0.0/16
siteObject: CN=New York,CN=Sites,CN=Configuration,dc=your,dc=domain
dn: CN=172.23.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain
cn: 172.23.0.0/16
siteObject: CN=Default-First-Site-Name,CN=Sites,CN=Configuration,dc=your,dc=domain
dn: CN=172.17.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain
cn: 172.17.0.0/16
siteObject: CN=Default-First-Site-Name,CN=Sites,CN=Configuration,dc=your,dc=domain
dn: CN=172.31.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain
cn: 172.31.0.0/16
siteObject: CN=Default-First-Site-Name,CN=Sites,CN=Configuration,dc=your,dc=domain
вы можете видеть, что в этой сети есть стандартный объект Default-First-Site-Name, а также сайты в Нью-Йорке и Лондоне.
Как только вы узнаете, где находится ваш хост freenas внутри диапазонов IP-адресов сайтов AD, вы можете запросить DNS-серверы для хостов ldap на этом сайте. Для лондонского сайта запрос выглядит следующим образом:
dig -t srv _ldap._tcp.london._sites.your.domain +short
0 100 389 dc05.your.domain.
0 100 389 dc03.your.domain.
0 100 389 dc04.your.domain.
В разделе ответов вы увидите различные хосты ldap для этого сайта. Так что вы можете использовать только эти.
конечно же, один из пяти серверов не отвечал (не знаю, отключен ли он, не существует, или что-то еще ... администратору AD придется с этим разобраться.)
Я переписал скрипт так, чтобы он запрашивал только четыре хороших сервера (каждый раз случайным образом выбирая какой из них), и теперь он выполняется мгновенно!