PO-20699-Fotolia-Mipan_Fotolia-VoIP.jpg

© Mipan, Fotolia

Telefonzentrale

VoIP-Telefonanlage mit Asterisk einrichten

22.10.2009 Telefonanlagen sind teuer und aufwändig zu installieren. Anders Asterisk: Die frei Software steht Profisystemen in nichts nach und beherrscht sowohl VoIP als auch ISDN.

Die Geschichte der Internettelefonie ist fast so alt wie das Internet als Massenmedium selbst. Bereits in den 90er Jahren beherrschten Produkte wie Microsofts Netmeeting rudimentäre Telefoniefunktionen, mit Qualität oder Kompatibilität war es jedoch noch nicht weit her. Der Durchbruch gelang erst in den letzten Jahren seit der flächendeckenden Einführung breitbandiger Internetzugänge. Auch wenn nach wie vor zahlreiche Lösungen um die Gunst der Kunden buhlen, so existiert mit dem so genannten SIP-Protokoll ein einheitlicher Standard für Telefonate per Internet, den auch das vorgestellte Asterisk unterstützt.

Von Providern und Protokollen

Die wichtigste Voraussetzung für die Telefonie mit externen Teilnehmern stellt ein breitbandiger Internetzugang dar. Zwar genügt schon ein DSL-Anschluss mit 1 MBit/s, dann lastet – bei vernünftiger Qualität – jedoch ein einzelnes Gespräch die Leitung schon voll aus [1]. Wichtig ist auch eine geringe Latenzzeit des Anschlusses (Stichwort FastPath), da Sie ansonsten starke Verzögerungen im Telefonat hören. Generell gilt: Je schneller, desto besser – vor allem dann, Sie wenn neben dem Telefonat auch im Internet surfen wollen. Technologien wie Traffic-Shaping helfen zudem dabei, die Sprachpakete zu priorisieren.

Wollen Sie nicht nur intern, sondern auch mit anderen Teilnehmern telefonieren, dann brauchen Sie einen Anbieter, der Gespräche ins klassische Festnetz vermitteln kann. Freie Anbieter wie Sipgate [2] oder Dus.net [3] eignen sich meist besser, da sie unabhängig vom Internetanbieter sind. Zudem dürfen Sie die meisten Provider-Angebote nicht zu geschäftlichen Zwecken nutzen, und einige arbeiten gar mit eigenen proprietären Protokollen, die sich im Gegensatz zu SIP nicht an Asterisk anbinden lassen.

Mittlerweile ist auch der Markt an SIP-fähiger Hardware rasant gewachsen, und fast jeder Telefonhersteller bietet Modelle mit VoIP-Unterstützung an [4] (Abbildung 1). Selbst einige Handys – beispielsweise Nokias E-Serie – verfügen über einen eingebauten SIP-Client, mit dem Sie von jedem Ort der Welt per WLAN telefonieren können. Daneben haben Sie die Auswahl zwischen klassischen DECT-Telefonen mit Ethernet-Anschluss, reinen WLAN-Mobilteilen oder auch Adaptern, die alten Geräten das SIP-Protokoll beibringen. Zu guter Letzt können Sie auch ein Softphone [5] benutzen, also eine Telefonielösung für den PC. Eine gute Übersicht dazu bietet das Ubuntuusers-Wiki [6].

Abbildung 1: IP-Telefone bieten heute alle Komfortmerkmale ihrer konventionellen Pendants. (Bild: Cisco Systems)

Sonderfall Faxgerät

Ausgerechnet eine etablierte Technik kommt mit VoIP nicht zurecht – das Fax. Bei der Übermittlung von Faxnachrichten sind Latenz und Leitungsqualität entscheidend, und vor allem die Sprachkompression macht einen Strich durch die Rechnung, wollen Sie den guten alten Fernkopierer übers Internet benutzen. Haben Sie keinen Analoganschluss als "Fallback", so können Sie bei den meisten Anbietern ein so genanntes Web-Fax nutzen, mit dem Sie die Nachrichten bequem per Browser versenden und per E-Mail erhalten. Möchten Sie nicht auf Ihr Fax-Gerät verzichten, dann benötigen Sie Unterstützung für das T.38-Protokoll (die leider bislang sehr selten ist).

