Mehrere Asterisk-Server über das IAX2-Protokoll verbinden

5.01.2022 (zuletzt aktualisiert am 26.01.2022)

Mehrere Asterisk-Server lassen sich mit Hilfe des IAX2-Protokolls zu Netzwerken verbinden. Die einzelnen Asterisk-Server sind über Durchwahlen erreichbar.  Sind die  Server über das Internet verbunden, müssen in den Routern nur der Port 4569 UDP weitergeleitet werden. Über diesen Port können eine große Anzahl von  Gesprächen geleitet werden. Selbst wenn mehrere Asterisk-Server über IAX2 erreichbar sind, reicht es aus nur den Port 4569 UDP weiterzuleiten.

Die einzelnen Asterisk-Server sind immer paarweise miteinander zu verbinden. Ein Asterisk-Server kann sich mit mehreren anderen Asterisk-Servern paaren. Dadurch bilden sich Netzwerke mit großer Gestaltungsfreiheit.

Die Asterisk-Server lassen sich in einem weiteren Schritt zu dynamischen Netzwerken verknüpfen. Nicht jeder Server muss mit allen anderen Servern eine direkte Verbindung besitzen. Fallen Asterisk-Server aus, sucht sich das System alternative Verbindungswege über dritte Asterisk-Server.

Getestet wurde das hier vorgestellte Verfahren mit 4 Asterisk-Servern, die miteinander über IAX2 verbunden sind. Über Vorwahlen kann die Route für Telefonate festgelegt werden. Telefonate lassen sich über mehrere Router durchleiten. Wer es sich zutraut, kann mit Hilfe von https://github.com/ybinzu/asterisk_mesh ein Mesh-Netz aus vielen Asterisk-Servern aufbauen.

So entwickelt sich das organisierte Chaos auf dem Schreibtisch, wenn man sich mit Verbissenheit in die Welt des Asterisk hineinkniet und sich dabei immer wieder wie ein blutiger Anfänger vorkommt. Wenn alles einfach wäre, wäre es ja langweilig.

Voraussetzung für das Verständnis dieses Artikels ist, dass man bereits erfolgreich einen Asterisk-SIP-Server mit mindestens zwei Telefonnummern und ein paar Testnummern eingerichtet hat.

Änderungen an der iax.conf müssen im Asterisk-CLI mit “iax2 reload” geladen werden. Das erfolgreiche Connecten zum Partner-Server lässt sich mit “iax2 show peers” überprüfen. Mit ” iax2 show channels” lassen sich die “laufenden Telefonate” anzeigen.

Beim Verfassen der  interagierenden iax.conf-Skripte ist Sorgfalt angebracht, da sie miteinander symmetrisch verwoben oder verschränkt sind. Deshalb  bediene ich mich konkreter Beispiele, die auch getestet wurden.

Beispiel 1 zur Einübung mit zwei Asterisk-Servern im eigenen LAN: Zwei Asterisk-Server befinden sich innerhalb desselben lokalen Netzwerks auf verschiedenen Rechnern mit statischen lokalen IPs. Der eine befindet sich im Keller mit der IP 192.168.1.44 , der andere in der Wohnung mit der IP 192.168.123. Die Verbindung hat sich als “bombenfest” erwiesen.

Der zweite Asterisk-Server zum Testen läuft im Keller auf einem 20 Jahre alten Notebook mit Lubuntu und hängt am LAN über das Netzwerkkabel. Der Rechner ist über SSH mit PuTTY und SFTP mit FileZilla erreichbar, was zum Testen sehr praktisch ist. Für den Dauereinsatz weniger geeignet. Der Stromverbrauch ist relativ hoch. Der Lüfter und die alte Festplatte unterliegen einem mechanischem Verschleiß. Zum Testen prima. Andere hätten solche alten Kisten längst entsorgt, da sie für normale Anwendungen leider unbrauchbar geworden sind. Man hätte auch einen Raspberry als Dauerlösung wählen können.

Die iax.conf im Keller: Für Übungszwecke und zum Ausprobieren ist dieser Asterisk-Server nur über das lokale Netzwerk erreichbar.

