Исправление нескольких slap_global_control: нераспознанный элемент управления: в системном журнале - PullRequest
0 голосов
/ 26 октября 2018

На сервере Debian 8, который использует LDAP для аутентификации пользователя (установлены slapd, libpam-ldapd и nslcd), я получаю следующее сообщение в системном журнале, несколько раз, каждый раз, когда системе нужно искать информацию о пользователе в LDAP (например, ввод id [имя пользователя] или установка прав доступа к папке и т. д.)

slap_global_control: unrecognized control: 1.3.6.1.4.1.4203.666.5.16

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

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

Это сообщение может появляться около ста раз в секунду , когда выполняется импорт пользователя. При однократном вводе «id [username]» в терминале это сообщение появляется около 10 раз в системном журнале.

Дальнейшие исследования показали, что nslcd, вероятно, связано с этим поведением. При запуске nslcd в режиме отладки можно увидеть следующие параметры подключения к серверу LDAP:

nslcd: [e8944a] <group=3000> DEBUG: ldap_initialize(ldapi:///localhost)
nslcd: [e8944a] <group=3000> DEBUG: ldap_set_rebind_proc()
nslcd: [e8944a] <group=3000> DEBUG: ldap_set_option(LDAP_OPT_PROTOCOL_VERSION,3)
nslcd: [e8944a] <group=3000> DEBUG: ldap_set_option(LDAP_OPT_DEREF,0)
nslcd: [e8944a] <group=3000> DEBUG: ldap_set_option(LDAP_OPT_TIMELIMIT,0)
nslcd: [e8944a] <group=3000> DEBUG: ldap_set_option(LDAP_OPT_TIMEOUT,0)
nslcd: [e8944a] <group=3000> DEBUG: ldap_set_option(LDAP_OPT_NETWORK_TIMEOUT,0)
nslcd: [e8944a] <group=3000> DEBUG: ldap_set_option(LDAP_OPT_REFERRALS,LDAP_OPT_ON)
nslcd: [e8944a] <group=3000> DEBUG: ldap_set_option(LDAP_OPT_RESTART,LDAP_OPT_ON)
nslcd: [e8944a] <group=3000> DEBUG: ldap_simple_bind_s(NULL,NULL) (uri="ldapi:///localhost")

Так что, похоже, там отключено DEREF, но моя конфигурация slapd вообще не имеет информации о DEREF, может, именно в этом причина проблемы?

Как можно избежать множественных сообщений о нераспознанных элементах управления?

1 Ответ

0 голосов
/ 26 октября 2018

ldap_set_option (LDAP_OPT_DEREF, 0)

Это опция для разыменования псевдонима во время обработки операции поиска. Хорошо, что он отключен (по умолчанию). Но это не имеет отношения здесь.

Как вы уже узнали, "1.3.6.1.4.1.4203.666.5.16" - это OID так называемого LDAP управления разыменованием. Этот элемент управления можно использовать в поисковых запросах, чтобы позволить серверу возвращать данные из записей, на которые ссылается запись, найденная поиском.

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

Кажется, это можно отключить только при компиляции nss-pam-ldapd (он же nslcd ).

Но ИМХО, это не главная проблема с производительностью. Вам следует рассмотреть возможность использования nscd (демон кэширования службы имен). В противном случае каждый запрос NSS к nslcd приведет к удаленному запросу поиска LDAP.

Вы также можете рассмотреть возможность использования sssd , потому что у него есть внутренняя архитектура кэширования, которая имеет свои плюсы и минусы. YMMV.

...