Funktionalität und Flexibilität

Bei Asterisk handelt es sich um eine komplexe Telefonanlage, das alle Telefoniebedürfnisse vom Privatanwender bis zum großen Unternehmen mit angeschlossenem Callcenter befriedigen kann. Neben der Telefonie bietet es einen integrierten Anrufbeantworter ("Voicemail"), Telefonkonferenzen, interaktive Dialogdienste und vieles mehr. Zusätzlich können Sie mit zahlreichen Plugins die Funktionalität nochmals erweitern.

Das Besondere: Asterisk ist nicht auf SIP beschränkt, sondern kann über entsprechende Schnittstellen auch mit herkömmlichen ISDN-Leitungen oder analogen Telefonanschlüssen arbeiten. Während kleine Telefonanlagen oft nur wenige Funktionen beherrschen, steht Asterisk teuren ISDN-Anlagen in nichts nach und lässt sich flexibel an die eigenen Bedürfnisse anpassen. Dazu bedienen Sie sich einer Skriptsprache und legen genau fest, was mit eingehenden und ausgehenden Anrufen passiert: Weiterleitungen, Ansagen, Besetztzeichen, Sprachnachrichten und vieles mehr gehören zum Repertoire. Auch eine tageszeitabhängige Konfiguration ist möglich.

Die Installation

Unter Ubuntu – wir wählen die schon leicht betagte, dafür aber stabile 8.04 LTS Server Edition samt Asterisk 1.4 als Basis – installieren Sie den Dienst samt deutscher Sprachpakete per sudo apt-get install asterisk asterisk-prompt-de. Das Paket legt einen Systembenutzer namens asterisk als Mitglied der Gruppen asterisk, dialout und audio an, mit dem der Server direkt nach der Installation gestartet wird. Sie sollten also Ihre Firewall scharf schalten, wenn Sie keine ungebetenen Gäste in Ihrer Telefonanlage haben möchten. Welche Pfade Asterisk anlegt, verrät Tabelle 1.

Tabelle 1: Wichtige Asterisk-Pfade

Pfad

Inhalt

/etc/asterisk Konfigurationsdateien
/var/log/asterisk Protokolle
/usr/share/asterisk/sounds Sounds und Ansagen
/var/spool/asterisk/voicemail eingehende Sprachnachrichten
/usr/lib/asterisk/modules Plug-ins und Module

Basiskonfiguration

Für uns relevant sind die Dateien extensions.conf, in der Sie Nebenstellen und Wahlregeln definieren, sowie sip.conf, in der Sie Ihre Endgeräte verwalten. Über diese Dateien konfigurieren Sie Asterisk anhand verschiedener Abschnitte. Dort definieren Sie entweder Einstellungen oder Nebenstellen (Extensions). Das Beispiel in Listing 1 zeigt anhand der Datei musiconhold.conf die Einrichtung zweier Warteschleifen nach diesem Prinzip. Die einzelnen Abschnitte benötigen jeweils einen eindeutigen Namen, der in eckigen Klammern steht, und der sich wiederum aus anderen Abschnitten referenzieren lässt. Zusätzlich können Sie in den Sektionen [general] und [global] allgemeine Einstellungen vornehmen.

Listing 1
[default]
mode=files
directory=/var/lib/asterisk/moh
[native-random]
mode=files
directory=/var/lib/asterisk/moh
random=yes     ; Play the files in a random order