; KELLER
; iax.conf für Asterisk-Server im Keller mit Asterisk 1.6.2.5
; testweise auf einem 20 Jahre alten Notebook mit Lubuntu (Ubuntu 10.04.LTS)
; Lokale IP im Keller ist 192.168.1.44

; Merke:
; peer darf nur anrufen
; user darf nur angerufen werden
; friend darf alles, anrufen und angerufen werden

; weitere Eklärungen der iax.conf:
; https://github.com/asterisk/asterisk/blob/master/configs/samples/iax.conf.sample

[general]                  ; general immer gleich
disallow=all
allow=alaw
allow=ulaw
allow=gsm
allow=g722 
jitterbuffer=no
forcejitterbuffer=no
autokill=yes
delayreject=yes
requirecalltoken=no


[outgoing-wohnung]        ; Context für abgehende Gespräche zur Wohnung
type=peer                 ; es funktionieren nur abgehende Gespräche
host=192.168.1.123        ; Statische lokale IP des Servers in der Wohnung
secret=qf00jnw7nj7exyz    ; das Passwort muss bei beiden Servern dasselbe sein.
auth=md5                  ; Verschlüsselung (optional)
context=telefone-aus      ; Gespräche können von Extensions im Context "telefone-aus" ausgehen
trunk=yes                 ; Viele Gespräche gleichzeitig möglich.
qualify=yes               ; macht Verbindungsqualität im CLI mit "iax2 show peers" sichtbar.
requirecalltoken=no
calltokenoptional=yes
authdebug=yes
username=incoming-keller  ; Gespräch "landet" im Context "incoming-keller" iax.conf Wohnung
tos=ef
deny=0.0.0.0/0.0.0.0      ; alle erreichbaren IP-Adressen verbieten (optional)
permit=192.168.1.123      ; und dann nur die IP des Servers in der Wohnung zulassen (optional)
notransfer=yes
iaxcompat=yes
nochecksums=yes

[incoming-wohnung]        ; Hier kommen die Gespräche von der Wohnung herein
type=user                 ; Es können nur Gespräche entgegengenommen werden
host=192.168.1.123        ; Die statische lokale IP Asterisk-Wohnung-Server
secret=qf00jnw7nj7exyz    ; immer dasselbe Passwort verwenden
auth=md5
context=telefone-ein      ; Extensions im Context "telefone-ein" der extensions.conf erreichbar
trunk=yes
qualify=yes
requirecalltoken=no
calltokenoptional=yes
authdebug=yes
username=outgoing-keller  ; Gespräche kommen von outgoing-keller der iax.conf Wohnung herein
tos=ef
deny=0.0.0.0/0.0.0.0
permit=192.168.1.123
notransfer=yes
iaxcompat=yes
nochecksums=yes

; Vieles ist nach dem Motto "doppelt genäht hält besser" ausgeführt und kann
; auch überflüssig sein oder wird von bestimmen Versionen ignoriert.

Der entsprechende Ausschnitt in der extensions.conf im Keller-Server:

[telefone-aus] ; siehe die Entsprechung in iax.conf "context=telefone-aus" 
               ; in [outgoing-wohnung] 

exten => _8899X.,1,NoOp(IAX2-Verbindung Keller ruft Wohnung an mit Vorwahl 8899)
same => n,Dial(IAX2/outgoing-wohnung/${EXTEN:4})  ; geht zu [outgoing-wohnung] der iax.conf
same => n,Hangup()

; Signalweg: Der Anruf aus dem Keller geht zu [outgoing-wohnung] in der eigenen iax.conf. Nachfolgend der entscheidende Auszug:

; [outgoing-wohnung] ; Context für abgehende Gespräche zur Wohnung 
; type=peer ; es funktionieren nur abgehende Gespräche 
; host=192.168.1.123 ; Statische lokale IP des Servers in der Wohnung 
; secret=qf00jnw7nj7exyz ; das Passwort muss bei beiden Servern dasselbe sein. 
; auth=md5 ; Verschlüsselung (optional) 
; context=telefone-aus 
; username=incoming-keller 

