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

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

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

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

SIP настройка в Asterisk: Как явно указать expires 300 (Таймеры регистрации)

Обновлено: 09.09.2026 · Официальная документация ↗

Архитектура SIP Registration и Session Timers

В протоколе SIP параметр Expires определяет время жизни регистрации (Registration) устройства или транка на сервере. Если параметр не согласован, провайдер телефонии (Ростелеком, Манго, МТС) может принудительно разрывать транк или отбивать попытки регистрации с ошибкой 423 Interval Too Brief или 401 Unauthorized. Жесткое требование провайдеров использовать expires=300 (5 минут) связано с механизмами NAT Keep-Alive и защитой от зависших сессий (Ghost Calls). Бизнес-риски: отвал транка, невозможность дозвониться в компанию (входящие не работают, абонент недоступен).

Симптоматика проблем с Expires

ПроявлениеСообщение в логах AsteriskПричина
Входящие звонки периодически отваливаютсяRegistration for 'xxx' timed outПровайдер разорвал сессию, а Asterisk считает её еще активной (свой expires=3600).
Провайдер отклоняет регистрациюSIP/2.0 423 Interval Too BriefВы запрашиваете слишком маленькое время (например, 60), а провайдер требует минимум 300.
Микрообрывы связиSession timer expiredРассинхронизация Session-Expires (Min-SE) при долгих разговорах (UPDATE/INVITE).

Настройка Expires в современных версиях Asterisk

Сценарий 1: Настройка в PJSIP (pjsip.conf)

Драйвер chan_pjsip является современным стандартом. Настраивается в секции [registration].

# /etc/asterisk/pjsip.conf
[my_provider_reg]
type=registration
transport=transport-udp
outbound_auth=my_provider_auth
server_uri=sip:sip.provider.ru
client_uri=sip:74951112233@sip.provider.ru
 
# Принудительно задаем время жизни регистрации (в секундах)
expiration=300
 
# Для сессионных таймеров (в секции endpoint)
[my_provider]
type=endpoint
timers=yes
timers_min_se=90
timers_sess_expires=300

Сценарий 2: Настройка в устаревшем chan_sip (sip.conf)

Если вы всё еще используете старый chan_sip, настройка глобальных таймеров и строки регистрации.

# /etc/asterisk/sip.conf
[general]
# Глобальные настройки по умолчанию
defaultexpiry=300
minexpiry=60
maxexpiry=3600
 
# Синтаксис строки регистрации (Register string)
# формат: user[:secret[:authuser]]@host[:port][/extension][~expiry]
register => 74951112233:password@sip.provider.ru/74951112233~300

Сценарий 3: NAT Keep-Alive (Qualify)

Часто проблема не в самом expires, а в том, что роутер (NAT) закрывает UDP-порт до истечения таймера регистрации (обычно через 3 минуты). Обязательно включите поддержку сессии (пингование OPTIONS).

  • PJSIP (endpoint): qualify_frequency=60 (отправлять пинг каждые 60 секунд).
  • SIP (peer): qualify=yes или qualify=60000.

Типовые ошибки администраторов

  • Игнорирование ответов провайдера: При регистрации провайдер отвечает пакетом 200 OK, внутри которого в заголовке Contact указан реальный expires, который принял сервер. Asterisk подчинится этому значению. Если провайдер режет таймер до 120, настройка в 300 в конфиге не поможет — звоните провайдеру.
Телефония отваливается без видимых причин?
Траблшутинг SIP-протокола за NAT (NAT Traversal, STUN, Session Timers) — задача для экспертов. Инженеры ITSTM снимут дампы трафика (tcpdump/sngrep), найдут виновника потери пакетов (роутер, провайдер или АТС) и настроят бесперебойную работу транков.
💡 Практика специалистов: Практика ITSTM: При использовании PJSIP и регистрации транков у операторов вроде 'Ростелеком', часто требуется добавлять параметр `line=yes` в секции `[registration]`. Это добавляет уникальный параметр в SIP URI заголовка Contact, что помогает Asterisk'у корректно маршрутизировать входящие звонки с нескольких транков одного провайдера, независимо от таймеров Expires.

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

В чем разница между Registration Expires и Session-Expires?

Registration Expires (expiration в pjsip) — это частота, с которой АТС сообщает провайдеру 'я тут, мой IP такой-то'. Session-Expires (сессионные таймеры) — это механизм контроля АКТИВНОГО разговора. Если разговор длится долго, АТС периодически шлют re-INVITE, чтобы подтвердить, что трубка не зависла.

Почему при expires=300 Asterisk отправляет запрос на регистрацию через 285 секунд?

Asterisk и другие софтсвичи умные: они не ждут точного истечения таймера до нуля (иначе транк отвалится на долю секунды). Они отправляют запрос на продление (re-register) чуть заранее (обычно за 15-30 секунд до конца), это абсолютно нормальное поведение.

Что означает ошибка 423 Interval Too Brief?

Провайдер защищается от DDoS (слишком частых регистраций). Ваш сервер просит регистрацию на 60 секунд (нагружая ядро провайдера), а политика безопасности оператора связи требует минимум 300 (или 3600) секунд. Увеличьте параметр expiration.

Нужно ли ставить expires 300 для внутренних абонентов (телефонов в офисе)?

Не обязательно. Для локальной сети (без NAT) можно ставить 3600 (час), чтобы не спамить в сеть. Но для удаленщиков и софтфонов на смартфонах за 4G лучше ставить 300-600 и включать qualify_frequency=30 для удержания портов на сотовых вышках.

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