Как снять дамп SIP-звонка с помощью tcpdump, Wireshark и sngrep





Точное и быстрое снятие сетевого дампа — обязательный навык для инженеров, работающих с VoIP-платформами Kamailio, Asterisk, FreeSWITCH, 3CX, SBC-решениями и системами маршрутизации медиапотока. Особенно важно это при анализе RTP-задержек, одностороннего звука, обрывов звонков, проблем NAT, некорректных SDP или регистрации SIP-клиентов.
Инфраструктура SkyTel OU регулярно использует такие методы для диагностики и аудита качества трафика, включая работу с провайдерами и SIP-платформами клиентов.
Выбор инструмента для снятия дампа
Инструмент Что умеет Когда использовать
tcpdump низкоуровневый перехват пакетов, 100% точность снимаем "сырые" pcap для последующего анализа
Wireshark графический анализ, VoIP-декодирование, RTP-плейбек диагностика ошибок SIP/RTP
sngrep удобный просмотр SIP-диалогов в реальном времени быстрые проверки на Kamailio, Asterisk, FreeSWITCH, SBC
Снятие дампа SIP-звонка с tcpdump

Базовый дамп всего SIP-трафика
tcpdump -i any -s 0 -w sip-dump.pcap port 5060
Дамп SIP + RTP конкретного звонка (фильтр по IP)
tcpdump -i any -s 0 -w call.pcap host 192.168.1.50
Дамп SIP-регистраций
tcpdump -i any -s 0 -w reg.pcap udp port 5060 and (sip or portrange 10000-20000)
Для серверов Kamailio / SBC
Kamailio часто проксирует транзакции без медиапотока. Чтобы зафиксировать RTP, полезно снимать дамп на медиасервере (Asterisk/FreeSWITCH/rtpengine/SEMS).
Фильтр по Call-ID:
tcpdump -i any -s 0 -A | grep "Call-ID"
Когда Call-ID найден — можно перехватывать полный дамп:
tcpdump -i any -s 0 -w call.pcap -v 'sip[0] != 0 and port 5060'
Анализ звонка в Wireshark



Быстрый поиск диалогов
Меню:
Telephony → VoIP Calls
Функции:
- расшифровка SIP-диалога,
- построение Ladder Diagram,
- декодирование и воспроизведение RTP,
- проверка потерь, джиттера, out-of-sequence.
Поиск по Call-ID
В фильтре Wireshark:
sip.Call-ID == "123456@server"
Проверка RTP-потока
Выберите звонок → RTP → Stream Analysis
Можно увидеть:
- потерянные пакеты,
- дубли,
- джиттер,
- задержку,
- MOS.
Диагностика одностороннего звука
Две наиболее частые причины:
- Проблемы NAT (ошибки в SDP, неправильный внешний IP).
- Блокировка RTP на уровне firewall/SBC.
Именно параметры SDP являются критичной частью диагностики:
c=IN IP4 ...— адрес медиапотокаm=audio ...— порт RTPa=rtcp:— параметры RTCPa=sendrecv / sendonly / recvonly— направление медиа
Мониторинг SIP-трафика через sngrep


.webp)

sngrep — самый удобный инструмент для Kamailio, SBC и Asterisk-инфраструктуры.
Запуск и просмотр всех звонков
sngrep
Фильтр по Call-ID
В интерфейсе нажать / и ввести часть Call-ID.
Фильтр по IP-адресу
sngrep -d any host 192.168.1.50
Экспорт звонка в pcap
Нажать E → выбрать формат pcap → сохранить.
Это самый быстрый способ передать инженерной группе SkyTel OU минимально необходимый дамп для диагностики.
Практические рекомендации для Kamailio, Asterisk, FreeSWITCH, SBC и 3CX
Kamailio
- включить
debug=3иlog_stderror=yesпри анализе аномалий; - перехватывать трафик на интерфейсе входа и выхода (часто это разные IP);
- проверять создание/удаление диалогов через
dlg_list.
Asterisk
- проверять
rtp set debug onпри отсутствии RTP; - смотреть несоответствие порта RTP между SDP Asterisk и клиентом;
- типичная ошибка — NAT +
directmedia=yes.
FreeSWITCH
- анализировать RTP через
sofia global siptrace on; - RTP-потоки могут идти через proxy-модуль.
3CX
- лучше снимать дамп на уровне сервера/гипервизора, т.к. 3CX сильно фильтрует SIP-логи;
- в pcap быстро определяется неправильная маршрутизация RTP.
SBC (rtpengine, SEMS, FreeSBC, Kamailio-SBC)
- проверять, кому именно назначен Relay RTP;
- смотреть перезапись SDP;
- фиксировать задержки на уровне сетевой карты.
Типовые проблемы, которые решаются pcap-дампом
- односторонний звук (RTP приходит только в одну сторону);
- звонок обрывается через 32 секунды (проблемы с ACK или re-INVITE);
- пропущенные DTMF-сигналы;
- проблемы NAT при работе за роутером;
- неверная подмена SIP From/Contact при SBC-маршрутизации;
- ошибки провайдеров, которые без pcap невозможно доказать.
Was this article helpful?