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

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

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

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

Ошибка Asterisk res_srtp.c: SRTP unprotect failed: authentication failed

Обновлено: 24.08.2026 · Официальная документация ↗
  • Лог Asterisk переполнен ошибками: ERROR[...]: res_srtp.c: SRTP unprotect failed: authentication failed (Bad key/replay).
  • Периодическое пропадание звука, металлический голос или полное отсутствие слышимости во время защищенных вызовов.
  • Резкий обрыв разговора через 10–30 секунд после установки соединения.
  • Аномальный рост счетчиков отброшенных пакетов в rtp show stats.

1. Проверка согласования DTLS-SRTP и криптографических профилей

В файле /etc/asterisk/pjsip.conf для эндпоинта убедитесь в правильной настройке параметров шифрования:

[secure_endpoint](!)
type = endpoint
media_encryption = dtls
media_encryption_optimistic = no
dtls_verify = fingerprint
dtls_cert_file = /etc/asterisk/keys/asterisk.pem
dtls_ca_file = /etc/asterisk/keys/ca.crt
dtls_setup = actpass
srtp_tag_32 = no

2. Проверка работы с SDES-SRTP (для аппаратных SIP-телефонов)

Если телефон использует устаревший SDES вместо DTLS (например, Yealink, Grandstream, Cisco):

[sdes_phone]
type = endpoint
media_encryption = sdes
srtp_tag_32 = yes ; Некоторые модели требуют 32-битный тег аутентификации
inband_progress = yes

3. Устранение сетевых задержек и дублирования пакетов (Replay Attack)

Ошибка часто возникает из-за межсетевых экранов, вызывающих джиттер или повторную доставку пакетов с нарушением счетчика ROC (Roll-Over Counter):

# Проверка потерь пакетов и джиттера
asterisk -rx "pjsip show channel <channel_id>"
# Анализ RTP через tcpdump
tcpdump -nnvv -i any udp portrange 10000-20000 -w /tmp/srtp_traffic.pcap

4. Перезагрузка SRTP подсистемы

asterisk -rx "module reload res_srtp.so"
asterisk -rx "module reload res_pjsip.so"
💡 Практика специалистов: Если ошибка возникает при транкировании между двумя серверами Asterisk через интернет, убедитесь, что на промежуточных маршрутизаторах отключен SIP ALG, который может модифицировать криптографические атрибуты SDP a=crypto на лету.

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

Что означает статус 'Bad key/replay' в res_srtp?

Это означает, что либо принятый RTP-пакет не прошел валидацию контрольной суммы HMAC-SHA1 из-за неверного ключа сессии, либо его Sequence Number уже был обработан ранее (сработал механизм защиты SRTP Replay Protection).

Почему ошибка часто возникает при удержании вызова (Hold/Resume)?

При отправке re-INVITE во время Hold некоторые софтфоны генерируют новые ключи SRTP, которые Asterisk не успевает своевременно инициализировать без включенного re-invite negotiation.

Как параметр srtp_tag_32 влияет на аутентификацию?

Параметр srtp_tag_32 переключает размер тега аутентификации между 80 бит (HMAC-SHA1-80) и 32 бит (HMAC-SHA1-32). Несовпадение тега на стороне клиента и сервера вызывает данную ошибку.

Помогает ли отключение media_encryption_optimistic?

Да. Опция optimistic разрешает звонки даже при падении шифрования, что приводит к попыткам расшифровать открытый RTP как SRTP, порождая шквал ошибок в логе.

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