General13 views

Як зняти дамп SIP-дзвінка за допомогою tcpdump, Wireshark та sngrep

Швидке та точне захоплення мережевого трафіку — обов’язкова навичка для VoIP-інженерів, які працюють із платформами Kamailio, Asterisk, FreeSWITCH, 3CX, SBC-рішеннями та системами маршрутизації медіапотоків. Це особливо важливо під час діагностики RTP-проблем, одностороннього звуку, обривів дзвінків, проблем NAT, некоректного SDP або помилок SIP-реєстрації.

SkyTel OU регулярно використовує ці методи для аналізу та аудиту якості VoIP-трафіку як у власній інфраструктурі, так і у взаємодії з операторами та клієнтськими VoIP-платформами.


Вибір інструмента для зняття дампу

Інструмент Можливості Коли використовувати

tcpdump низькорівневе перехоплення пакетів, максимальна точність збирання «сирих» 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 для конкретного хоста

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 часто проксіює лише SIP-сигналізацію, не обробляючи RTP. Тому RTP краще перехоплювати на медіасервері (Asterisk, FreeSWITCH, rtpengine, SEMS).

Пошук Call-ID:

tcpdump -i any -s 0 -A | grep "Call-ID"

Захоплення повного дзвінка:

tcpdump -i any -s 0 -w call.pcap -v 'sip[0] != 0 and port 5060'


Аналіз дзвінків у Wireshark

Перегляд списку VoIP-дзвінків

Меню:
Telephony → VoIP Calls

Функції:

  • повне декодування SIP-діалогу
  • ladder-діаграма
  • декодування та програвання RTP
  • виявлення втрат пакетів, джитеру та порушення порядку

Фільтрація за Call-ID

sip.Call-ID == "123456@server"

Аналіз RTP-потоків

Вибрати дзвінок → RTP → Stream Analysis

Показники:

  • втрачені пакети
  • дублікати
  • джитер
  • затримка
  • MOS

Діагностика одностороннього звуку

Основні причини:

  1. NAT-проблеми (некоректний зовнішній IP у SDP)
  2. Блокування RTP брандмауером або SBC

Важливі SDP-поля:

  • c=IN IP4 ... — медіа-IP
  • m=audio ... — RTP-порт
  • a=rtcp: — параметри RTCP
  • a=sendrecv / sendonly / recvonly — напрямок медіа

Моніторинг SIP-трафіку за допомогою sngrep

sngrep — найзручніший інструмент у Kamailio, SBC, Asterisk та FreeSWITCH інфраструктурах.

Перегляд усіх дзвінків

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
  • перехоплювати трафік на вхідному та вихідному інтерфейсі
  • перевіряти створення/видалення діалогів через dlg_list

Asterisk

  • rtp set debug on допомагає при відсутності RTP
  • перевіряти відповідність RTP-портів у SDP
  • типові проблеми — NAT + directmedia=yes

FreeSWITCH

  • увімкнути sofia global siptrace on
  • RTP може проходити через proxy-модулі

3CX

  • оптимально перехоплювати трафік на рівні сервера або гіпервізора
  • PCAP швидко показує неправильний RTP-маршрут

SBC (rtpengine, SEMS, FreeSBC, Kamailio-SBC)

  • перевіряти, кому фактично передається RTP
  • аналізувати переписування SDP
  • звертати увагу на затримки мережевих інтерфейсів

Типові проблеми, які легко виявити за допомогою PCAP-дампу

  • односторонній звук
  • обрив дзвінка через 32 секунди (проблеми з ACK або re-INVITE)
  • відсутність DTMF
  • помилки NAT
  • проблеми з переписуванням SIP-заголовків за SBC
  • помилки операторів, які можна довести лише PCAP-дампом

Was this article helpful?