In diesem Artikel beschäftigen wir uns mit den Grundlagen der Erfassung und Analyse von SIP-Traffic, der von der 3CX-Telefonanlage generiert wird. Der Artikel richtet sich an angehende Systemadministratoren oder normale Benutzer, die für die Wartung der Telefonie verantwortlich sind. Für eine vertiefte Sicht auf das Thema empfehlen wir den Besuch des .
3CX V16 ermöglicht die Erfassung von SIP-Traffic direkt über die Weboberfläche des Servers und speichert die Daten im Standardformat Wireshark PCAP. Sie können die Capture-Datei bei einer Anfrage an den technischen Support anhängen oder für eine eigene Analyse herunterladen.
Falls 3CX auf Windows läuft, müssen Sie Wireshark selbst auf dem 3CX-Server installieren. Andernfalls erhalten Sie bei dem Versuch, einen Capture durchzuführen, die folgende Meldung.

In Linux-Systemen wird das Tool tcpdump automatisch bei der Installation oder Aktualisierung von 3CX installiert.
Traffic-Erfassung
Um mit der Erfassung zu beginnen, navigieren Sie zu dem Abschnitt Hauptmenü > SIP-Ereignisse und wählen Sie die Schnittstelle aus, auf der der Capture durchgeführt werden soll. Es ist auch möglich, den Traffic auf allen Schnittstellen gleichzeitig zu erfassen, mit Ausnahme der IPv6-Tunneling-Schnittstellen.

In 3CX für Linux können Sie den Datenverkehr für den lokalen Host (lo) erfassen. Diese Erfassung dient zur Analyse von SIP-Client-Verbindungen. .
Die Schaltfläche „Datenverkehr erfassen“ startet Wireshark unter Windows oder tcpdump unter Linux. In diesem Moment sollten Sie schnell das Problem reproduzieren, da die Erfassung die CPU belastet und viel Speicherplatz benötigt.

Beachten Sie die folgenden Anrufparameter:
- Die Nummer, von der angerufen wurde, die Nummer, die angerufen wurde, sowie andere Nummern / Teilnehmer des Anrufs.
- Die genaue Zeit des Problems gemäß der Uhr des 3CX-Servers.
- Der Verlauf des Anrufs.
Versuchen Sie, nicht an anderen Stellen der Benutzeroberfläche zu klicken, außer auf die Schaltfläche „Stoppen“. Gehen Sie auch nicht auf andere Links in diesem Browserfenster. Andernfalls wird die Datenverkehrserfassung im Hintergrund fortgesetzt und führt zu zusätzlicher Belastung des Servers.
Erfassung der Datei
Die Schaltfläche „Stoppen“ beendet die Erfassung und speichert die Datei. Sie können die Datei auf Ihren Computer herunterladen, um sie in der Anwendung Wireshark zu analysieren, oder eine spezielle Datei , der diesen Capture und weitere Debugging-Informationen enthält. Nach dem Herunterladen oder Einschluss in das Support-Paket wird die Capture-Datei aus Sicherheitsgründen automatisch vom 3CX-Server gelöscht.
Auf dem 3CX-Server befindet sich die Datei an folgendem Ort:
- Windows: C:ProgramData3CXInstance1DataLogsdump.pcap
- Linux: /var/lib/3cxpbx/Instance/Data/Logs/dump.pcap
Um eine Überlastung des Servers oder Paketverluste während des Captures zu vermeiden, ist der Capture-Zeitraum auf 2 Millionen Pakete begrenzt. Nach dieser Menge stoppt der Capture automatisch. Wenn Sie einen längeren Capture benötigen, verwenden Sie das separate Tool Wireshark, wie unten beschrieben.
Capture des Traffics mit dem Tool Wireshark
Wenn Sie eine tiefere Analyse des Netzverkehrs wünschen, erfassen Sie diesen manuell. Laden Sie das Tool Wireshark für Ihr Betriebssystem herunter . Nach der Installation des Tools auf dem 3CX-Server gehen Sie zu Capture > Interfaces. Hier werden alle Netzwerkinterfaces des Betriebssystems angezeigt. Die IP-Adressen der Interfaces können im IPv6-Format angezeigt werden. Um die IPv4-Adresse zu sehen, klicken Sie auf die IPv6-Adresse.

Wählen Sie das Interface für das Capture aus und klicken Sie auf die Schaltfläche Optionen. Entfernen Sie das Häkchen bei Capture Traffic in promiscuous mode und lassen Sie die anderen Einstellungen unverändert.

