В тази статия ще обсъдим основите на улавянето и анализа на SIP трафик, генериран от 3CX. Статията е предназначена за начинаещи системни администратори или обикновени потребители, чиито задължения включват поддръжка на телефонни системи. За дълбочинно изучаване на темата препоръчваме да се запишете на .
3CX V16 позволява да улавяте SIP трафик директно през уеб интерфейса на сървъра и да го запазвате в стандартен формат Wireshark PCAP. Можете да прикачите файла с улавянето при контакт с техническата поддръжка или да го изтеглите за самостоятелен анализ.
Ако 3CX работи на Windows, е необходимо сами да инсталирате Wireshark на сървъра 3CX. В противен случай, при опит за улавяне, ще се появи следното съобщение.

В системите с Linux инструментът tcpdump се инсталира автоматично при инсталация или обновление на 3CX.
Улавяне на трафик
За да започнете улавянето, отидете в секцията на интерфейса Главна > Събития SIP и изберете интерфейса, от който ще извършвате улавянето. Можете також да улавяте трафика на всички интерфейси едновременно, освен на интерфейсите за тунелиране IPv6.

В 3CX за Linux можете да улавяте трафик за локалния хост (lo). Това улавяне се използва за анализ на свързванията на SIP клиенти през .
Бутонът „Улавяне на трафик“ стартира Wireshark на Windows или tcpdump на Linux. В този момент трябва бързо да възпроизведете проблема, тъй като улавянето натоварва процесора и заема значително място на диска.

Обърнете внимание на следните параметри на повикването:
- Номера, от които е направено повикването, на които е направено и други номера / участници в повикването.
- Точното време на възникване на проблема по часовника на сървъра 3CX.
- Маршрутът на повикването.
Опитайте се да не кликате на други места в интерфейса, освен на бутона „Спри“. Също така, не преминавайте по други връзки в този прозорец на браузъра. В противен случай улавянето на трафика ще продължи във фон и ще доведе до допълнително натоварване на сървера.
Получаване на файла с улавяне
Бутонът „Спри“ спира улавянето и запазва файла с улавяне. Можете да изтеглите файла на компютъра си за анализ в инструмента Wireshark или да генерирате специален файл , който ще включва този захват и друга отладъчна информация. След изтегляне или включване в пакета с техническа поддръжка, файлът с захвата автоматично се изтрива от сървъра 3CX поради съображения за сигурност.
На сървъра 3CX файлът се намира на следното място:
- Windows: C:ProgramData3CXInstance1DataLogsdump.pcap
- Linux: /var/lib/3cxpbx/Instance/Data/Logs/dump.pcap
За да избегнете повишено натоварване на сървъра или загуба на пакети при захвата, периодът за захващане е ограничен до 2 млн. пакета. След това захватът автоматично се спира. Ако ви е нужен по-дълъг захват, използвайте отделен инструмент Wireshark, както е описано по-долу.
Захват на трафика с инструмента Wireshark
Ако ви интересува по-дълбок анализ на мрежовия трафик, захващайте го ръчно. Изтеглете инструмента Wireshark за вашата операционна система. . След инсталирането на инструмента на сървъра 3CX, отидете в раздела Capture > Interfaces. Тук ще се покажат всички мрежови интерфейси на операционната система. IP адресите на интерфейсите може да се покажат в стандарт IPv6. За да видите адреса IPv4, кликнете върху адреса IPv6.

Изберете интерфейс за захват и натиснете бутона Options. Свалете отметката от Capture Traffic in promiscuous mode, а останалите настройки оставете без промяна.

Сега трябва да възпроизведете проблема. Когато проблемът е възпроизведен, спрете захвата (меню Capture > Stop). Можете да прегледате SIP съобщенията в меню Telephony > SIP Flows.
Основи на анализа на трафика — SIP INVITE съобщение
Нека разгледаме основните полета на SIP съобщението INVITE, което се изпраща за установяване на VoIP повикване, т.е. е изходна точка за анализа. Обикновено SIP INVITE включва от 4 до 6 полета с информация, която е използвана от крайни SIP устройства (телефони, шлюзове) и оператори на телекомуникации. Разбирането на съдържанието на INVITE и следващите го съобщения често помага да се определи източникът на проблема. Освен това, знанието за полетата на INVITE помага при свързване на SIP оператори с 3CX или обединяване на 3CX с други SIP АТС.
В съобщението INVITE потребителите (или SIP устройства) се определят по URI. Обикновено SIP URI – това е номерът на телефона на потребителя + адрес на SIP сървера. SIP URI много приличат на адреса на електронна поща и се записват като sip:x@y:Port.

Request-Line-URI:
Request-Line-URI — полето съдържа получателя на повикването. В него се съдържа същата информация, която е в полето To, но без показваното име на потребителя (Display Name).
Via:
Via — все SIP-сервери (прокси), через которые проходит запрос INVITE, добавляют свой IP-адрес и порт в верхнюю часть заголовка Via, с которого поступило сообщение. Затем сообщение передается дальше по маршруту. Когда конечный получатель отвечает на запрос INVITE, все промежуточные узлы «просматривают» заголовок Via и возвращают сообщение отправителю тем же маршрутом. При этом промежуточный SIP-прокси удаляет свои данные из заголовка.
От:
From — заголовок указывает на инициатора запроса с точки зрения SIP-сервера. Он формируется аналогично e-mail адресу (user@domain, где user — это внутренний номер пользователя 3CX, а domain — локальный IP-адрес или SIP-домен сервера 3CX). Как и заголовок To, заголовок From содержит URI и, опционально, отображаемое имя пользователя (Display Name). По заголовку From можно определить, как обрабатывать этот SIP-запрос.
Стандарт SIP RFC 3261 предполагает, что если отображаемое имя (Display Name) не передается, IP-телефон или VoIP-шлюз (UAC) должны использовать имя «Anonymous», например, From: «Anonymous» .
Кому:
To — этот заголовок указывает на получателя запроса. Это может быть конечный получатель вызова или промежуточный узел. Обычно в заголовке содержится SIP URI, однако возможны и другие схемы (см. RFC 2806 [9]). Тем не менее SIP URI должен поддерживаться во всех реализациях протокола SIP, независимо от производителя оборудования. Заголовок To также может содержать отображаемое имя (Display Name), например, To: «Имя Фамилия» .
Обычно поле To содержит SIP URI, указывающий на первый (следующий) SIP-прокси, который будет обрабатывать запрос. Это не обязательно должен быть конечный получатель запроса.
Контакт:
Contact — заголовок содержит SIP URI, по которому можно связаться с отправителем запроса INVITE. Это обязательный заголовок, который должен содержать только один SIP URI. Он является частью двусторонней коммуникации, соответствующей первоначальному запросу SIP INVITE. Очень важно, чтобы заголовок Contact содержал корректную информацию (включая IP-адрес), по которому отправитель запроса ожидает ответа. URI Contact используется и в дальнейших коммуникациях, уже после установления сеанса связи.
Разрешить:
Allow — полето съдържа списък с параметри (SIP-методи), разделени със запетая. Те описват какви възможности на SIP протокола поддържа този изпращач (устройство). Пълният списък на методите включва: ACK, BYE, CANCEL, INFO, INVITE, NOTIFY, OPTIONS, PRACK, REFER, REGISTER, SUBSCRIBE, UPDATE. Подробности за SIP методите са описани .
Източник: habr.com
