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…

Autor Michi Zaugg
Datum 09.10.2013
Lesezeit 7 Minuten

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.

# wget http://downloads.asterisk.org/pub/telephony/certified-asterisk/certified-asterisk-1.8.15-current.tar.gz

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.


Über den Autor

Michi Zaugg

Michi Zaugg ist Fachbereichsleiter Linux und Unix bei Digicomp. Er arbeitet seit 12 Jahren in der Informatikbranche. Als Netzwerk- und Sicherheitsadministrator leitete er ein Netzwerkteam und studiert derzeit berufsbegleitend Informatik an der Hochschule Rapperswil (Informatik Ing. FH.). Zudem verfügt er über die LPI-Zertifizierung.