20. Apr 2013 04:04
Keine Kommentare

Asterisk als virtuelle Telefonanlage

Asterisk Telefonanlage

Nachdem ich ja bereits in meinem Artikel Raspberry Pi als Server mein Vorgehen beim Installieren und Konfigurieren des Raspberry Pi als Server beschrieb, ist mein Interesse für die virtuelle Telefonanlage Asterisk neu entbrannt. Meinen ersten Kontakt mit Asterisk hatte ich bereits 2002 als ich mit einer aus Belgien importierten Digium FXO-Karte die Haupttelefonanlage in die Knie gezwungen habe. Bis heute frage ich mich, woran das gelegen haben könnte. Diesmal wollte ich Asterisk auf dem Raspberry Pi installieren, um meinem Computer, dem Xoom Tablet und den Android-Phones ein paar zusätzliche Telefon-Services zu ermöglichen.

44,79 €
Jetzt bestellen »
Raspberry Pi RBCA000 Mainboard (ARM 1176JZF-S, 512MB RAM, HDMI, 2x USB 2.0, 3,5 Watt)

Zielsetzung meines Asterisk Systems

Noch von früher wusste ich, dass Asterisk ein sehr, sehr gewaltiges System ist, mit dem man jede Telekommunikationsaufgabe bewältigen kann. Das macht es zwar umso komplizierter Asterisk zu installieren, aber wenn man es erstmal hat, ist es absolut überwältigend und einzigartig. Wichtig ist, dass man sich vorher auf jeden Fall einen Plan macht, was man überhaupt erreichen will und was wie funktionieren soll. 

Nachfolgend also einmal die Anzahl der eingesetzten Geräte:

  • Motorola RAZR Android Smartphone mit CSipSimple
  • Motorola XOOM Android Tablet mit CSipSimple
  • Lenovo z61t mit OpenSUSE 12.1 und Linphone
  • Raspberry Pi Model B mit Raspbian und Asterisk 1.8
Selbstverständlich kann man jederzeit auch noch weitere Geräte einsetzen, aber das ist dann auch noch erweiterbar. Als nächstes legen wir fest, was die Geräte für Dienste in Anspruch nehmen sollen und das wären die Folgenden:
  • Telefonieren der Geräte untereinander
  • Telefonie in Inlands- und Auslandsnetze
Ersteres erfolgt über WLAN bzw. im internen Netzwerk und daher brauchen die Geräte nur eine entsprechende SIP-fähige Software, da wir diese über das SIP-Protokoll an die Asterisk-Anlage anschließen. Die Telefonie und die öffentlichen Telefonnetze realisieren wir über Localphone. In meinem Artikel Anrufe in ausländische Mobilfunknetze hatte ich bereits über den Anbieter berichtet. Selbstverständlich kann man auch jeden anderen Anbieter von SIP-Anschlüssen (z.B. 1&1, Sipgate, VoipCheap, VoipBuster etc.) hierfür verwenden.

Asterisk-Installation auf dem Raspberry Pi

Diese Anleitung ist zwar für den Raspberry Pi und dessen Betriebssystem Raspbian (Hardfloat-Version), ist jedoch genauso auf jedem Ubuntu und Debian gültig, da diese auf dem selben Basis-System basieren. Es geht damit los, dass wir Asterisk zuerst einmal installieren:
 
 
Anschließend lädt der kleine Raspberry Pi fleißig hunderte Megabytes herunter und installiert das Asterisk-System auf seinem Raspbian-Betriebssystem. Auf dem Raspberry Pi empfehle ich grundsätzlich große SD-Karte einzusetzen mit mindestens 32GB und Class 10 für maximale Geschwindigkeit. Nachfolgend startetman Asterisk dann noch, wenn es nicht schon sowieso gestartet wurde.
 
 
Die Verbindung zum Asterisk-Server, um Status und Funktionalität zu überprüfen, kann man mit dem CLI (Command Line Interface) aufbauen. Dazu gibt man im Terminal folgenden Befehl ein.
 
 
Es gibt eine große Zahl an Befehlen, die CLI unterstützt, aber darauf will ich jetzt für die Installation erstmal nicht näher eingehen. Wichtig ist, dass Asterisk läuft und das wir Zugriff auf das System über die Kommandozeile haben. Im nächsten Abschnitt konfigurieren wir nun die Geräte.