Nun sollte das Problem reproduziert werden. Sobald das Problem reproduziert wurde, stoppen Sie die Erfassung (Menü Capture > Stop). SIP-Nachrichten können im Menü Telephony > SIP Flows ausgewählt werden.
Grundlagen der Verkehrsanalyse – SIP INVITE-Nachricht
Betrachten wir die Hauptfelder der SIP INVITE-Nachricht, die zum Aufbau eines VoIP-Anrufs gesendet wird, d.h. sie stellt den Ausgangspunkt für die Analyse dar. Normalerweise enthält ein SIP INVITE zwischen 4 und 6 Feldern mit Informationen, die von den Endgeräten (Telefonen, Gateways) und den Netzbetreibern verwendet werden. Das Verständnis des Inhalts von INVITE und den folgenden Nachrichten hilft häufig, die Quelle des Problems zu identifizieren. Darüber hinaus erleichtert das Wissen über die INVITE-Felder die Verbindung von SIP-Anbietern mit 3CX oder die Integration von 3CX mit anderen SIP-TK-Anlagen.
In der INVITE-Nachricht werden die Benutzer (oder SIP-Geräte) durch eine URI identifiziert. Normalerweise besteht die SIP-URI aus der Telefonnummer des Benutzers + der Adresse des SIP-Servers. Die SIP-URI ist der E-Mail-Adresse sehr ähnlich und wird als sip:x@y:Port angegeben.

Request-Line-URI:
Request-Line-URI – dieses Feld enthält den Empfänger des Anrufs. Es enthält die gleichen Informationen wie das Feld To, jedoch ohne den angezeigten Benutzernamen (Display Name).
Via:
Via — jeder SIP-Server (Proxy), durch den die INVITE-Anfrage läuft, fügt oben in der Liste Via seine IP-Adresse und den Port hinzu, über den die Nachricht empfangen wurde. Die Nachricht wird dann weiter auf ihrem Weg geleitet. Wenn der endgültige Empfänger auf die INVITE-Anfrage antwortet, „überprüfen“ alle Transitknoten den Via-Header und senden die Nachricht auf demselben Weg an den Absender zurück. Dabei entfernt der transitierende SIP-Proxy seine Informationen aus dem Header.
Von:
Der From-Header gibt den Initiator der Anfrage aus der Sicht des SIP-Servers an. Der Header wird auf die gleiche Weise wie eine E-Mail-Adresse (user@domain, wobei user die Durchwahl des 3CX-Benutzers ist und domain die lokale IP-Adresse oder SIP-Domain des 3CX-Servers) erstellt. Wie der To-Header enthält auch der From-Header eine URI und optional einen angezeigten Benutzernamen (Display Name). Anhand des From-Headers lässt sich verstehen, wie diese SIP-Anfrage behandelt werden sollte.
Der SIP-Standard RFC 3261 sieht vor, dass, wenn der angezeigte Name (Display Name) nicht übermittelt wird, das IP-Telefon oder der VoIP-Gateway (UAC) den angezeigten Namen „Anonym“ verwenden sollten, zum Beispiel From: „Anonym“ .
An:
To — dieser Header zeigt den Empfänger der Anfrage an. Es kann sich um den endgültigen Empfänger des Aufrufs oder um eine Zwischenstation handeln. Normalerweise enthält der Header eine SIP-URI, jedoch sind auch andere Formate möglich (siehe RFC 2806 [9]). Die SIP-URI sollte jedoch in allen Implementierungen des SIP-Protokolls unterstützt werden, unabhängig vom Gerätehersteller. Der To-Header kann auch einen angezeigten Namen (Display Name) enthalten, zum Beispiel: To: „Vorname Nachname“ .
In der Regel enthält das To-Feld eine SIP-URI, die auf den ersten (nächsten) SIP-Proxy verweist, der die Anfrage verarbeiten wird. Dies muss nicht unbedingt der endgültige Empfänger der Anfrage sein.
Contact:
Contact — der Header enthält die SIP-URI, unter der der Absender der INVITE-Anfrage kontaktiert werden kann. Dies ist ein obligatorischer Header, der nur eine einzige SIP-URI enthalten sollte. Er ist Teil der bidirektionalen Kommunikation, die der ursprünglichen SIP INVITE-Anfrage entspricht. Es ist äußerst wichtig, dass der Contact-Header korrekte Informationen enthält (einschließlich der IP-Adresse), unter der der Absender der Anfrage eine Antwort erwartet. Die URI Contact wird auch für weitere Kommunikationen verwendet, nach der Herstellung der Verbindung.
Allow:
Allow — das Feld enthält eine Liste von Parametern (SIP-Methoden), die durch Kommas getrennt sind. Diese beschreiben, welche Funktionen das SIP-Protokoll von diesem Sender (Gerät) unterstützt. Die vollständige Liste der Methoden: ACK, BYE, CANCEL, INFO, INVITE, NOTIFY, OPTIONS, PRACK, REFER, REGISTER, SUBSCRIBE, UPDATE. Weitere Details zu den SIP-Methoden sind beschrieben. .
Quelle: habr.com
