Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается проблема, в которой новая настройка сеанса для служб LDAP занимает больше времени, чем ожидалось, если она предназначена для имен узлов.
Исходный номер базы знаний: 4559609
Симптомы
Запросы протокола LDAP, которые целевые имена узлов случайным образом занимают больше времени, чем ожидалось, чтобы ответить.
Кроме того, события DNS-клиента, такие как следующие, могут быть зарегистрированы в журнале событий:
Log Name: System
Источник: Microsoft-Windows-DNS-Client
Идентификатор события: 1014
Уровень: предупреждение
Пользователь: сетевая служба
Описание.
Разрешение имен для имени _ldap._tcp.<site>._sites.<время ожидания имени> истекло после того, как ни один из настроенных DNS-серверов не ответил.
Примечание.
В этой записи <журнала параметр имени> может быть любым из следующих:
- Доменное имя NETBIOS
- Имя узла контроллера домена
- Полное доменное имя контроллера домена DNS
Эта проблема вызывает несколько проблем, влияющих на администраторов, пользователей и приложений. Эти проблемы включают в себя, но не ограничиваются следующими:
- Подключение LDAP к контроллерам домена Windows Server 2008 R2 или более поздней версии занимает около шести секунд. Те же подключения к компьютерам Windows Server 2003 или Windows Server 2008 обычно занимают менее одной секунды. При этом последующие операции LDAP, такие как поиск привязки и LDAP, не будут иметь дополнительной задержки после первоначального подключения LDAP.
- Команда LDIFDE.EXE медленно работает независимо от того, используется ли параметр /Sparameter.
- Скрипт проверки работоспособности (AD_General_Response.vbs) пакета управления Microsoft System Center Active Directory (SCOM ADMP) работает медленно.
- Microsoft Пользователи и компьютеры Active Directory (ADUC) медленно запускается или замедляется, чтобы открыть контейнеры подразделений. Расширения в оснастке Пользователи и компьютеры Active Directory DSA. MSC использует полное доменное имя домена в качестве доменного имени.
- Расширения Центра администрирования Microsoft Active Directory (ADAC) в Центре администрирования Active Directory используют имя компьютера DC FQDN в качестве доменного имени.
- Консоль управления групповыми политиками Майкрософт (GPMC) не использует флаги разрешения имен.
- Скрипты Visual Basic (VBS), которые выполняют вызовы LDAP, ссылающиеся на полное DNS-имя контроллера домена, медленно выполняются.
- платформа .NET Framework приложения, использующие System.DirectoryServices и System.DirectoryServices.Protocols могут возникать задержки при создании сеансов сервера.
Причина
Начиная с Windows 7 и Windows Server 2008 R2, Windows представила изменение поведения подстановки имен для устранения двух предыдущих сценариев проблем:
- Клиенты LDAP возвращаются к NTLM всякий раз, когда доменное имя NetBIOS предоставляется в качестве имени узла в подключении LDAP.
- Клиенты LDAP не подключаются к контроллеру домена в домене, если клиент имеет то же имя, что и целевое доменное имя NetBIOS.
Задержка возникает из-за одного из следующих двух условий:
- Вы столкнулись с длительным временем ожидания для трансляции ответа. Эта задержка не отображается, если разрешение имен NetBIOS по протоколу TCP/IP (NetBT) через широковещательные передачи отключено.
- Задержки в разрешении DNS-имен возникают, так как запросы приложения для нескольких DNS-имен, которые не существуют.
Задержки можно наблюдать в трассировке сети, в котором отображаются клиенты LDAP, на которых выполняется поиск имен NetBIOS для записи "[HOSTNAME]<0x1C>" перед запуском подстановки DNS, чтобы найти компьютер узла приложения (см. рисунок A).
Рис. A
Сетевая трассировка клиента LDAP windows Server 2003 или 2008 показала, что она непосредственно выполнила поиск DNS для хост-компьютера без выполнения поиска NetBIOS для записи "<0x1C>".
Рисунок B
В случае DNS вы увидите запросы имен для имен, которые заканчиваются именем компьютера контроллера домена, например следующим образом:
_ldap._tcp. Default-First-Site-Name._sites. ADDC01.contoso.com
_ldap._tcp. ADDC01.contoso.com
_ldap._tcp. Default-First-Site-Name._sites. ADDC01
_ldap._tcp. ADDC01
Решение
При целевом сервере LDAP по имени узла вместо доменного имени следует использовать параметр сеанса LDAP_OPT_AREC_EXCLUSIVE, чтобы указать, что целевой объект — это имя узла, а не доменное имя.
Этот параметр устанавливается по-разному в зависимости от используемого интерфейса программирования. Используйте следующие сведения в качестве ссылки.
Wldap32
Если имя DNS-сервера Active Directory передается для объектаHostNameparameter, необходимо вызвать ldap_set_option, чтобы задать флаг LDAP_OPT_AREC_EXCLUSIVE перед вызовом любой функции LDAP, создающей фактическое соединение.
При этом выполняется поиск записи A и выполняется поиск записей SRV, когда компьютер разрешает имя узла. В некоторых сценариях это повышает производительность сети. Например, в филиале, использующем подключение с телефонным подключением, при поиске записи A-Record можно избежать принудительного запроса удаленного DNS-сервера для записей SRV при разрешении имен.
ADSI
Если необходимо указать сервер, используйте флаг ADS_SERVER_BIND, чтобы избежать ненужных или неправильных запросов к DNS-серверу. Дополнительные сведения см . в этой документации по ADsOpenObject() и связанным функциям.
System.DirectoryServices
Если ADsPath содержит имя сервера, укажите флаг AuthenticationTypes.ServerBind при использовании поставщика LDAP. Не используйте этот флаг для путей, включающих доменное имя или бессерверные пути. Указание имени сервера без указания этого флага приводит к ненужным сетевым трафику.
Например:
DirectoryEntry ent = new DirectoryEntry("LDAP://server01",null,AuthenticationTypes.ServerBind);
System.DirectoryServices.Protocols
При подготовке нового подключения LDAP добавьте объект LdapDirectoryIdentifier, созданный с помощью имени узла и необязательный порт, который требуется связаться, а также включает <в себя параметр полностью параметров LdapDirectoryIdenHostName>, который имеет значение True.
Новое поведение по умолчанию в Windows 7, Windows Server 2008 R2 и более поздних версиях можно вернуть к поведению до Windows 7. Это может привести к повторному возникновению проблем, влияющих на имена NetBIOS, как описано в разделе "Причина". Однако существуют также сценарии, в которых поведение до Windows 7 обеспечивает лучшие результаты. Таким образом, какой параметр создает лучшие результаты, зависит от основного сценария использования клиента LDAP.
Долгосрочное решение всегда должно быть для того, чтобы приложение использовало серверные и доменные имена, имеющие соответствующие флаги при вызове в интерфейсы LDAP, ADSI или .NET. Чтобы сделать приложение независимым от зависимостей сценария, следует использовать правильные флаги, когда клиентский код служб каталогов должен решить метод разрешения в неоднозначных ситуациях.
Вы можете вернуться к поведению до Windows 7, задав следующее значение реестра:
Подраздел: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LDAP
Запись: UseOldHostResolutionOrder
Тип: REG_DWORD
Данные о значении: 1
В качестве дополнительного подхода можно отключить разрешение имен с помощью трансляции для NetBt. Сведения о том, как свести к минимуму периодический трафик глобальной сети, см. в разделе 819108 Параметры, чтобы настроить NodeType как "p-mode".
Конфигурация узлов
- Использование 0x00000008 для гибридного узла или узла h-node
- Использование 0x00000004 для смешанного узла или m-node
- Использование 0x00000002 для winS или p-node типа "точка — точка"
- Использование 0x00000001 для широковещательного узла или b-узла
Типы узлов разрешения имен
- B-Node (вещание): использует широковещательные трансляции для разрешения имен. (Не рекомендуется для больших сетей.)
- P-Node (одноранговый узел): использует только WINS, без широковещательных трансляций. Нет сервера WINS, нет разрешения.
- M-Node (смешанный): сначала трансляция, а затем WINS. (Не рекомендуется, так как вы хотите свести к минимуму широковещательные трансляции.)
- H-Node (гибридная версия) — сначала использует WINS, а затем широковещательные передачи. (Рекомендуется, потому что это уменьшает количество трансляций, пытаясь WINS сначала и прибегая к трансляции только в качестве последней меры.)
Ссылки
Дополнительные сведения см. в следующих статьях:
Параметры сеанса LDAP (см. LDAP_OPT_AREC_EXCLUSIVE, 0x98)
Функция ADSI AdsopenObject
ADSI AuthenticationEnum со значением ADS_SERVER_BIND
Перечисление S.DS AuthenticationTypes со значением ServerBind
S.DS. Конструктор P LdapDirectoryIdentifier с флагом fullyQualifiedDnsHostName