IT-LINUXMAKER, OpenSource, Tutorials

SIP-Trunks, die Standardanbindung an das öffentliche Telefonnetz

SIP-Trunks dienen in FreePBX/Asterisk dazu, eine Verbindung zwischen der Asterisk-Telefonanlage und dem öffentlichen Telefonnetz (PSTN) oder einem VoIP-Anbieter herzustellen. Sie ermöglichen es, Sprachverbindungen über das Internet aufzubauen, so wie vor 2018/2020 es über klassische ISDN- oder analoge Leitungen geschehen ist. Somit stellt ein SIP-Trunk einen virtuellen Telefonanschluss dar, über den FreePBX/Asterisk unter Nutzung von VoiceIP Telefongespräche ins Festnetz und Mobilfunknetz senden und empfangen kann. SIP-Trunks sind also das digitale Pendant zu den herkömmlichen Telefonleitungen.

Die modulare Herangehensweise von FreePBX/Asterisk macht es erforderlich, dass erst nach der Konfiguration der SIP-Settings und vor dem Anlegen der Nebenstellen, die Schnittstelle zur Aussenwelt konfiguriert werden muss. Ohne SIP-Trunk wäre Asterisk nur ein internes Telefonsystem – nützlich für interne Gespräche, aber nicht verbunden mit der Außenwelt.

SIP-Trunk in Consumer-Routern

An dieser Stelle sollte nicht unerwähnt bleiben, dass die Consumer-Router der großen Telefon-Provider (Speedport, Fritzbox etc.) die komplette SIP-Trunk-Verwaltung für den Endverbraucher unsichtbar erledigt. Der Kunde erfährt einfach nicht, dass seine Zugangsdaten dem SIP-Trunk dienen. Sie sind sozusagen Mini-PBX-Systeme, die direkt mit dem VoIP-Anbieter kommunizieren – ohne Asterisk oder zusätzliche Software.
Bei den meisten Consumer-Tarifen (z. B. Telekom MagentaZuhause) bekommt man eigentlich SIP-Einzelaccounts pro Rufnummer und keinen echten SIP-Trunk im Business-Sinn, bei dem ein Account mehrere parallele Leitungen plus Durchwahlblock ermöglicht.

Hauptleitungen

SIP (chan_pjsip)

General

Dialed Number Manipulation Rules

PJSIP Einstellungen General

PJSIP Einstellungen Erweitert

PJSIP Einstellungen Erweitert

PJSIP Einstellungen Erweitert

PJSIP Einstellungen Codecs

Die SIP-Trunks werden unter “Connectivity => Hauptleitungen” (IP-Adresse/admin/config.php?display=trunks) konfiguriert. Auf dieser Seite wird über das Dropdown-Menü “Amtsleitung hinzufügen” das Menü “+ SIP (chan_pjsip)-Amtsleitung hinzufügen” ausgewählt.

Reiter "General"

Im Reiter “General” wird unter Trunk Name ein beliebiger Name für den Trunk vergeben.
Da die Telekom drei Rufnummern vergibt und man auch mehrere Provider registrieren kann, kann man hier kreativ und pragmatisch den Namen gestalten. Zum Beispiel “Providername_Rufnummer”, da man später in den Logs auch sehr schnell die genutzten Trunk-Verbindungen erkennen möchte. Deshalb macht es Sinn, bereits im Vorfeld strukturiert zu konfigurieren.

Unter Outbound CallerID kommt die entsprechende Rufnummer rein und zwar zum Einen in spitze Klammern und zum Anderen mit der Vorwahl inklusive der “0” anstelle von der Ländervorwahl “+49”. Das ist wichtig für die interne Verarbeitung. Maximum Channels beinhaltet die Anzahl der Kanäle, zumindest  bei der Telekom sind das zwei. Alle anderen Einstellungen können aus den angebotenen Default-Werten übernommen werden.

Reiter “PJSIP Einstellungen”

General

An dieser Stelle werden die Daten eingetragen, die man von dem Telefonanbieter zur Registrierung erhalten hat. Username entspricht der Benutzerkennung (bei der Telekom) und Kennwort ist das erhaltene Passwort.
Bei SIP Server wird der Server eingetragen. Das können bei der Telekom je nach Tarif unterschiedliche Server sein (tel.t-online.de, sip-trunk.telekom.de etc.). Das sollte man in Erfahrung bringen. Und SIP Server Port muss zumindest bei sip-trunk.telekom.de der Telekom den Port “5061” enthalten, genauso wie Transport auf “0.0.0.0-tcp” stehen sollte, da ansonsten die Registrierung nicht funktioniert.

Erweitert

