Aufbau einer Telefonanlage mit Asterisk
In diesem Tipp zeigt Ihnen Fachbereichsleiter Michi Zaugg, wie Sie mit Asterisk Schritt für Schritt eine kleine Zentrale mit zwei Teilnehmern bauen, die eine Voicebox betreiben dürfen. Dies entspricht dem, was auch eine FRITZ!Box kann und legt die Basis für weitere Spielereien…
Asterisk ist eine OpenSource PBX (Private Branch Exchange), die es mit einer traditionellen Anlage aufnehmen kann. Asterisk unterstützt VoIP und kann über Hardware an das herkömmliche Telefonnetz angeschlossen werden. Die Herausgeber, asterisk.org, beschreiben die Software auf Ihrer Website so:
«Asterisk is like a box of Legos for people who want to create communications applications. It includes all the building blocks needed to create a PBX, an IVR system, a conference bridge and virtually any other communications app you can imagine.» (http://www.asterisk.org/)
Eine Telefonanlage ist eine nicht triviale Angelegenheit, wird aber dank der IP-Fähigkeit (und einer Verbindung des traditionellen Telefonnetzes mit einem LAN) auch für mich als Linux-Administrator langsam aber sicher antastbar.
In diesem Tipp auen wir Schritt für Schritt eine kleine Zentrale mit zwei Teilnehmern, die eine Voicebox betreiben dürfen. Dies entspricht dem, was auch eine FRITZ!Box kann und legt die Basis für weitere Spielereien…
Installation
Von der Asterisk Website wird der Sourcecode heruntergeladen. Zurzeit gibt es die Versionen 1.8 und 11 als LTS (Long Time Support). Wir befassen uns hier mit der Version 1.8.
Am besten wird dies gleich unter /usr/src ausgeführt.
Entpacken, konfigurieren, kompilieren, installieren (libssl-dev, libxml2-dev und ncurses-dev wird allenfalls noch gebraucht):
# tar xvfz http://downloads.asterisk.org/pub/telephony/certified-asterisk/ \
certified-asterisk-1.8.15-current.tar.gz
# cd certified-asterisk-1.8.*
# ./configure
# make menuconfig
Unter menuconfig können nun Features und Module der Zentrale an- und abgewählt werden. Die Sounds, MOH (Music-On-Hold), verschiedene Codecs und Standardstimmen sollten je nach Bedarf gewählt werden. Natürlich kann dies auch später nachgeholt werden.
# make
# make install
# make samples
Kompiliert das Ganze und legt Standard-Konfigurationsdateien an. Achtung, mit make samples wird eine aktuelle Konfiguration überschrieben! Unter /etc/asterisk befinden sich die Beispielkonfigurationen, unter /var/lib/asterisk Sounds etc. und unter /var/spool/asterisk wird sich die Voicebox der verschiedenen Teilnehmern tummeln.
Bedienung
Das Kommando asterisk startet den Server als Daemon. Mittels der Option -r startet man das Asterisk CLI, die Gesprächigkeit wird mit -v gesetzt bzw. -vv und so weiter erhöht. Das CLI verlässt man wieder mit exit. Zum Beispiel so:
Server starten:
# asterisk
CLI öffnen:
# asterisk -rvvvvvvvv
Konfiguration neu laden:
# reload
CLI verlassen:
# exit
Die zwei Links von voip-info.org geben im Detail über das CLI- und das asterisk-Kommando Auskunft:
Konfiguration
Wir müssen uns drei Dateien ansehen. Diese befinden sich alle im /etc/asterisk-Verzeichnis:
- /etc/asterisk/sip.conf, einrichten der Konten für SIP-Telefone (mit Nummer)
- /etc/asterisk/extensions.conf, was passiert, wenn welche Nummer gewählt wird (Wählplan)
- /etc/asterisk/voicemail.conf, die Konfiguration der Voicebox
Wenn man die Beispielkonfiguration erstellt hat, dann kann man nun die drei Dateien verschieben:
# mkdir /etc/asterisk.orig
# mv /etc/asterisk/sip.conf /etc/asterisk.orig
# mv /etc/asterisk/extensions.conf /etc/asterisk.orig
# mv /etc/asterisk/voicemail.conf /etc/asterisk.orig
Nummern einrichten im sip.conf
Alle Teilnehmer bzw. Endgeräte werden in der Datei /etc/asterisk/sip.conf erfasst. Falls ein SIP-Provider verwendet wird, wird dieser auch hier angegeben. Ebenfalls werden die Passwörter in dieser Datei abgelegt. Aber Achtung: Die Datei sollte nur für root bzw. den Asterisk-User lesbar sein!
general
port=5060
bindaddr=0.0.0.0
1000
type=friend
secret=1234
host=dynamic
1010
type=friend
secret=1234
host=dynamic
Wir haben hier zwei Teilnehmer, einer mit der Nummer 1000 und einer mit 1010, was auch gleich dem SIP-Usernamen entspricht. Das Passwort für beide ist 1234.
Was passiert beim Anruf?
In der Datei /etc/asterisk/extensions.conf wird definiert, was geschehen soll, wenn jemand angerufen wird. In der Regel sieht dies so aus:
exten => Telefonnummer, Laufnummer, Aktion
Die Laufnummer kann nach der ersten Zeile auch mit einem «n» ersetzt werden.
Wenn uns die Telefonanlage unter der Nummer 1111 mitteilen will, dass Sie von Zombies überwältigt wurde, kann man den Sound zombies abspielen lassen.
exten => 1111,1,Answer()
exten => 1111,2,Playback(zombies)
exten => 1111,3,Hangup()
Eine einfache extensions.conf könnte in etwa so aussehen:
default
exten => 1111,1,Answer()
exten => 1111,n,Playback(zombies)
exten => 1111,n,Hangup()
exten => 1000,1,Dial(SIP/1000,10)
exten => 1000,2,Voicemail(1000,u)
exten => 1010,1,Dial(SIP/1010,10)
exten => 1010,2,Voicemail(1010,u)
Nach 10 Sekunden wird die Voicebox kommen, den Rest kann man sich selbst «ausmalen» 😉
Konfiguration der Voicemail
Auch die Konfiguration in /etc/asterisk/voicemail.conf ist nicht kompliziert. Pro Mailbox ist nur eine Zeile notwendig:
Teilnehmernummer => Passwort,Name,Email
Die E-Mail wird gebraucht, falls die Aufsprache der Voicebox per E-Mail versendet werden soll. Achtung: Wenn man unendlich auf die Voicebox quatschen kann und das Format .wav ist, können die E-Mails ganz schön gross werden (geschätzt 10 MB pro Minute)!
general
format = wav
default
1000 => 7777,Herr Tux,htux@mail.com
1010 => 1248,Frau Tux,ftux@mail.com
Clients
Zum Testen kann man in dem Asterisk-CLI einen Anruf machen:
# asterisk -rvvv
> console dial 1000
> console hangup
> exit
Auf der Konsole sieht man den Ausgang dieser Konversation.
Zum Telefonieren braucht man einen SIP-Client, das kann ein echtes Telefon sein, denn viele unterstützen heutzutage SIP. Auch ein Softwaretelefon ist möglich, für Android und iOS gibt es verschiedene Varianten. Das SIP-Phone ist meiner Meinung nach ganz in Ordnung. Unter Linux gibt es auch viele, z.B. das SFLphone, Twinkle und letztlich unter Windows kann X-Lite als kostenlose Variante gewählt werden.
Fazit
Viel braucht es nicht, um eine eigene PBX mit Asterisk aufzubauen. Vielleicht am Anfang etwas Mut, aber dann gehts wie von selbst. Im produktiven Umfeld sieht man viele Implementationen mit diesem System, denn es ist günstig und sehr flexibel. Hier gibts einige Beispiele von Asterisk Schweiz dazu.