; In der eigenen iax.conf steht als Ziel der host samt Passwort.
; Nur Extensions (Telefone) aus dem 
; Context [telefone-aus] der eigenen extensions.conf dürfen heraustelefonieren.
; Der Ausdruck "username=incoming-keller" bestimmt das Ziel [incoming-keller]
; in der iax.conf ; des Partners.

; Das Pattern-Matching sorgt dafür, dass die ersten 4 Ziffern 8899 abgeschnitten werden.
; Die 8899 dient als Vorwahl für die Nummern auf dem Wohnungs-Server.
; Eine Vorwahl ist nur notwendig, wenn sich Nummernblöcke überschneiden können.

; Ein weiterer Witz mit den Vorwahlen ist, dass sie sich kaskadieren lassen,
; um ein Telefonat durch verschiedene Asterisk-Server durchzuleiten.
; Man kann auch ein Telefonat mit Vorwahlen innerhalb eines Servers hin- und zurückschicken,
; was keinen Sinn macht, aber dennoch funktioniert.

Zu Testzwecken wurden im Keller-Asterisk-Server noch 2 Accounts für zwei SIP-Telefone angelegt, damit über SIP-Telefone Gespräche möglich sind. Dieser SIP-Server muss einen vom üblichen SIP-Port 5060 abweichenden Port erhalten, damit sich die verschiedenen  SIP-Server nicht ins Gehege kommen. Der Port 5060 ist meistens schon vom SIP-fähigen Router (z.B. FritzBox) belegt.

Der zweite Asterisk-Server befindet sich in der Wohnung auf einem Raspberry 3 B+. Dieser Asterisk-Server ist auch über die öffentliche IP, also über das Internet erreichbar und ermöglicht weltweite Telefonate über verschiedene SIP-Provider. Er ist selbstverständlich im Idealfall rund um die Uhr 365 Tage im Jahr erreichbar.

Die iax.conf des Asterisk-Servers mit der IP 192.168.1.123 in der Wohnung ist “spiegelbildlich”:

; WOHNUNG
; iax.conf für Asterisk-Server in der Wohnung mit Asterisk 16.2.1
; auf einem Raspberry Pi mit Raspbian und der lokalen IP 192.168.1.123

[general]                  ; general immer gleich
disallow=all
allow=alaw
allow=ulaw
allow=gsm
allow=g722 
jitterbuffer=no
forcejitterbuffer=no
autokill=yes
delayreject=yes
requirecalltoken=no


[outgoing-keller]         ; Context für abgehende Gespräche zum Keller
type=peer                 ; es funktionieren nur abgehende Gespräche
host=192.168.1.44         ; Statische lokale IP des Servers in Keller
secret=qf00jnw7nj7exyz    ; das Passwort muss bei beiden Servern dasselbe sein.
auth=md5                  ; Verschlüsselung (optional)
context=phones-out        ; Gespräche können von Extensions im Context "phones-out" ausgehen
trunk=yes                 ; Viele Gespräche gleichzeitig möglich.
qualify=yes               ; macht Verbindungsqualität im CLI mit "iax2 show peers" sichtbar.
requirecalltoken=no
calltokenoptional=yes
authdebug=yes
username=incoming-wohnung ; Gespräch "landet" im Context "incoming-wohnung" iax.conf Keller
tos=ef
deny=0.0.0.0/0.0.0.0      ; alle erreichbaren IP-Adressen verbieten (optional)
permit=192.168.1.44       ; und dann nur die IP des Servers im Keller zulassen (optional)
notransfer=yes
iaxcompat=yes
nochecksums=yes

[incoming-keller]         ; Hier kommen die Gespräche vom Keller herein
type=user                 ; Es können nur Gespräche entgegengenommen werden
host=192.168.1.44         ; Die statische lokale IP vom Keller-Server
secret=qf00jnw7nj7exyz    ; immer dasselbe Passwort verwenden
auth=md5
context=phones-in         ; Extensions im Context "phones-in" der extensions.conf erreichbar
trunk=yes
qualify=yes
requirecalltoken=no
calltokenoptional=yes
authdebug=yes
username=outgoing-wohnung
tos=ef
deny=0.0.0.0/0.0.0.0
permit=192.168.1.44
notransfer=yes
iaxcompat=yes
nochecksums=yes

