SIP Error 421 Extension Required: решение проблем с обязательными расширениями SIP
- Сервер сбрасывает запрос
INVITEилиREGISTERс кодом421 Extension Required. - В ответе сервера содержится заголовок
Requireсо списком расширений, которые клиент обязан задействовать. - Клиентские устройства (IP-телефоны, домофоны) не могут зарегистрироваться на облачной АТС или операторском SBC.
1. Анализ требований сервера в SIP-ответе
Проанализируйте полученный ответ 421 с помощью sngrep:
SIP/2.0 421 Extension Required
Require: 100rel, timer
Server: Carrier-Edge-SBCОшибка 421 сообщает, что политика безопасности или архитектура сервера требует обязательного использования расширений (в примере — надежная доставка ответов 100rel и таймеры сессий timer), которые клиент не указал в своем заголовке Supported.
2. Включение требуемых расширений в FreePBX / Asterisk
Для включения генерации заголовка Supported: 100rel, timer отредактируйте /etc/asterisk/pjsip.conf:
[trunk-carrier]
type=endpoint
100rel=yes
timers=yes
timers_min_se=90
timers_sess_expires=18003. Настройка расширения Outbound (RFC 5626) и Path (RFC 3327) в Kamailio
Если registrar-сервер требует заголовок Path для маршрутизации NAT, убедитесь, что прокси добавляет его в запрос регистрации:
route[REGISTRAR] {
if (is_method("REGISTER")) {
# Добавление заголовка Path
add_path();
save("location");
exit;
}
}4. Конфигурация оконечных абонентских устройств
В настройках учетной записи IP-телефона активируйте:
- PRACK (100rel): включите переключатель Enable PRACK / 100rel.
- Session Timers: активируйте Enable Session Timer (RFC 4028).
Частые вопросы (FAQ)
Чем ошибка 421 отличается от 420?
Ошибка 420 означает, что клиент потребовал от сервера опцию, которую сервер не умеет. Ошибка 421 означает обратное: сервер требует от клиента обязательного использования конкретного расширения, которое клиент забыл или не умеет поддерживать.
Обязан ли сервер присылать список расширений в ответе 421?
Да, согласно RFC 3261 раздел 21.4.19, ответ 421 обязан содержать заголовок 'Require', перечисляющий расширения, которые должны быть активированы клиентом.
Почему операторы требуют обязательного включения Session Timers (timer)?
Таймеры сессий позволяют операторам автоматически выявлять и освобождать зависшие вызовы (ghost calls), возникающие при внезапном разрыве связи без отправки сообщения BYE.
Что делать, если старый аппаратный IP-телефон не поддерживает требуемое сервером расширение?
Единственный способ — отключить обязательность данного расширения на стороне сервера/SBC (перевести из режима 'required' в режим 'supported' или 'optional').