Beiträge durchsuchen

Themenreihe FreePBX 15/Asterisk 16-Teil 4.4.1. Registrieren der FreePBX an einer anderen FreePBX mit IAX

Hier gehts zum Forum.

Was wird benötigt?

 

In der Praxis gibt es Szenarien in denen es Sinn macht 2 FreePBX (oder auch mehrere) miteinander zu verbinden.

Ein Beispiel wäre eine Firma mit mehreren Niederlassungen, in denen jeweils eine FreePBX betrieben wird.

Werden die Anlagen der einzelnen Firmenteile miteinander verbunden, können diese untereinander und anlagenintern beliebig miteinander telefonieren. Ich möchte hierfür nur 3 wichtige Vorteile nennen:

  1. Die Amtsleitungen werden für die unternehmensinterne Kommunikation nicht belastet und bleiben für Kunden und Geschäftspartner frei
  2. Es können beliebig viele parallele Gespräche geführt werden, denn es besteht keine Beschränkung der parallelen Gespräche wie bei den Amtsleitungen
  3. Es besteht die Möglichkeit der umfassenden, unternehmensinternen Nutzung von Telefon und Video-Konferenzen.

Im Teil 4.4. wird erläutert wie FreePBX-Telefonanlagen über das TCP-Protokoll miteinander verbunden werden.

Dieser Beitrag zeigt die Verbindung von zwei FreePBX-Anlagen über das IAX-Protokoll. Das IAX-Protokoll (InterAsterisk eXchange) wurde speziell für die interne Kommunikation zwischen verschiedenen FreePBX/Asterisk-Systemen entwickelt. Es zeichnet sich durch eine hohe Stabilität und einen hohen Datendurchsatz aus.

Hier gehts zum Forum.

