Viele begreifen Asterisk als reine VoIP-Anlage. Dabei gibt es den freien Server länger als die SIP-Telefonie. In dieser Workshop-Folge erfahren Sie, wie Sie ISDN-Leitungen und Analogtelefone anbinden und der Anlage Faxfunktionen verleihen.
In den letzten beiden Workshop-Folgen ([1], [2]) ging es um die Installation und Programmierung einer reinen VoIP-Anlage, die per SIP-Protokoll und -Provider die Verbindung zur Außenwelt führt. Der dritte Teil verheiratet die traditionelle Analog- und ISDN-Telefonie mit Asterisk [3]. Über Besonderheiten, die Asterisk für das gute alte Fax bereithält, erfahren Sie einiges am Schluss des Artikels.
American Beauty
Die Verbindung aus ISDN und Asterisk kann nicht gerade als Liebeshochzeit gelten. Wenn Asterisk überhaupt ein Kupferkabel liebt, dann ist es ein analoges Telefonkabel. Das liegt am amerikanischen Ursprung der Software. Noch heute laufen die meisten Asterisk-Installationen in den USA mit analogen Karten. Das erklärt auch gleich, warum VoIP für diese Nutzergruppe oft einen Qualitätssprung bedeutet. In vielen europäischen Ländern hingegen ist seit über 20 Jahre ISDN im breiten Einsatz – selbst in vielen Privathaushalten.
Entsprechend soll natürlich die neue Asterisk-Telefonanlage nicht nur VoIP, sondern auch ISDN verbinden können. Das funktioniert entweder mit einer ISDN-Karte, mit einer ISDN-Box, die Sie über USB an den Rechner anschließen, oder mit einer ISDN-to-SIP-Blackbox. Die folgende Beschreibung beschränkt sich auf die meistverbreitete Variante, die ISDN-Karte. Hilfreich ist ein wenig ISDN-Grundwissen [4], beispielsweise um den Unterschied von BRI und PRI.
ISDN-Karten zwischen zehn und 1000 Euro
Leider gibt es ISDN-Karten wie Sand am Meer – teure PRI-Karten kosten fünfstellige Beträge, günstige BRI-Karten gehen für zehn bis 30 Euro bei Auktionsportalen über die virtuelle Ladentheke. Die Frage nach der besten ISDN-Karte ist nicht objektiv korrekt zu beantworten. Prinzipiell kann eine 30-Euro-Karte vom Discounter genauso gut sein wie eine 1000-Euro-Karte vom Fachhandel. Bei manchem Hersteller liegt der Verdacht nahe, dass seine Premiumhardware vom selben Fließband stammt wie die Massenware und die Verpackung den Unterschied macht.
Ein objektiver Unterschied ergibt sich allerdings im Grad der Schwierigkeit bei der Treiberinstallation. In der Tendenz gilt: Je günstiger eine ISDN-Karte ist, desto länger braucht man für die Installation. Teurere Produkte kommen meist mit mehr oder weniger guten Install-Skripten, die Quellen aus dem Internet laden, dann wild patchen und zum Schluss eine meist veraltete Asterisk-Version installieren.
Beispiel Digium-Karte
Dieser Workshop kann natürlich nicht für alle am Markt erhältlichen Karten eine Installationsbeschreibung geben. Das soll beispielhaft für die Digium B410P [5] erfolgen, deren vier ISDN-Ports für die meisten kleineren Betriebe und Privatpersonen sowieso ausreichen. Die B410P beherrscht sogar Echo Cancelation [6] in Hardware, was die CPU entlastet und der Qualität der Echokompensation entgegenkommt (siehe Kasten “Hallo Echo”). Außerdem lässt sich die Karte im TE- und im NT-Modus fahren.
Da der Asterisk-Hersteller Digium sie baut und vertreibt, muss man kein Prophet sein, um sicherzugehen, dass es zu jeder neuen Asterisk-Release zügig einen funktionierenden Treiber geben wird. Da Digium oft im Monatstakt wichtige Asterisk-Updates veröffentlicht, ist dies der einzige für normale Admins gangbare Weg, immer eine aktuelle Asterisk-Version laufbreit zu haben.
Asterisk übersetzen
Den Asterisk-Server hatten Sie bereits in Teil 1 dieses Workshops installiert. Der Betrieb einer ISDN-Karte erfordert aber ein etwas komplexeres Asterisk-Setup. Für die folgende Anleitung nehmen Sie wieder ein frisch installiertes Debian-System [10] als Grundlage oder Sie installieren über das Setup der früheren Artikel drüber. Wichtig: Die ISDN-Karte müssen Sie vorher (!) in den Rechner einbauen. Loggen Sie sich nun auf dem System als Root ein und führen Sie
apt-get update apt-get -y upgrade shutdown -r now
aus. Das stellt sicher, dass das System einen aktuellen Kernel benutzt.
Nach dem Booten loggen Sie sich wieder als Root ein und spielen die zum Kompilieren notwendigen Pakete ein (Listing 1, Zeile 1). Zeile 2 holt und entspackt die aktuellen Quellen vom Digium-Server. Jetzt übersetzen und installieren Sie die Zaptel-Quellen (Zeilen 3 und 4) Das letzte Make lädt die aktuellen MISDN-Quellen und baut die Treiber für die ISDN-Karte. Die Zeilen 5 und 6 übersetzen den Asterisk-Server. Das »make config« führt dazu, dass Asterisk auf Ihrem Debian-System beim Hochfahren automatisch startet.
|
Listing 1: Asterisk |
|---|
01 apt-get -y install build-essential libncurses5-dev libcurl3-dev libvorbis-dev libspeex-dev unixodbc unixodbc-dev libiksemel-dev linux-headers-`uname -r` flex bc pciutils libnewt-dev libusb-dev 02 cd /usr/src && wget http://downloads.digium.com/pub/asterisk/asterisk-1.4-current.tar.gz && wget http://downloads.digium.com/pub/zaptel/zaptel-1.4-current.tar.gz && tar xvzf asterisk-1.4-current.tar.gz && tar xvzf zaptel-1.4-current.tar.gz 03 cd zaptel-1.4.8 04 ./configure && make && make install && make b410p 05 cd /usr/src/asterisk-1.4.17 06 ./configure && make && make install && make samples && make config |
ISDN-Karte per Skript konfigurieren
Zum Erkennen einer eingebauten ISDN-Karte starten Sie »/usr/sbin/misdn-init scan«. Das Skript antwortet etwa mit:
[OK] found the following devices: card=1,0x4 [ii] run "/usr/sbin/misdn-init config" to store this information to /etc/misdn-init.conf
Hat das System die Karte also korrekt erkannt, können Sie mit »/usr/sbin/misdn-init config« die Standardkonfiguration automatisch in die Datei »/etc/misdn-init.conf« schreiben lassen. Die Konfiguration der Karte in der Datei »/etc/misdn-init.conf« beschränkt sich im Folgenden auf den Teil mit der Überschrift »Port settings«. Die verfügbaren Optionen sind dort aufgelistet.
Wenn Sie die Karte an einem normalen Mehrgeräteanschluss betreiben wollen und diesen mit Port 1 der Karte verbinden, dann lautet die entsprechende Zeile »te_ptmp=1«. Falls Sie über den gleichen Port auch Faxe empfangen möchten, müssen Sie weiter unten noch die Zeile »option=1,master_clock« durch Entfernen des Kommentarzeichens aktivieren. In der letzten Zeile steht ein Schalter für einen höheren Debugging-Level. Es schadet sicher nicht, dort anfänglich »debug=1« einzutragen.
Als Nächstes müssen Sie Asterisk in der Datei »/etc/asterisk/misdn.conf« die Daten für den Port angeben. Am besten kommentieren Sie alle anderen Kontexte aus und geben am Ende zusätzlich die folgenden Daten ein:
[isdn] ports=1 context=from-isdn msns=*
Jetzt ist der Zeitpunkt, um mit einem »shutdown -r now« das System zu booten und zu prüfen, ob Asterisk und ISDN-Treiber sauber starten. Die vier Lampen neben den ISDN-Ports der Karte sollten dabei blinken. Sobald Sie in den ersten Port Ihr ISDN-Kabel einstecken, sollte die zugehörige LED (außer in der Schweiz) konstant leuchten (siehe Abbildung 2).

