Asterisk: No RTP engine was found for format mapping (Ошибки rtp_engine.c)
- В CLI Asterisk фиксируется
WARNING[2345]: rtp_engine.c: No RTP engine was found for format mapping. - Звонок сбрасывается сразу после поднятия трубки (Answer).
- Односторонняя слышимость или полная тишина в голосовом тракте (нет медиа-потока).
- Команда
module show like res_rtp_asteriskпоказывает, что RTP-движок не загружен.
1. Проверка состояния модуля res_rtp_asterisk
asterisk -rx "module show like res_rtp_asterisk.so"Если модуль имеет статус Not Loaded, загрузите его вручную:
asterisk -rx "module load res_rtp_asterisk.so"2. Проверка файла /etc/asterisk/modules.conf
Убедитесь, что модуль не заблокирован директивой noload:
[modules]
autoload=yes
load => res_rtp_asterisk.so3. Конфигурация диапазона портов в rtp.conf
Проверьте корректность настроек в /etc/asterisk/rtp.conf:
[general]
rtpstart=10000
rtpend=20000
rtpchecksums=yes
stunaddr=
sdes_srtp=yes4. Проверка прав на сокеты и сетевых портов
Убедитесь, что порты не заняты сторонними демонами (например, Kamailio/RTPproxy):
ss -ulnp | grep -E "1000[0-9]|20000"5. Перезагрузка подсистемы RTP
asterisk -rx "rtp reload" Частые вопросы (FAQ)
За что отвечает модуль res_rtp_asterisk.so?
Этот модуль является базовым драйвером RTP стека в Asterisk. Без него ядро не может инициализировать UDP-сокеты для передачи голосовых пакетов, генерации DTMF и шифрования SRTP.
Почему модуль res_rtp_asterisk.so не загружается автоматически?
Частая причина — отсутствие скомпилированных зависимостей (OpenSSL для SRTP, PJPROJECT) или синтаксическая ошибка в конфигурационном файле /etc/asterisk/rtp.conf.
Что означает format mapping в ошибке?
Это сопоставление динамических полезных нагрузок RTP (RTP payload types 96-127) с конкретными аудиокодеками (например, Opus, VP8, H.264, telephone-event для RFC 4733/2833).
Нужно ли открывать диапазон rtpstart-rtpend в фаерволе?
Да, весь UDP диапазон (обычно 10000-20000 UDP) должен быть открыт в iptables/nftables, иначе входящие голосовые пакеты будут отброшены сетевым экраном.