Wichtig: nach dem Bearbeiten der sip.conf muss man sich in die AsteriskCLI einloggen und mit dem Befehl "sip reload" die SIP-Datei neu einlesen. Mit dem Befehl "dialplan reload" kann man den Wähplan aus der extensions.conf neu einladen. Das ist sehr wichtig, denn sonst ändert man Konfiguration und vergisst diese neu einzulesen oder muss jedes mal den Server neu starten.

Konfigurieren der Geräte in der sip.conf Datei

Wie eingangs beschrieben wollen wir alle Geräte mit SIP-Software an Asterisk anschließen. Die Geräte werden in die sip.conf Datei eingetragen und können sich dann anschließend am Asterik-Server anmelden. Meine sip.conf Datei sieht wie folgt aus.
 
 
Im Bereich "[general]" befinden sich allgemeingültige Einstellungen für SIP mit unserer Asterisk-Installation. Dort wird z.B. der Port des Asterisk SIP-Servers angegeben, aus Sicherheitsgründen das lokale Netz und dass es sich hinter einem NAT-Router befindet. Würde man die Werte in "[general]" raus nehmen, würde es hier trotzdem funktionieren.
 
31,94 €
Jetzt bestellen »
Asterisk: The Definitive Guide
Versandfertig in 1 - 2 Werktagen
 
Die Bereiche "[1000]" markieren die Rufnummern und SIP-Anschlüsse. Wäre z.B. die gewünschte Rufnummer des Anschlusses nicht 1000, 2000 oder 3000 sondern 4711, dann kann man den Bereich auch mit [4711] beginnen. Die Einstellung "permit" legt fest aus welchem Netzwerkbereich sich dieser Anschluss anmelden darf. Meine Anschlüsse dürfen sich also nur aus dem lokalen Netzwerk anmelden. Die Einstellung "type" legt fest, was der Anschluss darf. "friend" darf angerufen werden und selbst anrufen. "user" darf nur anrufen, kann aber nicht angerufen werden. "peer" kann angerufen werden, darf selbst aber keine Anrufe initiieren. Context legt eine Art Gruppe fest und wird in der extensions.conf wiederverwendet - dazu komme ich dann in einer der nächsten Abschnitte. "host=dynamic" legt fest, dass der Anschluss sich von unterschiedlichen IP Adresse aus anmelden darf. Zu guter Letzt ist "secret" noch das Passwort, welches der Anschluss bei der Anmeldung verwenden soll.

Erstellen des Wählplans (Dialplan) in der extensions.conf

Nachdem wir die einzelnen SIP-Anschlüsse in der sip.conf angelegt haben, können sich die Geräte auch schon anmelden. Es bringt jedoch noch nichts, da sie sich untereinander noch nicht erreichen können. Meine erste einfache extensions.conf sieht dann erst einmal so aus:
 
 
Darin zu sehen sind jetzt wieder die bekannten Abschnitte wie "[globals]" für globale Variablen und "[general]" für generelle Einstellungen. Interessant wird es bei "[internal]", welches der Kontext für die internen Telefonate ist. Der Abschitt ganz unten ist der Kontext unserer Telefone, der ja "[phones]" heißt. Mit "include => internal" schließt der "phones"-Kontext schließt den Kontext "internal" mit ein. In "[internal]" befindet sich der eigentliche Wählplan, der hier nur ein Einzeiler ist und besagt, dass alle vierstelligen Nummern, die von unseren Anschlüssen angewählt werden dazu führen sollen, dass diese Rufnummer über SIP internangerufen wird.

Wählpläne in Asterisk sind sehr umfangreich und bieten eine enorme Vielzahl an Möglichkeiten. Es bedarf jedoch auch eine sehr große Zeit, sich in diese einzuarbeiten. Ich  habe mich bewusst erst einmal dagegen entschieden hier die vielen Details aufzuzeigen. Ich finde es wichtiger, dass man die Telefonanlage erstmal mit Basis-Setup ans Laufen bekommt und dann kann man immer noch aufbauen. Mit Sicherheit werde ich auch noch den ein oder anderen Asterisk-Artikel schreiben, der sich auch mit den Tiefer der Wähpläne befasst.

Konfigurieren der Geräte für Asterisk

CSipSimple Asterisk Android Konfiguration
CSipSimple Asterisk Android Konfiguration

