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

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

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

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

SIP Error 481 Call/Transaction Does Not Exist: траблшутинг диалогов и BYE/ACK

Обновлено: 24.08.2026
  • Разрыв разговора или зависание сессии при попытке положить трубку (запрос BYE возвращает 481 Call/Transaction Does Not Exist).
  • Сбой при постановке на удержание (Hold), снятии с удержания или отправке DTMF через SIP INFO.
  • Зависание активных каналов в выводе core show channels IP-АТС.

1. Архитектура SIP Dialog и причины ошибки 481

Каждый вызов в SIP идентифицируется триплетом: Call-ID, From tag и To tag. Ошибка 481 возвращается узлом, когда он получает запрос внутри диалога (BYE, re-INVITE, ACK, INFO, UPDATE, NOTIFY), но в его памяти нет активного состояния для указанного диалога.

BYE sip:101@192.168.1.50:5060 SIP/2.0
Call-ID: c2b84f90-1234@192.168.1.10
From: <sip:100@pbx>;tag=as321
To: <sip:101@pbx>;tag=wrong-tag ; Ошибочный или несуществующий To-tag
CSeq: 102 BYE

Ответ абонента:

SIP/2.0 481 Call/Transaction Does Not Exist

2. Анализ причин в дампах трафика (sngrep)

  • Таймаут сессии: Сервер уже уничтожил диалог по внутреннему таймауту (RTP timeout, Session Timer), а клиент прислал запоздалый BYE.
  • Спуфинг или искажение To-tag / From-tag: Промежуточный SBC некорректно перезаписал теги диалога.
  • Смена IP/порта за NAT: Ответ или запрос пришел с другого сокета без привязки к активному диалогу.

3. Настройка RTP Keepalive и таймаутов в Asterisk

Предотвратите преждевременное закрытие канала АТС из-за отсутствия медиа:

# /etc/asterisk/pjsip.conf
[endpoint-template](!)
type=endpoint
rtp_timeout=60
rtp_timeout_hold=300
rtp_keepalive=15

4. Принудительное закрытие зависших каналов в CLI

# Поиск зависшего канала
asterisk -rx "core show channels"

# Принудительное уничтожение канала
asterisk -rx "channel request hangup PJSIP/trunk-000001a2"
💡 Практика специалистов: Если 481 ошибка массово возникает на исходящих BYE, проверьте симметричность Record-Route заголовков. Если прокси забыл вставить Record-Route в 200 OK, BYE пойдет напрямую на неверный IP за NAT.

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

Почему запрос ACK никогда не вызывает генерацию ошибки 481?

Согласно RFC 3261, запрос ACK на негативные ответы является частью транзакции, а ACK на 200 OK не порождает самостоятельных ответов протокола SIP во избежание бесконечных циклов подтверждения.

Что должен делать софтфон при получении 481 на отправленный BYE?

Клиент должен считать сессию успешно завершенной, освободить аудиоустройства, очистить структуры памяти диалога и вернуться в состояние готовности (IDLE).

Может ли несовпадение номеров CSeq стать причиной ошибки 481?

Если CSeq в запросе внутри диалога меньше предыдущего обработанного значения, сервер отклонит его с кодом 500 Internal Server Error или 400 Bad Request, но если транзакция не найдена — отдаст 481.

Как кластеризация серверов (Kamailio / OpenSIPS) влияет на возникновение 481?

Если входящий mid-dialog запрос (BYE/re-INVITE) из-за сбоя балансировщика попадает на соседнюю ноду кластера, которая не имеет данных о диалоге в распределенной памяти (DMQ/Redis), она ответит 481.

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