Der Ausschnitt der extensions.conf des Wohnungs-Servers gestaltet sich nach demselben Muster:

[phones-out] ; siehe die Entsprechung in iax.conf "context=phones-out" 
               ; in [outgoing-keller] 

exten => _8877X.,1,NoOp(IAX2-Verbindung Wohnung ruft Keller an 8877)
same => n,Dial(IAX2/outgoing-keller/${EXTEN:4})  ; geht zu [outgoing-keller] der iax.conf
same => n,Hangup()

; Das Pattern-Matching sorgt dafür, dass die ersten 4 Ziffern 8877 abgeschnitten werden.
; Die 8877 dient als Vorwahl für die Nummern auf dem Wohnungs-Server.
; Eine Vorwahl ist nur notwendig, wenn sich Nummernblöcke überschneiden können.

Es ist übrigens nicht notwendig, zwischen den Contexten “phones-in”, “phones-out” und so weiter zu unterscheiden. Man darf sie durch eine identische Bezeichnung (z.B. “eingehende-und-ausgehende-telefone”) ersetzen. Das hängt davon ab, wie die extensions.conf organisiert ist und ob man will, dass bestimmte Telefone nur bestimmte Nummern erreichen dürfen oder nicht. Mit getrennten Contexten in der iax.conf für eingehende und ausgehende Gespräche ist man flexibel. Wenn man es einmal kapiert hat, ist es ganz einfach und logisch.

*******

Beispiel 2 mit einer Vernetzung über das Internet: Dies geht nach dem gleichen Strickmuster. Der Wohnungsserver bekommt eine zweite IAX2-Verbindung zu einem weiteren Asterisk-Server über das Internet, das heißt außerhalb des eigenen LANs. Diese Methode ist ebenfalls “bombenfest”.

Der Wohnzimmer-Server besitzt auch eine öffentliche IP, die über einen der zahlreichen DynDNS-Anbieter erreichbar ist. Im Beispiel hat er die schneesturm.ddns.net. Der Partner-Server irgendwo in der Welt ist über palmenstrand.hopto.org erreichbar. Wir nehmen an er sei an einem Palmenstrand, damit wir es uns leichter merken können.

Hilfestellung für die Programmierung. Die Pfeile zeigen den Signalweg, wenn das Wohnzimmer den Palmenstrand anruft. Für die andere Richtung (Palmenstrand ruft Wohnzimmer) ist entsprechend spiegelbildlich zu verfahren (für eine Großdarstellung auf das Bild klicken!) . Es ist ratsam die Grafik für ein besseres Verständnis auszudrucken und bei der Programmierung griffbereit zu haben.
Die umgekehrte Richtung: Palmenstrand ruft Wohnzimmer an (für Großdarstellung auf das Bild klicken).

Server, die über eine öffentliche statische IP besitzen, benötigen nicht den Umweg über einen DynDNS-Anbieter. Anstelle der DynDNS kann die öffentliche IP eingetragen werden. Nicht vergessen bei den Routern die Ports 4569 UDP weiterzuleiten.

Aktivierung des regelmäßigen IP-Lookup in der dnsmgr.conf: Private Internetzugänge besitzen gewöhnlich keine statische öffentliche IP. Entweder ändert sie die eigene öffentliche IP bei jedem Neustart des Routers oder es findet regelmäßig je nach Internet-Provider sogar jede Nacht eine Zwangstrennung mit der Zuteilung einer neuen IP statt. Andere Internetanbieter teilen erst nach Monaten eine neu IP zu. Bei einer IAX2-Verbindung können dadurch Verbindungsprobleme entstehen, die erst nach vielen Monaten auftreten und für großes Rätselraten sorgen, wenn trotz des Einsatzes eines DynDNS-Anbieters erst nach einem “core restart now” die Verbindung steht. Dies ist allerdings eine unnötig brutale Lösung. Es geht eleganter.

Ändert sich die öffentliche IP des entfernten Asterisk-Server, übersendet der DynDNS-Anbieter des entfernten Asterisk-Servers die neue IP dem eigenen Asterisk-Server. Der eigene Server aktualisiert für eine IAX2-Verbindung allerdings nicht automatisch die neue öffentliche IP des anderen Asterisk-Servers. Abhilfe: In der dnsmgr.conf (im Ordner /etc/asterisk) des eigenen Asterisk-Servers ist durch folgende Einträge dafür zu sorgen alle paar Minuten einen DNS-Lookup vorzunehmen zu lassen:

; Einträge in der dnsmgr.conf für einen regelmäßigen DNS-Lookup
;
[general]
enable=yes		    ; enable creation of managed DNS lookups
                            ; default is 'no'
refreshinterval=120	    ; refresh managed DNS lookups every <n> seconds
                            ; default is 300 (5 minutes)

Im Asterisk-CLI ist auf Grund des aktivierten DNS-Lookup bei einem IP-Wechsel des entfernten IAX2-Servers folgendes zu beobachten:

Meldung im Asterisk-CLI bei einem IP-Lookup auf Grund der Änderung der öffentlichen IP des entfernten IAX2-Servers, wenn im eigenen Asterisk-Server der IP-Lookup in der dnsmgr.conf aktiviert wurde (für eine Großdarstellung auf das Bild klicken).

Damit die Änderungen in der dnsmgr.conf wirksam werden, ist wie üblich in der Asterisk-Konsole der Befehl “reload” auszuführen, was manchmal leicht vergessen wird.

Die iax.conf des Wohnzimmer-Servers wird dann um den folgenden Eintrag ergänzt:

; WOHNUNG
; iax.conf für Asterisk-Server in der Wohnung mit Asterisk 16.2.1
; auf einem Raspberry Pi mit Raspbian und der DynDNS schneesturm.ddns.net

; ausgehende Gespräche zum Server am Palmenstrand
[outgoing-palmenstrand]      ; Context für abgehende Gespräche zum entfernten Server
type=peer                    ; es funktionieren nur abgehende Gespräche
host=palmenstrand.hopto.org  ; DynDNS des anderen Servers am Palmenstrand
username=incoming-schneesturm  ; Die abgehenden Gespräche "landen" im Context
                               ; [incoming-schneesturm] der iax.conf des anderen Servers
context=phones-out ; Gespräche gehen von der Extensions im Context "phones-out" 
                   ; unserer extensions.conf aus. 

; der nachfolgende Rest bleibt gleich
secret=sonnenschein123       ; das Passwort muss bei beiden Servern dasselbe sein.
auth=md5                     ; Verschlüsselung (optional)
trunk=yes            ; Viele Gespräche gleichzeitig möglich.
qualify=yes          ; macht Verbindungsqualität im CLI mit "iax2 show peers" sichtbar.
requirecalltoken=no
calltokenoptional=yes
authdebug=yes

; nachfolgendes optional
tos=ef
notransfer=yes
iaxcompat=yes
nochecksums=yes



; Hereinkommende Gespräche vom Palmenstrand
[incoming-palmenstrand]     ; Hier kommen die Gespräche vom Palmenstrand herein
type=user                   ; Es können nur Gespräche entgegengenommen werden
host=palmenstrand.hopto.org ; DynDNS des Servers am Palmenstrand
username=outgoing-schneesturm ; Die Gespräche kommen vom Context 
                              ; [outgoing-schneesturm] der iax.conf 
                              ; des Servers am Palmenstrand
context=phones-in ; Nur die Nummern (extensions) im Kontext [phones-in] unserer 
                  ; extensions.conf sind erreichbar

; der nachfolgende Rest bleibt gleich
secret=sonnenschein123        ; immer dasselbe Passwort verwenden
auth=md5
trunk=yes
qualify=yes
requirecalltoken=no
calltokenoptional=yes
authdebug=yes

; nachfolgendes optional
tos=ef
notransfer=yes
iaxcompat=yes
nochecksums=yes

Der entsprechende Eintrag in der extensions.conf des Wohnzimmers:

; Auszug extensions.conf Wohnzimmer
[phones-out] ; siehe die Entsprechung in iax.conf "context=phones-out" 
             ; in [outgoing-palmenstrand] 

exten => _8855X.,1,NoOp(IAX2-Verbindung Wohnung ruft Palmenstrand an mit Vorwahl 8855)
same => n,Dial(IAX2/outgoing-palmenstrand/${EXTEN:4})
same => n,Hangup()