Jetzt ist es gleich soweit, dass wir unseren ersten Anruf tätigen können. Dazu müssen wir nun die Geräte konfigurieren, damit sie sich am Asterisk-System anmelden und miteinander telefonieren können. Das ist bei jedem SIP-Client anders und ich beschreibe nachfolgend einmal die Konfiguration in den populärsten Clients. Bei Hardware-SIP-Telefonen kann das durchaus komplizierter sein. 

Konfiguration von CSipSimple für Asterisk

Die Konfiguration der Android-Telefone gestaltet sich recht einfach und braucht im Prinzip nur die Angaben Servername, Benutzername, Server-Adresse und das entsprechende Passwort. Der Benutzername ist hier die Rufnummer und damit in meinem Beispiel 1000, 2000 oder 3000. Das Passwort ist jenes, welches wir im Wert "secret" bei dem jeweiligen Anschluss angegeben haben.

Als SIP-Server geben wir die IP-Adresse oder den Host-Namen unseres Asterisk-Systems an. Selbstverständlich haben wir auf dem Asterisk-System selbst sicher gestellt, dass die UDP Ports 5060 sowie 10000 bis 20000 frei geschaltet sind. Sobald man auf speichern klickt, verbindet sich CSipSimple mit dem Asterisk-Server und unsere gespeicherte Einstellung wird grün.

Konfigurieren von Linphone für Asterisk

Linphone ist ein auf GNOME-basierter SIP-Client, der recht einfach gestrickt ist und sich ideal für Telefontests ode rauch das Telefonieren mit Linux im Allgemeinen anbietet. Es gibt ihn schon seit meiner ersten Gehversuche mit Asterisk anfang der 2000er.

Linphone Asterisk Konfiguration

Linphone hat als Linux-Anwendung natürlich die klassische Eigenschaft einer solchen, dass sehr viele Konfigurationsmöglichkeiten vorhanden sind. Selbst ich habe bei der neuen Version recht lange suchen müssen, obwohl ich Linphone eigentlich schon häufiger benutzt habe. Linphone braucht genauso wie CSipSimple nur den SIP-Server sowie den Benuternamen und das Passwort. Der Screenshot zeigt, wie man das unter Einstellungen "SIP-Konten verwalten", "Proxy-Konten" hinzufügen kann.

Externen SIP-Anschluss des Providers konfigurieren

Jetzt können die Geräte zwar untereinander telefonieren, aber damit ist ja noch nicht wirklich viel getan. Wir wollen ja auch die Möglichkeit haben in die weite Welt zu telefonieren. Hierfür habe ich mich für den Anbieter Localphone entschieden, weil er nach meiner Erfahrung sehr günstig und gut ist. Localphone bietet weltweit günstige Telefonate auch in Mobilfunknetze. Auf seiner Website bietet Localphone auch eine Konfigurationsanleitung für Asterisk: Asterisk und Localphone

In meiner sip.conf befinden sich jetzt für Localphone noch folgende Einstellungen, damit auch der SIP-Anschluss von Localphone konfiguriert ist und angemeldet werden kann. Ich habe in dem nachfolgenden Beispiel einmal nur die Einsträge gezeigt, die zusätzlich in den Konfigurationsabschnitten gebraucht werden.

Danach lädt man entsprechend die sip.conf mit dem Befehl "sip reload" in der Asterisk CLI neu ein und wird dann auch schon sehen, dass Asterisk sich bei Localphone versucht anzumelden. Das wird jedoch so erst einmal nicht funktionieren, wenn man hinter einer Firewall bzw. einem NAT Router hängt.

Port-Weiterleitung in der Firewall für Asterisk

Es müssen grundsätzlich der UDP Port 5060 und die UDP Ports von 10000 bis 20000 auf die Asterisk-Machine umgeleitet werden, sodass die Anmeldung bei Localphone und anderen externen SIP-Providern funktioniert. In meinem OpenWrt Router (hier findet man eine TP-Link WR1043ND OpenWrt Installationsanleitung) sieht das wie folgt aus:

Sobald man dann die Firewall neu startet oder die Firewall-Regeln in Kraft treten, kann sich Asterisk auch beim SIP-Provider Localphone anmelden. Gibt man dann in der Asterisk CLI den Befehl "sip show registry" ein und Asterisk listet dann die angemeldeten SIP-Anschlüsse auf.

Dialplan für externe Anrufe konfigurieren

Als sozusagen abschließende Aufgabe muss nun noch der Dialplan so angepasst werden, dass die internen Anschlüsse 1000, 2000 und 3000 auch Anrufe in externe Telefonnetze durchführen können. In der extensions.conf legt man dazu einfach folgenden neuen Abschnitt "outgoing" an.

