Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

LDAP_AUTH_BIND_FAIL IP-Телефония и СКУД

Интеграция FreePBX с Active Directory / LDAP: синхронизация корпоративной телефонной книги

Обновлено: 24.08.2026 · Официальная документация ↗
  • Ошибка LDAP bind failed: Invalid credentials / Strong authentication required при подключении к контроллеру домена.
  • IP-телефоны сотрудников не загружают централизованную адресную книгу компании.
  • Дублирование и неактуальность внутренних номеров при увольнении или переводе сотрудников.
  • Таймаут синхронизации модуля User Management во FreePBX при обращении к Active Directory.

1. Настройка User Management во FreePBX под AD

  • Откройте Admin -> User Management -> Settings -> Authentication Engine и выберите Active Directory / OpenLDAP.
  • Host: ldaps://dc01.corp.internal:636 (используйте защищенный LDAPS).
  • Bind DN: CN=svc_freepbx,OU=ServiceAccounts,DC=corp,DC=internal.
  • Base DN: OU=Employees,DC=corp,DC=internal.
  • User Filter: (&(objectCategory=person)(objectClass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(telephoneNumber=*)).

2. Скрипт автоматической генерации XML Phonebook для IP-телефонов

Создайте скрипт /var/www/html/phonebook.php для выдачи телефонной книги в формате Yealink Remote Phonebook:

<?php
header("Content-Type: text/xml; charset=utf-8");
$ldap_host = "ldaps://dc01.corp.internal";
$ldap_dn = "DC=corp,DC=internal";
$ldap_user = "svc_freepbx@corp.internal";
$ldap_pass = "SecretPassword123";

$conn = ldap_connect($ldap_host);
ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($conn, LDAP_OPT_REFERRALS, 0);

if (@ldap_bind($conn, $ldap_user, $ldap_pass)) {
    $filter = "(&(objectCategory=person)(objectClass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(telephoneNumber=*))";
    $res = ldap_search($conn, $ldap_dn, $filter, ["displayName", "telephoneNumber", "mail"]);
    $entries = ldap_get_entries($conn, $res);

    echo '<YealinkIPPhoneDirectory>' . PHP_EOL;
    for ($i = 0; $i < $entries["count"]; $i++) {
        $name = htmlspecialchars($entries[$i]["displayname"][0]);
        $phone = htmlspecialchars($entries[$i]["telephonenumber"][0]);
        echo "  <DirectoryEntry><Name>{$name}</Name><Telephone>{$phone}</Telephone></DirectoryEntry>" . PHP_EOL;
    }
    echo '</YealinkIPPhoneDirectory>';
    ldap_unbind($conn);
}
?>

3. Настройка IP-телефонов (Yealink/Fanvil)

В веб-интерфейсе телефона перейдите в раздел Directory -> Remote Phonebook и укажите URL: http://192.168.1.10/phonebook.php с интервалом обновления 3600 сек.

💡 Практика специалистов: При использовании LDAPS добавьте корневой сертификат вашего контроллера домена в доверенное хранилище Linux: /etc/pki/ca-trust/source/anchors/ (RHEL) или /usr/local/share/ca-certificates/ (Ubuntu), иначе PHP и OpenLDAP отклонят соединение с ошибкой TLS Handshake.

Частые вопросы (FAQ)

Почему обычный LDAP (порт 389) отклоняет подключение к Windows Server 2019/2022?

Современные версии Windows Server по умолчанию требуют обязательной подписи LDAP (LDAP Channel Binding & Signing). Используйте LDAPS на 636 порту с доверенным сертификатом Root CA домена в системе Linux.

Как фильтровать только активных сотрудников без отключенных учеток?

Используйте битовую маску userAccountControl:1.2.840.113556.1.4.803:=2 в фильтре LDAP. Флаг !(...:=2) исключает заблокированные учетные записи Active Directory.

Где сохраняются импортированные пользователи во FreePBX?

Пользователи синхронизируются во внутреннюю базу данных SQLite/MySQL модуля User Management (userman), после чего их можно привязать к Contact Manager и внутренним экстеншенам.

Можно ли настроить поиск по LDAP прямо на лету с экрана телефона?

Да, практически все Enterprise-телефоны поддерживают функцию LDAP Directory Search на лету (Search Base, Name Filter = (cn=%*), Number Filter = (telephoneNumber=%*)).

Полезные материалы
Рекомендуем