Asterisk PJSIP: Fatal response 403 Forbidden received on outbound registration
- В консоли выводится
WARNING res_pjsip_outbound_registration.c: Fatal response '403 Forbidden' received from 'sip:provider.com' on registration attempt. - Регистрация транка переходит в статус
Rejectedи Asterisk прекращает любые дальнейшие попытки зарегистрироваться. - Исходящая и входящая связь через транк оператора полностью останавливается.
- Перезапуск модуля
pjsip reloadвременно возобновляет попытки, но они снова завершаются статусом 403.
1. Архитектура фатального ответа 403 в res_pjsip
По спецификации SIP ответ 403 Forbidden классифицируется как фатальный отказ авторизации (учетная запись заблокирована, неверные учетные данные, доступ запрещен по IP). Чтобы не создавать паразитный шторм запросов на сервер провайдера, PJSIP по умолчанию навсегда отключает таймер повторных регистраций для данного транка.
2. Проверка статуса регистрации в Asterisk CLI
asterisk -rx "pjsip show registrations"
asterisk -rx "pjsip show registration <имя_регистрации>"Включите трассировку диалога регистрации:
asterisk -rx "pjsip set logger on"3. Предотвращение вечной остановки регистрации (auth_rejection_permanent)
Если 403 ответ может быть временным (например, при сбое биллинга оператора), запретите PJSIP прекращать попытки регистрации в /etc/asterisk/pjsip.conf:
[my_provider_reg]
type=registration
transport=transport-udp
outbound_auth=my_provider_auth
server_uri=sip:sip.provider.com:5060
client_uri=sip:MyAccountID@sip.provider.com:5060
retry_interval=60
max_retries=1000
; КРИТИЧЕСКИЙ ПАРАМЕТР: продолжать попытки при 403 Forbidden
auth_rejection_permanent=no
forbidden_retry_interval=300 ; Повтор через 5 минут при 4034. Исправление типичных ошибок аутентификации в секции type=auth
[my_provider_auth]
type=auth
auth_type=userpass
username=MyAccountID ; Логин, выданный оператором
password=SuperSecretPassword123
realm=sip.provider.com ; Заполните явно, если оператор требует точный Realm5. Принудительный перезапуск регистрации из консоли
asterisk -rx "pjsip send register my_provider_reg" Частые вопросы (FAQ)
Почему chan_sip продолжал регистрироваться после 403, а PJSIP останавливается?
chan_sip нарушал строгий RFC-стандарт и продолжал спамить сервер запросами. Драйвер res_pjsip строго следует стандарту и прекращает попытки, если параметр auth_rejection_permanent не установлен в 'no'.
Что означает статус 'Rejected' в выводе 'pjsip show registrations'?
Этот статус показывает, что удаленный сервер отклонил регистрацию с фатальным кодом ошибки (обычно 403 Forbidden), и автоматические повторные попытки остановлены.
Может ли неправильный Contact URI вызвать ошибку 403?
Да. Некоторые провайдеры требуют, чтобы в поле Contact и Client_URI был строго указан номер телефона E.164 или логин, а не локальный IP-адрес вашей АТС.
Как проверить, не заблокирован ли наш внешний IP-адрес на стороне оператора?
Если трассировка sngrep показывает отправку REGISTER и немедленный приход 403 без промежуточного ответа 401 Unauthorized со стороны провайдера, ваш IP адрес заблокирован в ACL/Firewall оператора.