Abbildung 2: Sobald Sie die ISDN-Karte richtig konfiguriert haben und in den ersten Port das passende ISDN-Kabel einstecken, leuchtet dessen LED konstant.
Hallo ISDN-World
Wie ein Dialplan funktioniert, wissen Sie ja bereits seit den vorherigen Workshop-Teilen. Als Erstes sollten Sie mit einem “Hello World” wie in Listing 2 die prinzipielle Funktion Ihrer ISDN-Konfiguration testen. Wenn jetzt auf einer beliebigen MSN für diesen Anschluss ein Anruf eingeht, hebt Asterisk ab, spielt den Sprachbaustein »hello-world« ab und sagt danach die angerufene MSN.
Oder es reicht dieser Eintrag in Ihrer »extensions.conf«
[from-isdn] exten => 1234567,1,Dial(SIP/2000)
wenn Sie beispielsweise alle Anrufe zur MSN 1234567 auf Ihr internes SIP-Telefon 2000 verbinden wollen.
|
Listing 2: |
|---|
01 [from-isdn]
02 exten => _X.,1,Answer()
03 exten => _X.,n,Playback(hello-world)
04 exten => _X.,n,Wait(1)
05 exten => _X.,n,SayDigits(${EXTEN})
06 exten => _X.,n,Hangup()
|
Von internen SIP-Telefonen ins Festnetz über ISDN
Wenn Sie alle Gespräche von internen Telefonen im Context »[meine-telefone]«, die mit einer 0 anfangen, in das ISDN-Netz routen wollen, platzieren Sie den folgenden Eintrag in der »/etc/asterisk/extensions.conf«:
[meine-telefone]
exten => _0X.,1,Dial(mISDN/g:isdn/${EXTEN:1})
Beachten Sie, dass »:1« die führende Null weggeschneiden muss, da es sonst ein Auslandsgespräch wird.
Mit der allgemein beliebten Null als Erkennungsmerkmal für Gespräche ins Festnetz, gibt es gleichwohl ein Problem: die Rückruflisten in Ihrem Telefon. Bekommen Sie aus dem ISDN-Netz einen Anruf, zeigt Ihr internes SIP-Telefon korrekterweise die Rufnummer des Anrufers ohne die führende Null an und speichert sie auch im Telefon. Würden Sie nun einfach aus der Rufliste des Telefons zurückrufen, muss dies misslingen. Der Eintrag in der »extensions.conf«
[from-isdn]
exten => _X.,1,Set(CALLERID(num)=0${CALLERID(num)})
exten => _X.,n,Dial(SIP/2000)
löst das Problem durch Umschreiben der Caller-ID des Anrufers.
Analoge Telefonie mit Asterisk
Bei analogen Verbindungen von und zu Asterisk gibt es zwei Möglichkeiten: Sie bauen relativ teure Analog-Karten, die bis zu acht analoge Ports bereitstellen, in den Rechner ein. Oder Sie nutzen Analog Telephone Adapter (ATA), die Asterisk wie ein normales SIP-Telefon über das Netzwerk anspricht (siehe Abbildung 3). Der ATA konvertiert selbstständig die Sprachinformation zwischen Ethernet und analoger Leitung.
Die Analog-Karten benötigen eigene Treiber und sind in der Installation aufwändiger. Außerdem müssen Analog-Karten-Besitzer den Dialplan leicht verändern (»s«-Extension), da analoge Ports kein Ziel angeben können. Interessenten finden auf [13] eine Anleitung. Die ATAs dagegen punkten zweifach: Sie sind günstig, ab 50 Euro, und man braucht keine extra analoge Leitung von der Telefonanlage zum Gerät zu legen.
Die Nachteile liegen in der (theoretisch) schlechteren Sprachqualität im Vergleich zu den Analog-Karten und teilweise bei Problemen mit Faxgeräten. Wer aber ein Dect-Analog-Telefon an seine Asterisk-Anlage anschließen will, der ist mit einem ATA sehr gut bedient. Der zu dem ISDN-»extensions.conf«-Eintrag von vorhin korrespondierende Eintrag für ein ATA lautete schlicht:
[meine-ata]
exten => _0X.,1,Dial(SIP/${EXTEN:1}@2000)
Sowohl beim Kauf einer Karte als auch bei dem von ATAs, achten Sie auf die Art der Ports: Es gibt bei analogen Ports die beiden Varianten FXS (Foreign Exchange Subscriber) und FXO (Foreign Exchange Office). Ein FXS liefert den Strom für das daran angeschlossene Gerät, zum Beispiel ein Telefon. Wenn Sie also ein analoges Telefon an die Asterisk-Anlage anschließen wollen, dann benötigt diese einen FXS-Port.
Ein FXO dagegen nimmt Strom auf, beispielsweise von einem analogen Hausanschluss. Wer sein Asterisk nach draußen analog verbinden möchte, braucht eine Karte oder einen ATA mit FXO-Port.
Faxe senden und empfangen
Faxen unter Asterisk ist ein leidiges Thema, obwohl mancher Admin die Probleme selbst verursacht. Wer über die Kette Faxgerät, Analogadapter, SIP, Asterisk, Internet, SIP-Provider, Telefoncarrier, Telefonanlage der Gegenseite und entferntes Gerät ein Fax verschicken will, der sollte sich nicht wundern, wenn dies angesichts der Dicke des Protokollstacks nicht funktioniert. Faxe sind nämlich anders als Telefonate Timing-empfindlich und bekommen schon bei kleinen Verzögerungen Probleme.
Mancher Asterisk-Admin geht zudem in die Codec-Falle: Die für Sprachübertragung optimierten schmalbandigen Komprimierer eignen sich nicht für Faxe, die mit 9600 Bit/s senden wollen. Dafür kommt nur ein G.711-Codec ([14], A-law und µ-law) in Frage! Und selbst der bringt bei reinen IP-zu-IP-Verbindungen, etwa bei einem VPN zwischen zwei Standorten, oft Latenzprobleme.
Anhänger von Callweaver [15], einem GPL-Fork von Asterisk 1.2, können darüber nur schmunzeln. Denn Callweaver spricht das Faxprotokoll T.38, das sich auch auf IP-Strecken robust verhält. Wer aber auf Features von Asterisk 1.4 angewiesen ist, findet in dem zusehends veraltenden Fork keine Alternative.
Bei kleinen monatlichen Volumina abzusetzender Faxe führt kaum etwas an einem normalen Faxgerät nebst ATA vorbei. Bei größeren Mengen sollten Sie in Richtung Faxserver und damit zu Hylafax [16] gehen. Die Software IAXmodem [17] emuliert ein normales Modem und etabliert dafür ein Device wie »/dev/ttyIAX0«. An dies klemmen sich sowohl Asterisk per IAX-Protokoll als auch Hylafax an. Die komplette Installation [18] fürs Fax-Senden und -Empfangen ist nicht trivial, aber machbar. An gleicher Stelle finden Sie auch ein Fax-to-E-Mail-Gateway beschrieben.
Workstations in Ihrem Netz, die Faxe verschicken sollen, rüsten Sie mit Hylafax-Clients [16] aus, die es für fast jedes Betriebssystem gibt. Am Schluss ein Tipp aus der Praxis: Müssen Sie faxtechnisch mehr als einen Multiplex-Anschluss bedienen, verteilen Sie der besseren Skalierung wegen den Fax- und den Asterisk-Server auf verschiedene Systeme.
Ausblick
Im nächsten und letzten Teil der Artikelserie geht es um das GPL-Projekt “Gemeinschaft” [19]. Mit dem Telefonanlagen-Kit realisieren Sie eine komplette Telefonanlage mit Features klassischer Anlagen, etwa einem zentralen Telefonbuch im Telefon, Roaming Users und Mass-Deployment, und Sie verstehen das Prinzip des Provisioning bei Installationen mit mehr als zehn Telefonen. (jk)
|
Asterisk 1.6 |
|---|
|
Nach Redaktionsschluss dieser Ausgabe veröffentlichte Digium die erste Betaversion von Asterisk 1.6.0. Die von [11] verlinkte Feature-Liste ist lang: AMI bekommt eine Menge neue Kommandos und Actions, das CLI »core show hint«, »core show settings«, »core show channels count« und andere Kommandos, es kommen neue und erweiterte Dialplan-Funktionen hinzu, der NAT- und STUN-Support bei SIP-Verbindungen ist besser und vieles mehr. In der Asterisk-Community belebte das Veröffentlichen der Beta eine alte Diskussion: Es gäbe in der 1.4er Version noch genügend Baustellen und deswegen mache es wenig Sinn, eine neue Version zu veröffentlichen. Eine Telefonanlage erfordere eine konservativere Release-Politik. Gleichwohl wird sich im laufenden Jahr jeder Asterisk-Admin die Frage nach der richtigen Version stellen. Solange die 1.6 noch Beta ist, lautet die Antwort: 1.4. Auch danach sollte man noch eine Weile bei 1.4 bleiben, da Digium in der Vergangenheit immer mehr als ein Jahr gebraucht hat, neue Versionen halbwegs stabil zu bekommen. Paradoxerweise liegt hier ein Grund der relativ frühen Freigabe des 1.6er Zweiges: Digium praktiziert eine neue Release-Policy [12], die sich an der des Linux-Kernels orientiert – viele kleine Releases. Die Asterisk-Firma erhofft sich dadurch besser getesteten Code. |
|
Der Autor |
|---|
|
Stefan Wintermeyer ist Autor des bei Addison-Wesley erschienenen Asterisk-Buches und erster deutscher DCAP (Digium Certified Asterisk Professional). Bei der Amooma GmbH [http://www.amooma.de] bietet er Consulting, Support und Training zu Asterisk an. |