Mit diesem Abschnitt gibt man Asterisk die Information, dass alle ausgehenden Telefonate, die mit einer vorangestellten 0 gewählt werden über Localphone gehen. Damit können die Anschlüsse dann alle über Localphone.com telefonieren. Wenn wir jetzt noch die eingehenden Telefonate mit dem Incoming-Kontext so konfigurieren wollen, dass alle Telefone klingeln, dann sieht das wie folgt aus:

Damit klingeln dann alle Anschlüsse, wenn auf der Localphone-Leitung ein Anruf eingeht. Mit diesem letzten Konfigurationsabschnitt haben wir dann auch schon eine fertige Telefonanlage, bei der die Teilnehmer untereinander und nach extern telefonieren können.

15,44 €
Jetzt bestellen »
Asterisk for Dummies
Versandfertig in 1 - 2 Werktagen

Hilfe zu Asterisk und das kostenlose Asterisk-Buch

Das Buch "Asterisk - The Future Of Telephony" vom renommierten O'Reilly Verlag gibt es zum kostenlosen download: Asterisk - The Future Of Telephony von O'Reilly. Es ist wirklich ein sehr gutes Buch, jedoch auf Englisch und insbesondere auch für Menschen geeignet, die schon gutes Know-How im Unix/Linux Bereich habe und über fundierte Netzwerkkentnisse verfügen. Anfänger greifen lieber zu einfacheren Büchern! Hilfe zu Asterisk erhält man z.B. im #asterisk Channel auf irc.freenode.net (vor allem für erfahrene User geeignet). Ansonsten gibt es ein offizielles Asterisk Forum sowie das sehr bekannte IP Phone Forum für Asterisk, wo man immer Hilfe findet. Mein persönlicher Tipp ist immer vollste Konzentration, Ruhe und Behutsamtkeit

Asterisk ist ein wahnsinnig tolles System und insbesondere in Verbindung mit dem Raspberry Pi unschlagbar. Im Heim-Einsatz, wo man ja keinen 2 HE Server im Wohnzimmer stehen haben möchte und auch bei der Stromrechnung die Kontrolle behalten will, ist der Raspberry Pi ideal für Asterisk. Die Kombination gemeinsam ist ungeheuer schnell und leistungsstark. Vom Formfaktor her sogar kleiner als die gewöhnlichen Telefonanalagenboxen.

Bücher zum Thema „Asterisk“

Die nachfolgenden Bücher behandeln das Thema "Asterisk" und werden von Amazon empfohlen. Viele dieser Bücher habe ich selbst gelesen und teilweise auch zur Recherche für diesen Artikel genutzt.
Jetzt bestellen »
Asterisk 1.4 + 1.6 - Studentenausgabe (Open Source Library)
Stefan Wintermeyer, Addison-Wesley Verlag
36,00 €
Jetzt bestellen »
IP-Telefonie mit Asterisk - Aufbau von Nebenstellenanlagen für VoIP auf Linux-Basis - inklusive SIP
Ralf Ackermann, dpunkt
19,90 €
Jetzt bestellen »
Internet-Telefonie: VoIP mit Asterisk und SER
Gerd Flaig, Open Source Press
76,89 €
Jetzt bestellen »
[(Asterisk: The Definitive Guide)] [ By (author) Leif Madsen, By (author) Jim Van Meggelen, By (author) Russell Bryant ] [June, 2013]
Leif Madsen, O'Reilly Media, Inc, USA

Diese Artikel könnten Dich auch interessieren

Besucher, die diesen Beitrag gelesen haben, haben sich auch die unten aufgeführten Beiträge angesehen. Schau' doch einfach mal in die Artikel rein.
143 Besucher haben auch das gelesen
91 Besucher haben auch das gelesen
89 Besucher haben auch das gelesen
61 Besucher haben auch das gelesen
54 Besucher haben auch das gelesen
45 Besucher haben auch das gelesen

Kommentare zum Thema „Asterisk als virtuelle Telefonanlage“

Wenn Du möchtest, kannst Du hier Kommentare zum Thema hinterlassen und Dich mit anderen Nutzern austauschen. Damit Du kommentieren kannst, musst Du Dich nur anmelden und schon kann es losgehen.
Jetzt zum Kommentieren anmelden