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

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

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

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

Анализ VoIP-трафика с помощью утилиты sngrep: чтение SIP-диаграмм вызовов

Обновлено: 24.08.2026 · Официальная документация ↗
  • Необходимость быстрой локализации причин отбоя звонков (404 Not Found, 486 Busy, 503 Service Unavailable) в реальном времени.
  • Неудобство анализа тяжелых дампов tcpdump через Wireshark на удаленных серверах.
  • Сложности при отслеживании цепочки прохождения вызова через B2BUA, SBC и транзитные провайдеры.
  • Скрытые проблемы с несовпадением кодеков (SDP Audio Codec Negotiation).

1. Установка утилиты sngrep на сервер телефонии

# Debian / Ubuntu
apt-get install -y sngrep

# RHEL / CentOS / Rocky Linux
dnf install -y epel-release && dnf install -y sngrep

# Сборка из исходников (если нет в репозитории)
git clone https://github.com/irontec/sngrep
cd sngrep && ./bootstrap.sh && ./configure && make && make install

2. Запуск и фильтрация сетевых интерфейсов

# Базовый запуск с захватом всех интерфейсов
sngrep

# Захват только на определенном интерфейсе и порту
sngrep -d eth0 port 5060

# Захват без конвертации IP в DNS имена (работает быстрее)
sngrep -N -d any

# Захват только SIP сообщений типа REGISTER и INVITE
sngrep -c -O /tmp/voip_capture.pcap

3. Навигация и интерактивный анализ SIP-диаграмм

  • Используйте клавиши / для выбора нужного вызова из списка транзакций.
  • Нажмите Enter для перехода в режим Call Flow Diagram (визуальное отображение стрелок между IP-адресами).
  • Используйте клавиши F2 или S для сохранения выбранного диалога в файл .pcap.
  • Нажмите F7 для открытия расширенного фильтра (Filter by Caller, Callee, SIP Method, Payload).
  • Нажмите F3 для поиска текстовой строки (Call-ID, IP-адрес, номер телефона).

4. Анализ SDP секции (Session Description Protocol)

В окне Call Flow выберите пакет INVITE или 200 OK и нажмите F8 для просмотра сырого текста заголовков:

v=0
o=root 1700000000 1700000000 IN IP4 203.0.113.50
s=Asterisk PBX
c=IN IP4 203.0.113.50
t=0 0
m=audio 14234 RTP/AVP 8 0 101
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=sendrecv

Проверьте: совпадают ли разрешенные кодеки (rtpmap) и доступен ли указанный в строке c=IN IP4 адрес для приема голосовых RTP пакетов.

5. Фоновый сбор дампа без графического интерфейса

# Сбор аномальных вызовов в фоновом режиме по условию ошибки (Response Code >= 400)
sngrep -q -O /var/log/asterisk/failed_calls.pcap "(sip.Response-Code >= 400)"
💡 Практика специалистов: При анализе проблем односторонней слышимости всегда сравнивайте IP-адрес в строке 'c=IN IP4' внутри SDP с реальным сетевым IP источника пакета. Если там указан серый локальный IP (например, 192.168.1.5) при звонке через интернет — проблема заключается в отсутствии NAT-трансляции.

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

Как в sngrep отобразить только вызовы с ошибками?

В главном окне нажмите F7 (Filter) и в поле 'Call State' выберите значение 'COMPLETED' или укажите конкретный код ответа (например, 403, 404, 503) в строке поиска.

Может ли sngrep расшифровывать SIP TLS трафик?

Да, если запустить sngrep с указанием приватного ключа сервера: sngrep -k /etc/asterisk/keys/asterisk.key port 5061 (при условии использования алгоритмов шифрования без Diffie-Hellman Ephemeral / RSA Exchange).

Влияет ли работа sngrep на производительность высоконагруженной АТС?

При нагрузке более 150-200 одновременно активных каналов sngrep начинает потреблять много оперативной памяти под хранение истории диалогов. На High-Load нодах используйте запуск только с флагом -c (без отображения) или фильтрацию по порту/хосту.

Как экспортировать выделенный диалог вызова для анализа в Wireshark?

Выделите вызов в списке, нажмите F2 (Save), выберите 'Selected Call' и задайте путь к файлу (например, /tmp/call_debug.pcap).

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