4 Kommentare zu Themenreihe FreePBX 15/Asterisk 16-Teil 4.4.1. Registrieren der FreePBX an einer anderen FreePBX mit IAX

  1. funktioniert super. Viele Dank.
    Im freepbx-forum von Sangoma gibt es dazu einige Anmerkungen (auch von mir), wie da wohl zusätzlich noch der Status der Telefone (besetzt, DND, grün) mit angezeigt werden kann, wenn die Nebenstelle an der jeweils anderen PBX hängt.
    Leider ohne wirklich gescheite Lösung. Was ich da bisher gelernt habe, ist IAX bzw. jetzt IAX2 wohl ein ganz unabhängiges Protokoll zu chan-sip oder pjsip. Im Forum ist dort auf ein script verwiesen, das schon funktioniert. Aber irgendwie finde ich das keine besonder gute Lösung.
    Vielleicht findet Herr Griebsch da etwas besseres?

    1. Ich hab mir das Problem jetzt mal angeschaut. Also erst mal was Grundsätzliches: Ein Status, in diesem Fall der Leitungsstatus einer bestimmten Nebenstelle, wird von der FreePBX nicht im Gießkannenprinzip auf alle verfügbaren Nebenstellen und am besten noch darüber hinaus gesendet, sondern ausschließlich an “Abfrager” die in der FreePBX auch authentifiziert sind. In erste Linie sind das die Endgeräte, welche an der jeweiligen Nebenstelle registriert sind. An diesen Endgeräten kann der Status als BLF angezeigt werden. Der Status kann aber auch über das AMI abgefragt werden. Das AMI ist eine Programmierschnittstelle. Programme, welche auf das AMI zugreifen müssen sich mit Benutzername und Passwort an der FreePBX authentifizieren. im konkreten Fall soll nun aber der Status einer Nebenstelle an FreePBX 2 von einem Endgerät welches an FreePBX 1 registriert ist abgefragt werden. Also von einer FreePBX, an dem das abfragende Endgerät gar nicht authentifiziert ist. Das geht aber leider nicht. Ein Endgerät kann immer nur Informationen von der FreePBX abfragen, an welcher es auch registriert und damit authentifiziert ist. Da führt beim besten Willen kein Weg rein. Einzige denkbare Lösung wäre, das Endgerät an FreePBX 1 zusätzlich an FreePBX 2 zu registrieren. Dann könnte man für die entsprechende Nebenstelle den Leitungsstatus abfragen. Diese Direkt-Registrierung müsste dann aber für jede Nebenstelle, deren Status überwacht werden soll, erfolgen. Mehrfachregistrierungen an einer Nebenstelle sind ja möglich. Man muss ja über diese Direktverbindung nicht telefonieren. Das kann man dann ja weiter über IAX zwischen den beiden Anlagen machen.
      Aber bitte beachten: Ich habe das nicht getestet. Es ist eine rein theoretische Betrachtung zur Lösung dieses Problems.
      Das erwähnte Script im Sangoma Portal habe ich mir auch angeschaut. Auch bei diesem Script wird davon ausgegangen, das es in der FreePBX keine entsprechenden on Board-Funktionen gibt. Deshalb läuft es auch völlig eigenständig und unabhängig und macht übrigens in Ergebnis das selbe, was die von mir angedachte zusätzliche Direkt-Registrierung der Nebenstelle an der 2. FreePBX macht. Es authentifiziert sich an der 2. FreePBX (in diesem Fall über AMI) und fragt den Status ab. Allerdings immer nur dann, wenn das Script gestartet wird. Die Aktualiserung erfolgt also in Intervallen und nicht in Echtzeit.
      Grüße

      1. Mit der Bastelanleitung von Lorne Gäetz funktioniert das. Hab’s grad nochmal getestet.
        https://wiki.freepbx.org/display/FDT/Remote+BLF%27s+using+PJSIP
        Funktioniert auch mit nicht-lokalen IP-Adressen, also wie bei mir mit URL-Namen.
        Voraussetzung ist allerdings, dass die Nummer der Nebenstelle auf der entfernten PBX (also quasi der Filiale) nicht auch gleichzeitig bei der Hauptstelle existiert. Es wird ein “Hint” auf der lokalen PBX, der Hauptstelle angelegt (ist in meinem Beispiel die Nebenstelle 68). Und der wird brav von grün auf rot über die bestehende SIP-Abfrage aktualisiert. Im Yealink-Telefon ist da schlichtweg die 68 als BLF eingetragen, die gar nicht als lokale Nebenstelle existiert. Sieht dann auf der lokalen PBX (Hauptstelle) so aus:
        freepbx*CLI> core show hint 68
        68@from-internal-cus: PJSIP/68&PJSIP/9068& State:Idle Presence:not_set Watchers 1
        1 hint matching extension 68
        Das Presence not set stört nicht. Der Watcher ist mein lokales Yealink
        Das Handy verbunden mit ext 68 läuft mit Linphone, verbunden miit der entfernten PBX (meine Cloud-PBX).

      2. Hier noch eine kleine Erweiterung, da ja gern auch mal keine direkten oder VPN-Verbindungen zwischen den beiden PBX-en bestehen. Die Outgoing Peer-Details sollten dabei idealerweise verschlüsselt werden mit den zusätzlichen Zeilen:
        forceencryption=yes
        encryption=yes
        auth=md5
        Ein Lets-Encrypt Zertifikat brauchts dazu nicht. Das selbst erstellte Default Zert der PBX reicht.
        Der Host ist dann halt der URL-Name der Gegenseite, also z.B. xyz12345.myfritz.net. Meistens hat man ja leider keine feste IP von der Telekom. Besser wär’s.
        Leider muss man dann auch den Port 4569 UDP der FritzBox aufmachen und an die IP der PBX weiterleiten. Jetzt wird’s dann etwas komplizierter.
        Um Angreifer abzuwehren sollte dann in der PBX-Firewall “advanced custom rules” aktiviert werden.
        Eine iptables-Regel in dem gelb unterlegten Feld müsste dann eingetragen werden wie folgt:
        -A fpbxinterfaces -p udp ! -s 217.xxx.yyy.zzz –dport 4569 -j DROP
        Damit sollte ausser der 217er IP-Adresse (das ist die andere PBX) niemand über den Port 4569 UDP reinkommen können. Obacht: in der Zeile ist ein wichtiges Ausrufezeichen drin, vorne ein Minus.
        Offener wird das Ganze dann leider ohne fixe IP. Da könnte man z.B. 91.0.0.0/13 oder so abfangen, oder was die FritzBoxen halt eben für externe Adressen täglich bekommen. Immerhin ist der Rest der Welt draussen und 32-stelligen Passwörter der FreePBX sind ja auch Standard bei den Nebenstellen.

Schreibe einen Kommentar