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

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

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

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

Asterisk: Digest realm mismatch for endpoint — решение ошибки авторизации

Обновлено: 24.08.2026 · Официальная документация ↗
  • В логах появляется запись: WARNING[...]: res_pjsip_authenticator_digest.c: Digest realm mismatch for endpoint 'XXX'.
  • SIP-телефоны не могут зарегистрироваться и возвращают 401 Unauthorized или 403 Forbidden.
  • Транки между Asterisk и внешними SIP-провайдерами сбрасывают входящие или исходящие вызовы.
  • Утилита sngrep показывает бесконечный цикл REGISTER -> 401 Unauthorized -> REGISTER.

1. Синхронизация параметра Realm в pjsip.conf

Убедитесь, что в секции auth значение realm совпадает с доменом PBX или оставлено пустым (для сопоставления с любым realm):

[auth_101]
type = auth
auth_type = userpass
username = 101
password = StrongSecretPassword123
realm = asterisk ; Либо укажите FQDN: pbx.company.com

[101]
type = endpoint
auth = auth_101
aors = 101
context = internal

2. Настройка идентификации эндпоинта по Auth Username

Если имя пользователя в заголовке Digest отличается от SIP From пользователя, включите поиск по auth_username в /etc/asterisk/pjsip.conf:

[global]
type = global
endpoint_identifier_order = ip,username,auth_username

3. Конфигурация Realm для внешних транков

При подключении к внешнему провайдеру задавайте realm точно так, как его ожидает оператор:

[trunk_provider_auth]
type = auth
auth_type = userpass
username = 79991234567
password = ProviderSecretPass
realm = sip.provider.ru

[trunk_provider]
type = endpoint
transport = transport-udp
context = from-trunk
outbound_auth = trunk_provider_auth
aors = trunk_provider

4. Перезагрузка модуля авторизации PJSIP

asterisk -rx "pjsip reload"
asterisk -rx "pjsip show auths"
💡 Практика специалистов: При использовании fail2ban убедитесь, что постоянные ошибки realm mismatch от сканеров безопасности не перегружают syslog. Настройте парсинг регулярных выражений для блокировки атакующих IP до попадания в стек PJSIP.

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

Что такое SIP Digest Realm?

Realm — это строковый идентификатор домена безопасности, используемый при хешировании пароля по алгоритму MD5/SHA256 в заголовке SIP Authorization (RFC 2617).

Что делать, если SIP-клиент не передает realm в ответе на challenge?

Если оставить директиву realm пустой или закомментированной в секции [auth], Asterisk будет сопоставлять учетные данные независимо от переданного клиентом значения realm.

Почему транк без регистрации выдает Digest realm mismatch?

Для транков с авторизацией по IP заблокируйте требование аутентификации, удалив директиву auth = ... из секции [endpoint] и настроив секцию [identify] с адресом провайдера.

Как проверить успешность регистрации в консоли?

Используйте команду: pjsip show registrations (для исходящих транков) или pjsip show endpoints (для внутренних абонентов).

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