; mit der Vorwahl 8855 sind die Nummern am Palmenstrand erreichbar.

Die iax.conf und die extensions.conf am Palmenstrand sind dann wieder spiegelbildlich:

; PALMENSTRAND
; iax.conf für Asterisk-Server am Palmenstrand
; auf einem Raspberry Pi mit Raspbian und der DynDNS palmenstrand.hopto.org

; ausgehende Gespräche zum Server im Wohnzimmer
[outgoing-schneesturm]       ; Context für abgehende Gespräche zum entfernten Server
type=peer                    ; es funktionieren nur abgehende Gespräche
host=schneesturm.ddns.net    ; DynDNS des anderen Servers "Wohnung"
username=incoming-palmenstrand  ; Die abgehenden Gespräche "landen" im Context
                                ; [incoming-palmenstrand] der iax.conf des anderen Servers
context=phones-out ; Gespräche gehen von der Extensions im Context "phones-out" 
                   ; unserer extensions.conf aus. 

; der nachfolgende Rest bleibt gleich
secret=sonnenschein123       ; das Passwort muss bei beiden Servern dasselbe sein.
auth=md5                     ; Verschlüsselung (optional)
trunk=yes            ; Viele Gespräche gleichzeitig möglich.
qualify=yes          ; macht Verbindungsqualität im CLI mit "iax2 show peers" sichtbar.
requirecalltoken=no
calltokenoptional=yes
authdebug=yes

; nachfolgendes optional
tos=ef
notransfer=yes
iaxcompat=yes
nochecksums=yes


; iax.conf PALMENSTRAND
; Hereinkommende Gespräche vom Wohnzimmer zum Palmenstrand
[incoming-schneesturm]      ; Hier kommen die Gespräche vom Wohnzimmer Schneesturm herein
type=user                   ; Es können nur Gespräche entgegengenommen werden
host=schneesturm.ddns.net   ; DynDNS des Partner-Servers im Wohnzimmer
username=outgoing-palmenstrand ; Die Gespräche kommen vom Context 
                               ; [outgoing-palmenstrand] der iax.conf 
                               ; des Servers im Wohnzimmer
context=phones-in ; Nur die Nummern (extensions) im Kontext [phones-in] unserer 
                  ; extensions.conf sind erreichbar

; der nachfolgende Rest bleibt gleich
secret=sonnenschein123        ; immer dasselbe Passwort verwenden
auth=md5
trunk=yes
qualify=yes
requirecalltoken=no
calltokenoptional=yes
authdebug=yes

; nachfolgendes optional
tos=ef
notransfer=yes
iaxcompat=yes
nochecksums=yes

Der Auszug der extensions.conf am Palmenstrand ist dann wieder entsprechend:

Auszug extensions.conf Palmenstrand
[phones-out] ; siehe die Entsprechung in iax.conf "context=phones-out" 
             ; in [outgoing-schneesturm] 

exten => _8877X.,1,NoOp(IAX2-Verbindung Palmenstrand ruft Wohnzimmer an mit Vorwahl 8877)
same => n,Dial(IAX2/outgoing-schneesturm/${EXTEN:4})
same => n,Hangup()

; mit der Vorwahl 8877 sind die Nummern im Wohnzimmer erreichbar.

Nach dieser Methode hat mein Asterisk-Server noch einen dritten IAX2-Zugang bekommen, was kein Problem war.

Hier ein Ansatz, wie sich in der extensions.conf mit Hilfe des Dialstatus auswerten lässt, ob ein Server erreichbar ist:

