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

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

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

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

Asterisk: Declining to load module chan_sip.so due to unresolved symbols

Обновлено: 24.08.2026 · Официальная документация ↗
  • Критическая ошибка: ERROR: loader.c: Declining to load module 'chan_sip.so' due to unresolved symbols.
  • Asterisk не загружает SIP драйвер, каналы SIP становятся недоступны.
  • Команда sip show peers возвращает No such command.
  • Сбой возникает после обновления пакетов Asterisk или компиляции кастомных модулей.

1. Проверка отсутствующих динамических символов

Запустите проверку связывания разделяемой библиотеки через ldd:

ldd -r /usr/lib/asterisk/modules/chan_sip.so

В выводе будут указаны неопределенные функции (undefined symbol), например ast_ssl_init или ast_crypto_loaded.

2. Проверка порядка загрузки зависимых модулей в modules.conf

Отредактируйте /etc/asterisk/modules.conf, чтобы предварительно загрузить криптографические и вспомогательные библиотеки ядра:

[modules]
autoload = yes

; Обязательная предварительная загрузка базовых модулей
preload => res_crypto.so
preload => res_http_websocket.so
preload => res_pjproject.so

; Загрузка драйверов
load => chan_sip.so

3. Пересборка Asterisk из исходного кода при конфликте ABI

Если ядро было обновлено, пересоберите модули с актуальными заголовочными файлами:

cd /usr/src/asterisk-*
make distclean
./configure --with-ssl --with-crypto
make menuselect.makeopts
menuselect/menuselect --enable chan_sip menuselect.makeopts
make -j$(nproc)
make install

4. Миграция на современный стек chan_pjsip (Рекомендуется)

В Asterisk 21+ драйвер chan_sip полностью удален из кодовой базы. Переходите на res_pjsip:

# Отключение устаревшего модуля в modules.conf
noload => chan_sip.so
load => chan_pjsip.so
load => res_pjsip.so
💡 Практика специалистов: Не используйте устаревший chan_sip в новых инсталляциях. При любых проблемах с unresolved symbols используйте конвертер sip_to_pjsip.py для быстрой миграции конфигураций на стек chan_pjsip.

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

Что вызывает ошибку 'unresolved symbols' при загрузке модуля?

Несоответствие ABI между ядром Asterisk и скомпилированным бинарником .so, отсутствие предварительно загруженного модуля-зависимости (например res_crypto.so), или изменение версий системных библиотек OpenSSL/libxml2.

Почему chan_sip.so не собирается в новых версиях Asterisk?

Драйвер chan_sip признан устаревшим (deprecated) в Asterisk 17, отключен по умолчанию в Asterisk 19 и полностью удален из состава Asterisk начиная с версии 21.

Как загрузить модуль вручную из командной строки для теста?

Выполните в CLI команду: module load chan_sip.so и изучите детальный вывод причины отказа.

Что делать, если ldd показывает missing libssl.so.1.1?

Установите совместимую версию OpenSSL или переконфигурируйте и пересоберите Asterisk с текущей системной версией libssl.so.3.

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