Kommentare müssen Sie mit einem Semikolon kennzeichnen, da die dafür sonst übliche Raute (#) Bestandteil der Telefonnummer sein kann. Einzelnen Parametern weisen Sie per Gleichheitszeichen (=) einen Wert zu, und in den darunterliegenden Zeilen geben Sie per Folgepfeil (=>) an, für welche Objekte die Einstellung gilt. Das Beispiel in Listing 2 verdeutlicht diese Syntax.

Listing 2
; Setzt die Option switchtype für Kanäle 1-4 und 10-12 auf national
switchtype = national
channel => 1-4
channel => 10-12
; Setzt die Option switchtype auf dms100 für Kanäle 25-47
switchtype = dms100
channel => 25-47

Einrichten von Telefonen

Bevor Sie jedoch mit der Konfiguration beginnen, müssen Sie zunächst Ihre Endgeräte einrichten. In der Datei sip.conf haben die Asterisk-Macher bereits zahlreiche Beispiele eingefügt, die auf die Besonderheiten der verschiedenen Hersteller eingehen. Ist Ihr Modell nicht dabei, finden Sie im Wiki auf Voip-info.org [7] eine gute Anlaufstelle mit einer Liste von kompatiblen Telefonen samt Einstellungen. Ein generisches Beispiel, das im Test mit dem schon älteren Grandstream-BT-100-Telefon sowie dem Softphone Ekiga [5] funktionierte, finden Sie in Listing 3.

Listing 3
[zentrale]
type=friend
host=dynamic
secret=sternchen
callerid=Zentrale Mustermann GmbH <4200>
language=de
[vertrieb]
type=friend
host=dynamic
secret=paket
callerid=Vertrieb Mustermann GmbH <4300>

Diese Konfiguration bewirkt Folgendes: Das Gerät mit dem Namen zentrale wird für ein- und ausgehende Anrufe (type=friend) mit dem Passwort sternchen definiert und gibt sich als Zentrale Mustermann GmbH zu erkennen. Es kann sich von jeder IP-Adresse aus anmelden (host=dynamic) und erhält deutsche Sprachansagen (language=de). Weiterhin definieren Sie in der folgenden Sektion noch ein Telefon für den Vertrieb, mit vergleichbaren Einstellungen – lediglich Benutzername, Passwort, Sprache und der Anrufername unterscheiden sich.

Haben Sie diese Einträge angelegt, dann starten Sie Asterisk per /etc/init.d/asterisk reload neu und konfigurieren Ihr Endgerät mit dem Benutzernamen zentrale und dem Passwort sternchen (Abbildung 1). Jetzt sollte die Verbindung zum Server grundsätzlich funktionieren – im Fehlerfall finden Sie in der Datei /var/log/asterisk/messages sowie im Log des Telefons einen Hinweis, beispielsweise auf ein falsches Kennwort. Klappt die Verbindung dennoch nicht, dann überprüfen Sie Ihre Firewall und schalten Sie die entsprechenden IP-Adressen gegebenenfalls testweise komplett frei.

Abbildung 2: Endgeräte-Konfiguration am Beispiel des Grandstream BT-100.

Steht die Verbindung, naht der spannende Moment: Wählen Sie an Ihrem Endgerät die Nummer 1000, und Asterisk begrüßt Sie mit einer freundlichen Ansage in deutscher Sprache. In einem Dialogmenü können Sie sich über verschiedene Aspekte zum Server informieren, indem Sie die Zifferntasten an Ihrem Telefon drücken. Hören Sie zwar die Ansage, aber die Menü-Navigation klappt nicht, dann müssen Sie an Ihrem Telefon noch Einstellungen vornehmen (oftmals heißt die Option Send DTMF as). Funktioniert das, wählen Sie in einem zweiten Schritt die Rufnummer 600, um den so genannten Echo-Test zu starten. Dabei wird alles, was Sie ins Telefon sprechen, sofort von Asterisk wiedergegeben. Klappt auch das, dann funktioniert die Kommunikation zwischen Telefon und Server, herzlichen Glückwunsch!

Ist Ihr Server mit dem Internet verbunden, dann können Sie in einem dritten Schritt eine Verbindung zum externen Digium-Testserver herstellen, indem Sie die Nummer 500 an Ihrem Telefon wählen. Zunächst hören Sie eine deutsche Ansage, und nach kurzer Zeit begrüßt Sie das fremde System mit englischen Menüs. Klappt auch das, steht der weltweiten Kommunikation nichts im Wege – Ihr Asterisk-Server kann jetzt auch mit externen Servern Verbindung aufnehmen.

Die Datei sip.conf illustriert auch schön das Zusammenspiel der verschiedenen Parameter und Sektionen. Im obigen Listing 3 ist die deutsche Sprache nur der Zentrale zugewiesen, wogegen der Vertrieb englische Ansagen hört. Soll jeder Teilnehmer standardmäßig die deutsche Menüführung bekommen, dann können Sie entweder pro Gerät mühsam diese Konfiguration zuweisen, oder sie aber global vornehmen.

Probieren Sie es aus – entfernen Sie die Zeile language=de aus dem Abschnitt [zentrale] und fügen Sie ihn stattdessen in der Sektion [general] ein. Nach einem Neustart von Asterisk haben nun alle Teilnehmer die deutschen Ansagen, da diese Option vererbt wird. Um für ein Gerät ausnahmsweise eine andere Einstellung vorzunehmen, können Sie beispielsweise mit language=en in der jeweiligen Sektion die globale Vorgabe überschreiben.

Konfiguration der Nebenstellen

Das Definieren der Geräte allein nützt nichts, wenn für sie kein Ablauf in der Datei extensions.conf vorgesehen ist. Hier stellen Sie alle Nebenstellen und deren Anrufverhalten exakt ein. Ein einfaches Beispiel dafür haben wir in Listing 4 abgedruckt, das Sie ans Ende der Konfigurationsdatei in der Sektion [default] eintragen müssen. Einem Asterisk-Neustart macht die Änderungen aktiv.

Listing 4
exten => 4200,1,Dial(SIP/zentrale)
exten => 4300,1,Dial(SIP/vertrieb)
exten => 4900,1,Dial(SIP/zentrale&SIP/vertrieb)
exten => 4800,1,Answer()
exten => 4800,2,Playback(vm-goodbye)
exten => 4800,3,Hangup()

Das Beispiel bewirkt Folgendes: Ein Anruf auf der Nebenstelle 4200 lässt das Telefon der Zentrale klingeln, analog läutet bei der 4300 das Gerät im Vertrieb. Durch Verknüpfung der beiden Anweisungen löst die Nummer 4900 einen Sammelruf bei beiden Geräten aus – wer zuerst abnimmt, bekommt das Gespräch. Doch Asterisk eignet sich nicht nur für reine Anrufen, sondern auch als so genanntes Dialogsystem, wie die Definition der Nebenstelle 4800 zeigt. Die Zahl nach der Nebenstelle gibt jeweils die Reihenfolge im Anrufablauf an. Zunächst nimmt Asterisk das Gespräch automatisch an, dann spielt es die Aufnahme vm-goodbye vor, um danach im dritten Schritt das Gespräch zu beenden.

Keiner da?

Doch was passiert, wenn keiner abnimmt? Für diesen Fall bringt Asterisk auch einen Anrufbeantworter mit, dessen Konfiguration Sie ganz einfach in der Datei voicemail.conf vornehmen. Ergänzen Sie den Abschnitt [default] zunächst um die Zeilen aus Listing 5.

Listing 5
4200 => 0815,Mailbox Zentrale,zentrale@meine.firma
4300 => 1234,Mailbox Vertrieb,vertrieb@meine.firma

Mit diesen Einträgen richten Sie zwei Mailboxen ein. Die erste trägt die Nummer 4200 und lässt sich mit der PIN 0815 abfragen (dazu später mehr). Die zweite gehört Teilnehmer 4300, und für die Fernabfrage definieren Sie den Code 1234. Zusätzlich geben Sie in der Konfiguration an, wem der Anrufbeantworter namentlich gehört und an welche E-Mail-Adresse eingehende Anrufe versandt werden sollen – denn auch das beherrscht Asterisk.

Abbildung 3: Auf Wunsch schick Asterisk Mailbox-Nachrichten auch per E-Mail.

Wenn Sie jetzt Asterisk neustarten und den Teilnehmer 4200 oder 4300 anrufen, passiert – nichts. Sie erinnern sich? Alles, was das Anrufverhalten beeinflusst, muss in die extensions.conf, so auch die Weiterleitung auf die Mailbox. Ändern Sie die Definition der zwei Nebenstellen daher zunächst so ab, wie in Listing 6 zu sehen, und starten Sie Asterisk neu.

Listing 6
exten => 4200,1,Dial(SIP/zentrale,15)
exten => 4200,2,VoiceMail(4200)
exten => 4300,1,Dial(SIP/vertrieb,25)
exten => 4300,2,VoiceMail(4300)

Ruft ein Teilnehmer nun die Zentrale an, so wird er bei Nichterreichbarkeit oder nach 15 Sekunden automatisch mit der Mailbox 4200 verbunden. Analog funktioniert dies für den Vertrieb, bei dem der Anrufbeantworter jedoch erst nach 25 Sekunden anspringt. Da Sie den Eintrag für den Sammelruf auf der 4900 nicht verändert haben, gelangen Anrufe auf dieser Nebenstelle nie zur Mailbox.

Auch wenn Asterisk die Benachrichtigung über Mailbox-Nachrichten per E-Mail verschickt, so ist die Fernabfrage manchmal bequemer. Standardmäßig dient die Rufnummer 8500 der Mailboxabfrage. Probieren Sie es aus, indem Sie von einer beliebigen Nebenstelle aus dort anrufen. Nach Eingabe Ihrer Mailbox und deren PIN können Sie die Nachrichten menügeführt abfragen.

Kontakt zur Außenwelt

Zwar kann Ihr Asterisk schon ganz schön viel, doch wie machen Sie sich für andere erreichbar und führen Gespräche ins Festnetz? Dazu benötigen Sie einen Anbieter, der die entsprechenden Schnittstellen bereitstellt – beispielsweise Sipgate, das auf der Homepage einige Hilfen zur Asterisk-Integration anbietet [8].

Die Konfiguration hängt stark vom verwendeten Provider ab, das Prinzip bleibt aber immer vergleichbar: In der Datei sip.conf (Sipgate-Beispiel in Listing 7) sorgen Sie zunächst für die Verbindung zum VoIP-Anbieter. Anschließend definieren Sie in der extensions.conf (Sipgate-Beispiel in Listing 8) an der passenden Stelle die Wählregeln für ein- und ausgehende Anrufe.

Listing 7
; Quelle: http://www.sipgate.de/faq/index.php?do=displayArticle&article=540
; Ersetzen Sie SIPID
 und SIPPW
 durch Ihre Zugangsdaten
[general]
port = 5060
bindaddr = 0.0.0.0
context = error
qualify=no
disallow=all
allow=alaw
allow=ulaw
allow=g729
allow=gsm
allow=slinear
srvlookup=yes
register => SIPID
:SIPPW
@sipgate.de/SIPID

[sipgate-out]
type=friend
insecure=invite
nat=yes
username=SIPID

fromuser=SIPID

fromdomain=sipgate.de
secret=SIPPW

host=sipgate.de
qualify=yes
canreinvite=no
dtmfmode=rfc2833
context = from-sipgate
Listing 8
; Quelle: http://www.sipgate.de/faq/index.php?do=displayArticle&article=540
; Ersetzen Sie SIPID
 durch Ihre Zugangsdaten
exten => _X.,1,Set(CALLERID(num)=SIPID
)
exten => _X.,2,Dial(SIP/${EXTEN}@sipgate-out,30,trg)
exten => _X.,3,Hangup

Auch eingehende Anrufe stellen kein Problem. Da eingehende Anrufe von Sipgate im Kontext from-sipgate definiert sind, müssen Sie die Wahlregeln in einer entsprechenden Sektion vornehmen, analog zu den vorherigen Einträgen. Das Beispiel in Listing 9 lässt eingehende Anrufe zehn Sekunden bei der Zentrale klingeln, um anschließend die Sounddatei demo-thanks abzuspielen und den Anruf zu beenden.

Listing 9
; Quelle: http://www.sipgate.de/faq/index.php?do=displayArticle&article=540
; Ersetzen Sie SIPID
 durch Ihre Zugangsdaten
[from-sipgate]
exten => SIPID
,1,Dial(SIP/zentrale,10)
exten => SIPID
,2,Playback(demo-thanks)
exten => SIPID
,3,Hangup()

BITTE UNBEDINGT BEACHTEN!

Sobald Sie die Verbindung zu einem externen Anbieter aufbauen, kann Ihr Asterisk-Server auch ungewollt Kosten verursachen, da er sich mit Ihrem Zugang und Ihrer Rufnummer verbindet. Wichtig ist, dass Sie die Konfiguration komplett überprüfen und absichern sowie die nicht benötigen Beispielkonfigurationen der Standardinstallation entfernen.

Bei Asterisk handelt es sich im einen komplexen Dienst, den wir im Rahmen dieses Artikels nur anschneiden können. Bevor Sie Ihren Server also produktiv in Betrieb nehmen, sollten Sie sich mit allen Details befassen, um sicherzugehen, dass Ihre Telefonanlage auch genau das macht, was Sie wollen.

Fazit

Bei Asterisk handelt es sich um ein äußerst mächtiges Werkzeug, das sich aufgrund seiner umfangreichen Konfigurationsmöglichkeiten flexibel einsetzen lässt. Neben den hier gezeigten Beispielen beherrscht Asterisk beispielsweise verschiedene Berechtigungen für ein- und ausgehende Anrufe, Weiterleitungen, Konferenzen und vieles mehr.

Umfassendes Asterisk-Kompendium

Stefan Wintermeyer, Philipp Kempgen

Asterisk 1.4 + 1.6

Addison-Wesley, 2009

ISBN 978-3-8273-2699-7

1008 Seiten, 69,80 Euro

http://www.addison-wesley.de

Ein umfassendes Kompendium rund um Asterisk bietet das Buch "Asterisk 1.4 + 1.6" von Stefan Wintermeyer und Philipp Kempgen, das es sowohl gedruckt als auch in einer kostenlosen Online-Version (http://www.das-asterisk-buch.de) gibt. Es führt zum einen durch die Installation und Konfiguration einer kleinen Telefonanlage und behandelt daneben auch ausführlich fortgeschrittene Funktionen wie Weiterleitung, Mailbox, Fax, Konferenzschaltungen und Callcenter-Features. Zahlreiche Tipps und detaillierte Referenzen machen das Buch gleichermaßen zu einer echten Fundgrube wie zu einer unentbehrlichen Referenz für Asterisk-Nutzer.

Glossar

SIP

Session Initiation Protocol (RFC 3261). Ein Netzprotokoll für Aufbau, Steuerung und Abbau von Kommunikationssitzungen zwischen zwei oder mehr Teilnehmern.

FastPath

Option zur Verringerung der Latenz bei ADSL-Anschlüssen. Basiert auf dem Weglassen einer nicht unbedingt notwendigen Fehlerkorrekturfunktion, wodurch die Latenzzeit sich in etwa halbiert.

Infos

[1] Hilfe zur Bandbreite: http://www.sipgate.de/faq/index.php?do=displayArticle&article=213&id=219

[2] Sipgate: http://www.sipgate.de

[3] Dus.net: http://www.dus.net

[4] Sipgate-Shop: http://www.sipgate.de/voipshop

[5] VoIP-Clients im Test: Stefan Schwarzer, "Sprachrohr", LinuxUser 07/2007, S. 34, http://www.linux-community.de/artikel/13151/

[6] Ubuntuusers-Wiki zur Internettelefonie: http://wiki.ubuntuusers.de/Internet-Telefonie

[7] Hardware-Einstellungen bei voip-info.org: http://www.voip-info.org/wiki/view/Asterisk+phones

[8] Asterisk-Anbindung an sipgate: http://www.sipgate.de/faq/index.php?do=displayArticle&article=540

Einem Freund empfehlen    Druckansicht beenden Bookmark and Share
Kommentare