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

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

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

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

Миграция с chan_sip на chan_pjsip в Asterisk: полное руководство по переходу

Обновлено: 24.08.2026 · Официальная документация ↗
  • Предупреждения в CLI Asterisk о скором удалении драйвера chan_sip (SIP stack deprecated).
  • Невозможность использовать современные функции: несколько контактов на один экстеншн (WebRTC + аппаратный телефон), продвинутый NAT traversal и асинхронный I/O.
  • Высокая задержка обработки SIP-диалогов при большом количестве одновременных вызовов.

1. Концептуальная разница архитектуры

В chan_sip одна секция в sip.conf описывала все параметры. В chan_pjsip сущности разделены на 5 модульных объектов:

  • transport: сетевой протокол, порт и IP-биндинг (UDP/TCP/TLS/WSS).
  • endpoint: медиа-настройки, кодеки, параметры вызова и связь с остальными объектами.
  • aor (Address of Record): куда отправлять вызовы (IP-адрес или динамическая регистрация с max_contacts).
  • auth: учетные данные (логин и пароль) для входящей/исходящей аутентификации.
  • identify: сопоставление входящих вызовов по IP-адресу (для транков без регистрации).

2. Автоматическая конвертация через sip_to_pjsip.py

cd /usr/src/asterisk/contrib/scripts
python3 sip_to_pjsip.py /etc/asterisk/sip.conf /etc/asterisk/pjsip.conf.converted

3. Ручная настройка транка от провайдера в pjsip.conf

[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0:5060
local_net=192.168.0.0/16
external_media_address=203.0.113.10
external_signaling_address=203.0.113.10

; --- Провайдерский транк с регистрацией ---
[provider-out]
type=registration
outbound_auth=provider-auth
server_uri=sip:sip.provider.com
client_uri=sip:1234567@sip.provider.com

[provider-auth]
type=auth
auth_type=userpass
username=1234567
password=SuperSecretPassword

[provider-aor]
type=aor
contact=sip:sip.provider.com:5060

[provider-endpoint]
type=endpoint
context=from-trunk
disallow=all
allow=alaw,ulaw
outbound_auth=provider-auth
aors=provider-aor

[provider-identify]
type=identify
endpoint=provider-endpoint
match=sip.provider.com

4. Корректировка диалплана extensions.conf

Замените канальный вызов SIP/ на PJSIP/:

; Было в chan_sip:
; same => n,Dial(SIP/101,30)
; same => n,Dial(SIP/provider-out/${EXTEN})

; Стало в chan_pjsip:
same => n,Dial(PJSIP/101,30)
same => n,Dial(PJSIP/${EXTEN}@provider-endpoint,30)

5. Отключение chan_sip в modules.conf

В файле /etc/asterisk/modules.conf добавьте:

noload => chan_sip.so
load => chan_pjsip.so
load => res_pjsip.so
asterisk -rx "module unload chan_sip.so"
asterisk -rx "pjsip reload"
💡 Практика специалистов: Начиная с Asterisk 21 драйвер chan_sip полностью удален из исходного кода. Планируйте миграцию на PJSIP заблаговременно, чтобы не блокировать обновления безопасности ядра Asterisk.

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

Можно ли запускать chan_sip и chan_pjsip одновременно на одном сервере?

Да, но они должны слушать разные порты или разные IP-адреса. Например, chan_pjsip биндится на 0.0.0.0:5060, а chan_sip временно переводится на порт 5061 (если TLS не используется) для плавной поэтапной миграции абонентов.

Как разрешить одному абоненту регистрировать несколько телефонов (Multiple Contacts)?

В секции [aor] соответствующего эндпоинта укажите параметр max_contacts = 5. Теперь при звонке на PJSIP/101 вызов пойдет одновременно на мобильное приложение, веб-телефон и офисный аппарат.

Какими командами проверять статус абонентов и транков в PJSIP?

В консоли Asterisk CLI используйте: pjsip show endpoints, pjsip show registrations, pjsip show aors, pjsip show auths.

Почему входящие звонки от провайдера падают с ошибкой 401 Unauthorized?

Если провайдер присылает вызовы с разных IP-адресов пула, убедитесь, что в объекте [identify] в директиве match перечислены все IP-адреса или подсеть провайдера (например, match=198.51.100.0/24).

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