Анализ SIP-сессии (SIP + RTP) в Wireshark: расшифровка VoIP-вызова
Зачем это нужно?
Когда VoIP-вызов «не идёт», «обрывается» или «слышно эхо», стандартные инструменты (ping, traceroute) бесполезны. Проблема — в прикладном уровне: SIP-сигнализации и RTP-медиапотоке.
Wireshark — единственный инструмент, который позволяет «увидеть» весь жизненный цикл вызова: от INVITE до BYE, и прослушать сам разговор (если нет шифрования).
В этой статье — пошаговый разбор реального SIP-вызова в Wireshark, включая фильтрацию, анализ кодеков и воспроизведение аудио.
✅ Информация основана на:
— Wireshark 4.2+
— RFC 3261 (SIP), RFC 3550 (RTP)
— Практике диагностики на FreePBX, 3CX, Asterisk
— Безопасность: анализ проводится только в рамках согласованного тестирования
1. Что такое SIP и RTP — кратко
| Протокол | Назначение | Порт по умолчанию |
|---|---|---|
| SIP (Session Initiation Protocol) | Установка, управление и завершение сессии | 5060 (UDP/TCP) |
| RTP (Real-time Transport Protocol) | Передача аудио/видео | Динамический (10000–20000) |
| RTCP | Контроль качества (джиттер, потери) | RTP + 1 |
Важно: SIP — это «телефонный звонок», RTP — это «голос в трубке».
2. Подготовка к захвату трафика
Что понадобится:
| Компонент | Примечание |
|---|---|
| Wireshark 4.0+ | С поддержкой RTP и VoIP-анализа |
| Доступ к сети | SPAN-порт, TAP или локальный захват |
| VoIP-оборудование | IP-телефон, softphone или PBX |
| Разрешение на анализ | Только в тестовой среде или с согласия пользователей |
⚠️ Никогда не анализируйте зашифрованный трафик (SRTP, TLS) без ключей — вы увидите только шум.
3. Захват трафика
Шаг 1: Выберите интерфейс
- Запустите Wireshark
- Выберите сетевой интерфейс (или SPAN-порт коммутатора)
- Нажмите Start
Шаг 2: Инициируйте вызов
Сделайте тестовый вызов между двумя устройствами (например, IP-телефон → softphone).
Шаг 3: Остановите захват
После завершения вызова нажмите Stop (красный квадрат).
4. Фильтрация SIP-трафика
В строке фильтра введите:
sip
Вы увидите только SIP-пакеты: INVITE, 100 Trying, 180 Ringing, 200 OK, ACK, BYE.
Чтобы увидеть всё, что связано с вызовом (включая RTP), используйте:
ip.addr == 192.168.1.10 || ip.addr == 192.168.1.20
(замените IP на адреса участников вызова)
5. Анализ SIP-диалога
Шаг 1: Найдите INVITE
Кликните по первому пакету INVITE. Внизу раскройте:
- SIP → Request-Line: метод и URI
- Via: путь сигнала (показывает NAT и прокси)
- Contact: реальный IP телефона (важно при NAT)
- SDP (Session Description Protocol): параметры медиа
Шаг 2: Проверьте SDP
В SDP вы найдёте:
m=audio 16384 RTP/AVP 0 8 101 c=IN IP4 192.168.1.10 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:101 telephone-event/8000
Это означает:
- Аудиопорт:
16384 - Поддерживаемые кодеки:
G.711 μ-law (0),G.711 A-law (8),DTMF (101) - IP для RTP:
192.168.1.10
Шаг 3: Сопоставьте ответ 200 OK
В ответе от получателя будет свой SDP — с выбранным кодеком и портом. Именно эти данные определяют, куда и как пойдёт RTP-поток.
6. Анализ RTP-потока
Шаг 1: Перейдите в меню VoIP
- В Wireshark: Telephony → VoIP Calls
- В списке вызовов выберите ваш сеанс
- Нажмите Flow — откроется диаграмма вызова
Шаг 2: Просмотрите медиапоток
- В том же окне нажмите Prepare Filter → Apply
- Теперь видны только пакеты этого вызова
- Перейдите: Telephony → RTP → RTP Streams
- Выберите поток и нажмите Analyze
Шаг 3: Оцените качество
В отчёте вы увидите:
| Параметр | Норма | Проблема |
|---|---|---|
| Packet Loss | < 1% | > 3% — обрывы речи |
| Jitter | < 30 мс | > 50 мс — задержки, эхо |
| MOS Score | > 4.0 | < 3.5 — плохое качество |
7. Прослушивание аудио (если не SRTP)
- В окне RTP Streams выберите поток
- Нажмите Play Streams
- Wireshark воспроизведёт аудио через динамики
🔒 Если используется SRTP (шифрование), воспроизведение невозможно без ключей.
8. Распространённые проблемы и как их найти
| Симптом | Где искать в Wireshark | Решение |
|---|---|---|
| Вызов не идёт | Нет INVITE или 404/486 в ответе | Проверьте маршрутизацию SIP, ACL, firewall |
| Односторонняя слышимость | RTP только в одну сторону | Проблема с NAT — настройте STUN или RTP proxy |
| Эхо | Высокий jitter, дублирующие пакеты | Проверьте acoustic echo cancellation на телефонах |
| Обрыв через 30 сек | Пакеты BYE или re-INVITE с ошибкой | Проверьте NAT timeout или SIP ALG на роутере |
9. Советы по эффективному анализу
- Всегда захватывайте трафик до и после вызова (5–10 сек)
- Используйте coloring rules для SIP/RTP (View → Coloring Rules)
- Экспортируйте вызов: File → Export Specified Packets
- Для шифрованного трафика — собирайте ключи (например, из FreePBX logs)
10. Заключение
Анализ SIP/RTP в Wireshark — это ключевой навык для VoIP-инженера. Он позволяет:
- Точно локализовать проблему: сеть, PBX или терминал
- Подтвердить качество связи цифрами (MOS, jitter, loss)
- Прослушать вызов для верификации жалоб пользователей
Главное правило: сначала SIP (установка сессии), потом RTP (медиапоток). Если SIP прошёл — ищите проблему в RTP и NAT.
Освоив этот метод, вы будете решать 90% VoIP-инцидентов за 10 минут.
