Диагностика ошибок 403 Forbidden и 404 Not Found на SIP-транках операторов
- Исходящие вызовы мгновенно сбрасываются с короткими гудками и кодом
SIP/2.0 403 Forbidden. - Звонок на корректный номер абонента возвращает
SIP/2.0 404 Not Found. - Входящие звонки от провайдера отклоняются корпоративной АТС с ошибкой 404.
- Блокировка исходящих вызовов при попытке подстановки альтернативного номера компании.
1. Причины ошибки 403 Forbidden со стороны оператора
- Несоответствие Caller ID (А-номера): согласно закону о связи оператор блокирует вызовы с незарегистрированным за договором номером. Убедитесь, что поле
FromилиP-Asserted-Identityсодержит выделенный пул номеров. - Блокировка по IP (ACL): исходящий запрос идет не с того публичного IP, который прописан в договоре.
- Запрет международного/междугородного направления: на транке отключен выход на МГ/МН связь.
2. Корректировка Caller ID в заголовках PAI / From
# Asterisk dialplan (extensions.conf)
exten => _X.,1,Set(CALLERID(num)=74951234567)
exten => _X.,n,Set(PJSIP_HEADER(add,P-Asserted-Identity)=<sip:74951234567@provider.com>)
exten => _X.,n,Dial(PJSIP/${EXTEN}@trunk_provider)3. Причины ошибки 404 Not Found и нормализация набора
Оператор ожидает номер в строго определенном формате (E.164 с плюсом, 11 цифр или 10 цифр без 8-ки):
# Преобразование 89XXXXXXXXX в формат +79XXXXXXXXX
exten => _89XXXXXXXXX,1,Dial(PJSIP/+7${EXTEN:1}@trunk_provider)
# Преобразование в 10-значный формат
exten => _8XXXXXXXXXX,1,Dial(PJSIP/${EXTEN:1}@trunk_provider)4. Траблшутинг входящих 404 Not Found на своей АТС
Если входящий звонок от оператора отклоняет ваша АТС, убедитесь, что в контексте входящей маршрутизации (from-trunk) создан маршрут по умолчанию (catch-all):
[from-trunk]
exten => _.,1,NoOp(Incoming call for ${EXTEN})
exten => _.,n,Goto(incoming_ivr,s,1) Частые вопросы (FAQ)
Почему оператор присылает 403 Forbidden на правильный номер телефона?
Операторы часто проверяют не только заголовок From, но и P-Asserted-Identity (PAI) или Remote-Party-ID. Если номер в PAI не принадлежит вашему договору, сработает система Anti-Spoofing защиты оператора.
В чем отличие 404 Not Found от 404 User Not Found?
Это одно и то же SIP-сообщение. Текстовая фраза (Reason Phrase) может варьироваться, но код 404 всегда означает, что запрошенный URI (номер назначения) отсутствует в таблице маршрутизации.
Что означает заголовок 'Reason: Q.850;cause=1' в ответе 404?
Это код причины из телефонной сети общего пользования (ISDN/SS7). Cause 1 означает 'Unallocated (unassigned) number' — номер не существует или не обслуживается.
Как исправить входящий вызов, если транк регистрируется, но звонки не попадают в диалплан?
В Asterisk PJSIP убедитесь, что в настройках endpoint указан параметр identify_by=ip,username или настроен соответствующий секвенсор 'identify' по IP-адресу провайдера.