In FreePBX/Asterisk, bezieht sich die Option "Permanent Auth Rejection" bei den SIP-Trunks auf das Verhalten beim Umgang mit fehlgeschlagenen Authentifizierungsversuchen. Wenn sich ein Trunk eines SIP-Providers oder einer Gegenstelle mit falschen Anmeldedaten authentifizieren will, wird diese Gegenstelle dauerhaft abgelehnt, auch wenn sie sich später mit korrekten Daten meldet. Deshalb ist dieser Wert auf “Ja” zu setzen.
“Fatal Retry Interval” ist die Wartezeit (in Sekunden) nach einem schwerwiegenden Fehler (z. B. keine Antwort vom Server), bevor ein neuer Versuch erfolgt. Dmit werden Daueranfragen bei nicht erreichbarem Server vermieden. Der Wert sollte bei 300 Sekunden liegen. “General Retry Interval” sollte bei 60 Sekunden liegen und ist die Standard-Wartezeit zwischen normalen Registrierungsversuchen bei auftretenden Fehlern.
“Expiration” stellt mit 480 Sekunden die Gültigkeitsdauer einer erfolgreichen Registrierung beim Provider dar, bis eine erneute Registrierung erfolgt. Die “Max Retries”  mit 10 Versuchen stellen die maximale Anzahl von Wiederholungsversuchen dar, bevor der Trunk als „down“ gilt. Danach wird die Registrierung aufgegeben, bis ein manueller Neustart oder ein neuer Versuch erfolgt.

Der Wert unter "Outbound Proxy" wird nur benötigt, wenn man den Tarif mit Sip-Trunk bei der Telekom hat, ansonsten nicht. Die blauen Markierungen werden nur erwähnt, weil sie doch sehr speziell sind. In dem entsprechenden Fall würde hier “sip:reg.sip-trunk.telekom.de” stehen.

Unter “Contact User” wie auch “From User” kommt die Telefonnummer des Trunks hinein, und “From Domain” enthält “tel.t-online” oder eben “sip-trunk.telekom.de”.  

Bei Nutzung des Tarifs mit Sip-Trunk bei der Telekom werden zusätzlich die Parameter "Client URI" mit “sip:+49Rufnummer@sip-trunk.telekom.de”, "Server URI"  mit “sip:sip-trunk.telekom.de” und ”Match (Permit)" mit “217.0.0.0/13” befüllt. 
”Match (Permit)" ist wichtig für IP-basierte Trunks wie sip-trunk.telekom.de, und legt fest, welche IP-Adressen oder Netzbereiche eingehende SIP-Pakete für diesen Trunk akzeptiert werden dürfen. Wenn die Authentifizierung dagegen wie bei tel.t-online.de (alter T-Online SIP-Zugang) register-based erfolgt, fällt das weg, da hier über eine Registierung mit Benutzername/Passwort gearbeitet wird.

Die Option „Inband Progress“ mit “Ja” steuert, wie früh Asterisk Audio vom Provider (Trunk) an den Anrufer weiterleitet – insbesondere Rufzeichen (Ringback), Ansagen oder Fehler-Meldungen. Asterisk leitet Audio (z. B. Ansagen oder Klingeltöne) weiter, auch wenn der Anruf noch nicht offiziell angenommen wurde (200 OK). Das ist wichtig, wenn der Provider keinen 180 Ringing oder 183 Session Progress mit SDP korrekt sendet – also stattdessen einfach direkt Töne oder Ansagen streamt.

Codecs

Bei der Telekom sollten im PJSIP-Trunk g722 und alaw als Codecs aktiviert sein, weil die Telekom diese für die Sprachübertragung unterstützt – insbesondere alaw (G.711a) ist in Europa der Standard. g722 bietet HD-Voice und wird bevorzugt verwendet, wenn beide Seiten das können. Die Video-Codecs h264 und mpeg4 sind in der Regel optional und werden von der Telekom für Sprachanrufe nicht verwendet, können aber aktiviert bleiben, falls ein internes Endgerät (wie ein Video-Telefon) sie unterstützt – sie stören nicht, solange sie nicht genutzt werden. Asterisk wählt bevorzugt den besten verfügbaren Codec (z. B. g722), fällt dann auf alaw zurück, wenn nötig.

Reiter “Dial Number Manipulation Rules”

Die „Dial Number Manipulation Rules“ im Trunk dienen dazu, die Rufnummer nochmal zu verändern, bevor sie an den SIP-Provider (Trunk) geschickt wird. Auch wenn in den Outbound Routes schon Nummern manipuliert werden, gibt es gute Gründe, zusätzliche Manipulationen im Trunk einzusetzen. Während die Outbound Routes regeln, was aus dem Telefon kommt. Regeln Trunk-Regeln das, was an den Provider geht.
Zum Beispiel wählen Sie intern 089123456. Dann hängt die Outbound Route eine 0 vorne dran, also 0089123456. Die Trunk-Regel entfernt die führende 0 wieder und hängt stattdessen +49 dran zu +4989123456.

Warum macht man Beides?

  • Trunks können unterschiedliche Anforderungen haben (z. B. +49 vs. 0049 vs. nur Ortsnetz).
  • Outbound Routes behandeln alle Ziele gleich (z. B. Handy, Festnetz), aber nicht jeder Trunk braucht dasselbe Format.
  • Man kann dadurch einheitlich wählen (z. B. immer 089... oder +49...), und die Anpassung erfolgt erst trunkspezifisch.

Dial Rules im Trunk sind die letzte Anpassungsschicht, die dafür sorgt, dass der Provider genau das Format bekommt, das er erwartet – egal, wie die Route vorher die Nummer aufgebaut hat. Man braucht sie nicht immer, aber sie sind wichtig bei mehreren Trunks oder spezifischen Provideranforderungen.

Die hier angebotenen Dial Rules in dem Screenshot passen insoweit für Stuttgart und können in der Vorwahl angepasst übernommen werden.