; Auszug der der extensions.conf von Hans
; Nur ein Ansatz zur Auswertung des DIALASTATUS
; wenn der angerufene Server nicht ereichbar, ist CHANUNAVAIL "ja"
exten => _8833X.,1,NoOp(IAX2 - Hans ruft Alfons an mit der Vorwahl 8833)
same => n,Dial(IAX2/outgoing-Alfons/${EXTEN:4})
; https://das-asterisk-buch.de/1.6/applications-gotoif.html
; https://www.voip-info.org/asterisk-variable-dialstatus/
same => n,GotoIf($[${DIALSTATUS} = CHANUNAVAIL]?ja)
same => n,GotoIf($[${DIALSTATUS} = BUSY]?ja)
same => n,GotoIf($[${DIALSTATUS} = NOANSWER]?ja)
same => n,GotoIf($[${DIALSTATUS} = CANCEL]?ja)
same => n,GotoIf($[${DIALSTATUS} = CONGESTION]?ja:nein)
same => n(ja),NoOp( Dial Status: ${DIALSTATUS})
same => n,Playback(/usr/share/asterisk/sounds/eigene/nichterreichbar)
same => n(nein),Hangup()

Warum ausgerechnet “Schneesturm” und “Palmenstrand”? Beim Entwerfen dieser Seite war es hier in Schweden kalt und es schneite. Gerne wäre ich jetzt an einem Strand in der Südsee unter Palmen. So kam der Vergleich zustande, um sich die Zusammenhänge bildhafter vorstellen zu können.

Die Gedankenstütze “Schneesturm” ist mir wegen des derzeitigen Wetters eingefallen. Hinzu kommt noch der Wunsch nach einem Urlaub unter Palmen. Hier in Schweden hat es heute wieder mal -10 °C.

Warum nicht mit SIP verschiedene Server verbinden? Das ginge im Prinzip auch. Allerdings ist der Aufwand die NAT-Router zu überwinden größer und es müssen mehrere Ports weitergeleitet werden. Ein anderer lästiger Umstand besteht, wenn der andere Server nicht erreichbar sein sollte. Dann erscheinen im Asterisk-CLI jede Sekunde eine neue Zeile, die vom gescheiterten Connect-Versuch berichtet. IAX2 hat sich für die Vernetzung von Asterisk-Servern durchgesetzt.

Wer betreibt auch als Steckenpferd einen Asterisk-Server? Das Hobby Asterisk hat Seltenheitswert, obwohl es ein sehr interessantes Thema behandelt, das die Schaffung persönlicher Kontakte mit dem Interesse für Technik verbindet.  Um so begrüßenswerter wäre es, wenn sich möglichst viele kleine Asterisk-Server zu einem zwanglosen dezentralen Netzwerk verbinden würden. Der Erfahrungsaustausch ist dadurch unschätzbar und bietet wesentlich mehr Anregungen und Chancen als es die allermeisten Foren bieten können, da die Kontakte persönlicher Natur  sind, geprägt von Freundschaft, Anstand und Respekt. Wer Interesse an der Anbindung seines Asterisk-Servers oder seines Endgerätes hat, möge deshalb mit mir Verbindung aufnehmen ( sm5zbs ätt janson bindestrich soft punkt de Stichwort Asterisk).  Anfänger sind selbstverständlich auch willkommen. Telefon verbindet. Mein Name ist Volker.

An dieser Stelle meinen besten Dank an Gerd, Rainer und Adi für ihre unverzichtbaren Hilfestellungen und ebenso unermüdlichen und unverzichtbaren Versuche die IAX2-Verbindungen auf Herz und Nieren vorwärts, rückwärts, hin und her, mehrfach und gleichzeitig zu testen.

Auf einem Raspberry Pi lässt sich ein kompletter Telefonserver betreiben, der seinen Teilnehmern über Landesgrenzen hinweg kostenloses Telefonieren von unterwegs oder daheim ermöglicht.
Asterisk-Telefonserver auf einem Raspberry Pi – Installation, Konfiguration, Programmierung, SIP, IAX2, AGI-Skripte, Sicherheit und Tipps zum praktischen Betrieb – 2.11.2022: Diese Seite richtet sich an jene, welche einen Asterisk-Telefon-Server auf einem Raspberry Pi betreiben möchten und später ein kleines Netzwerk aus Asterisk-Servern planen, um ein eigenständiges Telefonnetz aufzubauen. Los geht es mit der Installation von Raspbian und Asterisk auf einem Raspberry Pi und dann nach Lust und Laune immer tiefer in die Programmierung von Asterisk. Die Themen werden laufend erweitert.

Selbstverständlich muss es nicht unbedingt ein Raspberry Pi sein. Andere Linux-Rechner gehen auch. – weiter