Praxis Telefonvermittlung

Document Sample
Praxis   Telefonvermittlung Powered By Docstoc
					 Praxis : Telefonvermittlung




Ullrich Dittmer, Dirk von Suchodoletz

Ein Pinguin als Sparfuchs
Linux-PC senkt Handy-Gebühren
Ein Linux-PC nebst ein wenig Software, eine ISDN-Karte sowie spezielle Telefontarife lassen
sich mit etwas Geduld zu einer pfiffigen Telefonvermittlung kombinieren, über die sehr
kostengünstige Mobiltelefonate möglich sind.

Der PC als private Vermittlungsstelle kann die Gesprächskosten von Mobiltelefonaten auf wenige
Cent pro Minute drücken. Die Idee ist simpel: Weder ein- noch ausgehende Telefonate werden direkt
über die Netztechnik des Mobilbetreibers vermittelt, sondern man kombiniert ISDN oder VoIP mit
Mobilfunkverträgen und Pauschaltarifen sowie einer pfiffigen Telefonanlagensoftware so, dass sie
Angebote nutzt, die normalerweise im Mobilfunk nicht verfügbar sind.

In diesem Szenario spielt die erste Hauptrolle die interne Umleitung des Netzbetreibers O2, das
Rerouting, und die zweite ein Linux-PC mit ISDN-Anschluss und speziell konfigurierter Software.



 file:///G|/Desktop/neu/ART.HTM (1 of 19)05.08.2005 13:39:34
 Praxis : Telefonvermittlung

Unter dem Namen Genion bietet O2 einen Dienst an, bei dem Mobilfunkkunden an ihrem Wohnort
und einige hundert Meter drum herum per Handy zu festnetzähnlichen Gebühren telefonieren können.
Diesen Bereich nennt O2 Homezone. Dort sind Genion-Nutzer auch über zusätzlich zu
Mobilnummern zugeordnete Festnetznummern auf ihren Handys erreichbar. Anrufer, die diese
Festnetznummer wählen, zahlen grundsätzlich nur Festnetzgebühren.

Home, sweet home

Verlässt ein solches Handy, das über seine mobile Rufnummer wie jedes andere erreichbar ist, die
Homezone, kann das O2-Netz auf drei Arten reagieren, wenn Anrufer dessen Festnetznummer wählen:
Es meldet, der Angerufene sei zurzeit nicht erreichbar, es schaltet den Anrufbeantworter an oder es
stellt den Anruf zum Handy durch, wobei der Angerufene 19 Cent pro Minute zahlt. Die meisten
Homezone-Nutzer vermeiden diese zusätzlichen Gebühren, indem sie eine der beiden ersten
Möglichkeiten für ihre Homezone-Konfiguration einstellen, sind dann aber außerhalb der Homezone
über die Festnetznummer nicht erreichbar.

Immobilisiert

Anrufe, die für ein Genion-Handy bestimmt sind, lassen sich aber kostenlos zu einem anderen O2-
Handy umleiten - und über diesen Umweg ist man prinzipiell ohne zusätzliche Gebühren
deutschlandweit unter der Festnetznummer erreichbar. Das Genion-Handy steht dauerhaft daheim,
wird also in der Homezone des Nutzers "immobilisiert".

Handy-Freaks bezeichnen diese interne Umleitung gern etwas überspitzt als "deutschlandweite
Homezone". Kombiniert man dafür ein Genion- mit einem Loop-Handy (mit Loop bezeichnet O2
seine vorausbezahlten Karten), entfallen die monatlichen Kosten für ein Handy mit Standardvertrag
(siehe auch Grafik "Landesweite Umleitung").




Landesweite Umleitung Anrufe für die Festnetznummer eines Handys mit Genion-
Vertrag werden dauerhaft und kostenlos auf ein Handy mit Loop-Vertrag
weitergeleitet.


 file:///G|/Desktop/neu/ART.HTM (2 of 19)05.08.2005 13:39:34
 Praxis : Telefonvermittlung


Ist man daheim, führt man ausgehende Gespräche am besten über den ISDN-Anschluss, weil diese
Tarife etwas günstiger sind als für Genion-Telefonate innerhalb der Homezone. Außerhalb der
Homezone führt man immer nur das Handy mit dem Loop-Vertrag mit.

Der Nachteil dieses Vorgehens sind die deutlich höheren Kosten, die anfallen, wenn man mit dem
Loop-Handy selbst Gesprächspartner anruft. Genau da setzt die Linux-Vermittlung an; dann muss das
Guthaben der Loop-Karte nicht einmal angetastet werden. Möchte man eine Festnetzrufnummer in
Deutschland anrufen, wählt man zunächst die ISDN-Rufnummer, unter der sich der ISDN-bestückte
Linux-PC meldet - die Vermittlungs-Software erkennt, dass Herrchen anruft und lehnt die
Gesprächsannahme wie programmiert ab (siehe Grafik "Nach Hause telefonieren"). Dabei fallen keine
Kosten an. Die Übertragung der Rufnummer des Prepaid-Handys muss dabei allerdings eingeschaltet
sein.




Nach Hause telefonieren Zum Aufbau eines Gesprächs klingelt man zunächst
den heimischen Pinguin-PC an.

Direkt nach Ablehnung des Anrufs ruft der PC zurück - jedoch nicht das Prepaid-Handy, von dem der
Initialruf kommt, denn dafür würden ja hohe Gebühren für eine Mobilverbindung anfallen. Stattdessen
wählt er die Festnetznummer des neben ihm liegenden Genion-Handys. Durch die eingerichtete
Rufumleitung im O2-Netz landet der Anruf schließlich beim Prepaid-Handy.


Für diese Verbindung fallen nur Ortsgesprächskosten an. Nutzt man statt üblicher ISDN-Tarife einen
Call-by-Call-Anbieter (tagsüber beispielsweise 01082, abends etwa Arcor 01070), sind es lediglich 1
bis 1,5 Cent pro Minute (Grafik "Programmierter Rückruf"). Wer das System verfeinern will, kann die
Wahl des preisgünstigsten Call-by-Call-Anbieters auch automatisieren, indem er mit Tariftabellen

 file:///G|/Desktop/neu/ART.HTM (3 of 19)05.08.2005 13:39:34
 Praxis : Telefonvermittlung

gefütterter LCR-Software die Wahl überlässt [1].




Programmierter Rückruf Asterisk registriert anhand der Anrufernummer einen
Telefoniewunsch und ruft seinen Herrn umgehend zum Ortstarif zurück.

Nimmt man am Prepaid-Handy den Anruf der PC-Telefonanlage an, hört man einen Wählton und
kann wie gewohnt über die Handy-Tastatur wählen. Bei manchen Handys ist sogar die Wahl aus dem
Adressbuch möglich, zum Beispiel beim Siemens S55. Dazu muss man die Nummern mit
Ortsvorwahl speichern, aber ohne die internationale Vorwahl für Deutschland (+49).

Auf den Ton kommt es an

Der PC wertet die Tonwahlfolgen aus und wählt die erkannte Nummer. An einer solchen Verbindung
sind drei Stationen beteiligt, denn der Anruf geht vom PC über den ersten ISDN-Kanal zum eigenen
Prepaid-Handy, das irgendwo in Deutschland sein kann, und über den zweiten ISDN-Kanal zum
eigentlichen Gesprächspartner im Festnetz (siehe Grafik "Tonwahl-Erkennung").




 file:///G|/Desktop/neu/ART.HTM (4 of 19)05.08.2005 13:39:34
 Praxis : Telefonvermittlung




Tonwahl-Erkennung Der Linux-PC erkennt die ins Handy eingetastete Rufnummer
und baut die Verbindung auf. Am ISDN-Anschluss sind beide Kanäle belegt.

Das Guthaben des Prepaid-Handys nimmt dabei nicht ab, sondern zurzeit sogar zu: Für netzintern
vermittelte Gespräche spendiert der Netzbetreiber zwei Cent pro Minute (dabei darf jedoch keines der
beiden Handys über nationales Roaming im T-Mobile-Netz eingebucht sein).

Für den ISDN-Anschluss, an dem der PC vermittelt, sind Gebühren für die Umleitung zum Prepaid-
Handy sowie für die Verbindung zum Gesprächspartner zu zahlen. Dennoch liegen die Gesamtkosten
für solche Mobiltelefonate weit unter dem, was selbst Vertragskunden eines Mobilfunkanbieters
üblicherweise zahlen müssen (siehe Vergleichsmatrix Verbindungstarife).

Auch wird daran sichtbar, wie wenig Telefonie-Gebühren von der Entfernung abhängen. Das
Gespräch kann durchaus über eine längere Verbindungsstrecke und über mehr Stationen als üblich
geführt werden - es kommt durchaus vor, dass sich Gesprächspartner in der gleichen Region
aufhalten, an der Verbindung aber Vermittlungen mehrerer, auch entfernter Städte beteiligt sind - und
dennoch kostet es unterm Strich weniger als eine "normale", direkte Verbindung zum selben
Gesprächspartner.

Das Konzept lässt sich auf mehrere Teilnehmer, beispielsweise Familienmitglieder ausdehnen, wenn
man den Anrufern verschiedene MSNs für deren Initial-Anruf zuordnet. Noch mehr Sparpotenzial
eröffnen aktuelle Pauschaltarife, etwa das XXL der Telekom, mit dem man für neun Euro pro Monat
beliebig viele Telefonate an Samstagen, Sonntagen sowie Feiertagen führen kann, oder Arcor ISDN,
bei dem mit 39,90 Euro alle nationalen Festnetz-Telefonate eines Monats abgegolten sind. Und
schließlich kann man Linux auch so einrichten, dass man per Handy VoIP-Telefonate führen kann.


 file:///G|/Desktop/neu/ART.HTM (5 of 19)05.08.2005 13:39:34
 Praxis : Telefonvermittlung

Zunächst stellen wir jedoch die Einrichtung für ISDN vor, auch weil darauf die später gezeigte
Vermittlung von VoIP-Gesprächen gründet.

My Mobiltelefonvermittlung

Kern des Systems ist ein Telefonie-Gateway mit Linux-Betriebssystem; einige solche Projekte wurden
bereits beschrieben [2, 3]. In einer ersten Version diente bei dem hier vorgestellten Verfahren das
Open-Source-Projekt Caiviar als Vermittler, weil sich damit die CAPI-Schnittstelle weitreichend
steuern lässt [9]. Hier zeigen wir zwar dieselbe Funktionsweise, aber anhand der weit mächtigeren
Telefonie-Software Asterisk [6]; auch weil damit zusätzlich VoIP-Telefonate möglich sind.

Dabei dient Asterisk nur zur Vermittlung und nicht für den durchaus ebenfalls möglichen Anschluss
von ISDN- oder VoIP-Geräten. Wie das geht, haben wir ausführlich in [4] beschrieben. Dort sind auch
grundlegende Konzepte der Software erläutert, etwa die Funktionsweise der Kanäle, der Asterisk-
Kontext oder die Reaktion auf Ereignisse wie DTMF-Töne.

Neben einer aktuellen Linux-Distribution - wir haben Debian und Suse erfolgreich eingesetzt - braucht
man PC-seitig einen ISDN-Adapter, ferner einen Genion-Vertrag und eine Prepaid-Karte von O2.
Alternativ sind auch zwei Genion-Verträge geeignet, was jedoch für die hier geschilderte Anwendung
die Grundgebühren unnötig erhöht.

Die SIM-Karte, auf die der Genion-Vertrag registriert ist, steckt man in ein Handy, das als fest
installierter "Router" dient - das kann ein in der Schublade verstaubendes Exemplar der Brikett-
Generation sein, aber auch ein jüngeres Gerät. Nicht einmal der Akku muss funktionsfähig sein, weil
es rund um die Uhr eingeschaltet sein muss und daher dauerhaft per Netzteil mit Strom versorgt wird.
Der ISDN-Adapter muss Linux-kompatibel sein und Software-seitig über CAPI 2.0 angesprochen
werden (Common ISDN Application Programmers Interface).

Das Genion-Handy muss sich innerhalb der Homezone befinden. Ist es nicht dort, scheitert die
Umleitung, und das Netz liefert dem Anrufer die Ansage "Der gewünschte Gesprächspartner ist
zurzeit nicht erreichbar" (nur wenn im Genion-Anrufmanager die deutschlandweite Umleitung der
Genion-Festnetznummer eingeschaltet ist, kümmert sich das O2-Netz nicht um den Aufenthaltsort des
Handys und leitet auf jeden Fall um - das aber kostet 19 Cent pro Minute). Als Festnetznummer des
Genion-Geräts verwenden wir in den Beispielen 0 69/12 34 56, als Nummer des Prepaid-Handys 01
79/9 87 65 43. Für die MSN des ISDN-Anschlusses steht stellvertretend 1 23 45.

Einrichten der ISDN-Karte

Alle Anrufe, die für die Festnetznummer des Genion-Geräts bestimmt sind, leitet man zum Prepaid-
Handy um, und zwar über das Handy-Menü "Rufumleitungen" (alle Anrufe zur Nr. xy umleiten). Man
könnte auch den Anrufmanager von O2 verwenden, aber dieser Dienst kostet 19 Cent je Minute.


Das Telefon-Gateway wird in drei Schritten zusammengesteckt: ISDN-Karte einrichten, Asterisk
installieren, Rückruf programmieren. Der erste Schritt hängt vom eingesetzten ISDN-Adapter ab. Wir

 file:///G|/Desktop/neu/ART.HTM (6 of 19)05.08.2005 13:39:34
 Praxis : Telefonvermittlung

stellen im Weiteren die Einrichtung der sehr verbreiteten AVM Fritz!Card für PCI-Steckplätze vor.

Die aktuellen Suse-Distributionen bringen die ISDN-Unterstützung bereits von Haus aus mit, man
kann die Komponenten leicht mit YaST2 installieren. Im Untermenü Software-installieren/löschen
wählt man die Pakete capi4linux, avmfritzcapi, Open SSL, Open SSL-Develop und auch das später
benötigte Paket php4 aus. Anschließend richtet man die Fritz!Card mit YaST2 ein (Menü Hardware,
Netzwerkgeräte, ISDN). Damit ist der erste Schritt bei Suse-Systemen erledigt. Die Einrichtung auf
Systemen, die keinen vollständigen ISDN-Support mitbringen, erfordert mehrere zusätzliche Schritte,
auf die wir gesondert im Kasten "ISDN nachträglich" eingehen.




Der Pinguin vermittelt Die heimische Software-Telefonanlage erwartet
Kommandos des Prepaid-Handys, der Gebührenzähler läuft.

Nach unseren Erfahrungen eignet sich Asterisk ab Version 1.0.6 für die Vermittlungszwecke. Wer
Debian unstable einsetzt, lädt die Pakete asterisk und asterisk-chan-capi wie üblich mit apt-get
install oder dselect aus dem Internet. Bei Suse-Systemen kann man ab Version 9.3 Asterisk
mittels YaST2 einrichten. Danach fährt man auf beiden Systemen, Debian und Suse, mit der
Konfiguration der Datei modules.conf fort, die sich im Ordner /etc/asterisk/ befindet.




 file:///G|/Desktop/neu/ART.HTM (7 of 19)05.08.2005 13:39:34
 Praxis : Telefonvermittlung




Suse 9.3 bringt bereits grundlegende Elemente des ISDN-Supports mit - es fehlen nur
noch kartenspezifische Treiber.

Wer ein älteres Suse-System nutzt oder Asterisk auf die aktuelle Version 1.0.7 updaten möchte, muss
das Archiv manuell vom Asterisk-Webserver laden [6], entpacken, kompilieren und installieren
(make respektive make install). Wenn alles geklappt hat, liefert make install am Ende einige
Texthinweise und direkt darunter den Satz, dass Asterisk erfolgreich installiert worden ist.

Noch fehlen aber die Konfigurationsdateien, die Asterisk im Ordner /etc/asterisk erwartet. Die kann
man bequem mit make samples erstellen lassen; die Vorlagen dazu befinden sich als sample-Dateien
im Asterisk-Ordner configs. Anschließend öffnet man mit einem Editor die einzelnen .conf-Dateien
und trägt die erforderlichen Einstellungen ein. Welche das jeweils sind, zeigt das Listing auf Seite
221. In der Datei modules.conf veranlasst man, dass der Treiber chan_capi geladen wird.

Bitte zurückrufen!

Damit Asterisk korrekt vermittelt, fügt man der Datei extensions.conf einige Zeilen hinzu, sodass das
ISDN-CAPI Anrufe des Loop-Handys erkennt, ablehnt und "nebenher", über das Asterisk-Skript
callback.agi, die Genion-Festnetznummer wählt (für andere Zwecke können natürlich weitere
Einstellungen enthalten sein).


 file:///G|/Desktop/neu/ART.HTM (8 of 19)05.08.2005 13:39:34
 Praxis : Telefonvermittlung


Der Abschnitt [capiin] legt den Ablauf bei einem eingehenden Anruf fest. Die erste Zeile
bewirkt, dass Asterisk für eine Sekunde einen Klingelton liefert, wenn das Handy mit der Nummer 0
17 99 87 65 43 anruft. Dann weist Asterisk den Anruf ab. Die zweite Zeile lässt Asterisk das (noch
anzufertigende) Skript callback.agi ausführen, das sich um den Rückruf kümmert (agi steht für
Asterisk Gateway Interface, eine Programmierschnittstelle, mittels der sich das Asterisk-Verhalten bei
ein- und ausgehenden Anrufen steuern lässt). Tritt ein Fehler auf, so sorgt die letzte Regel für das
Auflegen der Verbindung. Nach dem Rückruf läuft der Abschnitt [capidialtone] ab. Dieser
öffnet den zweiten ISDN-Kanal und sendet den Wählton.

Nun richtet man den Treiber Chan-CAPI für Asterisk ein [7]; man entpackt und installiert ihn wie
üblich mit make und make install. Wir haben chan_capi.0.3.5.tar.gz eingesetzt. Auf aktuellen Linux-
Distributionen mit Kernel 2.6.11 läuft er freilich nur nach einer kleinen Änderung in chan_capi.c. Die
Zeile

c->fds[0] = fds[1];

muss geändert werden in

c->fds[0] = fds[0];

weil sonst unter anderem die Tonwahlerkennung scheitert. Anschließend kompiliert und installiert
man die Software mit make; make install. Danach definiert man in der Datei chan_capi-0.3.5/capi.
conf (nicht zu verwechseln mit /etc/capi.conf) das von Asterisk verwendete CAPI-Device und einige
weitere Parameter.

Incomingmsn ist die Rufnummer, auf der Asterisk eingehende Anrufe erwartet. Der Eintrag msn
definiert die Rufnummer, mit der Asterisk später die Genion-Festnetznummer wählt. Diese Einträge
muss man für die gegebene ISDN-Infrastruktur anpassen. Anschließend kopiert man das File in den
Ordner /etc/asterisk/. Damit ist Asterisk für die ISDN-Verwendung vorbereitet und man kann das
Rückruf-Skript schreiben. Voraussetzung dafür ist die Skriptsprache PHP respektive der im Listing
aufgeführte PHP-Mehrzeiler callback.agi [8]. Callback.agi speichert man in das Verzeichnis /var/lib/
asterisk/agi-bin. Damit es Asterisk ausführen kann, muss man die Dateirechte anpassen:

chmod 755 callback.agi

Wenn Asterisk einen Rückruf startet, legt die Software im Verzeichnis /var/spool/asterisk/outgoing/
die Datei cb01799876543 mit diesen Rückrufparametern ab:

Channel: CAPI/12345:069123456
Context: capidialtone
Extension: s
SetVar: CALLERIDNUM=12345
MaxRetries: 2
RetryTime: 10



 file:///G|/Desktop/neu/ART.HTM (9 of 19)05.08.2005 13:39:34
 Praxis : Telefonvermittlung


Auf der Lauer

Nun kann man die Vermittlung prüfen - einfach, indem man die Software startet und mit dem Loop-
Handy die ISDN-Nummer anruft, auf der Asterisk horcht.

asterisk -v

Wenn alles glatt geht, meldet das Programm am Ende der Initialisierung "Asterisk Ready" und man
kann die eingetragene MSN per Handy anrufen - es klingelt dann einmal, und Asterisk legt auf, sodass
das Besetztzeichen ertönt. Kurz danach sollte ein Rückruf auf dem Handy mit der Prepaid-Karte
eingehen. Wenn man das "Gespräch" annimmt, sollte ein Wählton zu hören sein, sodass man wählen
kann - etwa die Zeitansage.

Anders als bei üblichen Handy-Anrufen schließt man die Rufnummerneingabe aber nicht mit der
Ruftaste ab. Asterisk wählt nämlich nach einer Weile die bis dahin per Tonwahlerkennung
detektierten Ziffern automatisch. Das regelt der Abschnitt [capidialtone] in extensions.conf, es sei
denn, die Frist für die Eingabe einer vollständigen Rufnummer verstreicht. Die Frist ist nicht
dokumentiert, beträgt aber nach unseren Erfahrungen rund 30 Sekunden. In diesem Fall endet der
Anrufversuch mit einem Besetzton. Ansonsten sollte es beim gewählten Gesprächspartner klingeln,
wenn er erreichbar ist.

Wenn es nicht auf Anhieb klappt, beispielsweise Asterisk nicht "Ready" ist, sollte man Asterisk mit
den Kommandozeilenparametern -vvvvvv starten. Dann liefert die Software ausführliche Protokoll-
Informationen. Beispielsweise weigert sie sich zu starten, wenn im Verzeichnis /etc/asterisk die eine
oder andere Konfigurationsdatei fehlt oder nicht den erwarteten Namen hat, und der Rückruf klappt
nur dann, wenn in callback.agi auch die korrekte Rufnummer eingetragen ist. Welche gewählt wird,
kann man bei eingeschaltetem Debug genau beobachten. Ist der Fehler beseitigt, kann man die Debug-
Option weglassen.

Asterisk eignet sich nicht nur als ISDN-Vermittlung, sondern auch für Internet-Telefonate via Voice
over IP. Daher kann man das Programm auch für kostengünstige VoIP-Gespräche per Handy
verwenden. Die VoIP-Verbindungen gründen auf dem Session Initiation Protocol (SIP). PC-seitig
setzen wir dafür neben der oben beschriebenen ISDN-Konfiguration und dem CAPI-Treiber zusätzlich
einen DSL-Anschluss voraus.

Die ISDN-Technik ist weiterhin erforderlich, weil manche VoIP-Anschlüsse keine Rufnummern
bieten, die übers öffentliche Telefonnetz erreichbar sind. Deshalb klopft man auch in der VoIP-
Konfiguration per Loop-Handy zunächst bei der ISDN-Rufnummer des Linux-PC an. Danach führt
der Linux-PC dem Handy jedoch VoIP-Leitungen zu.

Zunächst benötigt man einen VoIP-Account, mit dem zwei VoIP-Telefonate gleichzeitig möglich
sind, etwa von GMX. GMX berechnet je angefangene Festnetzminute einen Cent. Auch mit einem
VoIP-Anschluss von 1&1 hat das Verfahren funktioniert.

Firewalling

 file:///G|/Desktop/neu/ART.HTM (10 of 19)05.08.2005 13:39:34
 Praxis : Telefonvermittlung



Damit man VoIP via Asterisk verwenden kann, muss eine Firewall die UDP-Ports 30000 bis 40000
sowie die TCP-Ports 5060 bis 5079 zum Asterisk-Server durchlassen. Wenn er sich in einer NAT-
Umgebung hinter einem Router befindet, muss der Router die entsprechenden Ports weiterleiten (port
forwarding). PCs, die mit dynamisch zugewiesenen IP-Adressen ins Internet gelangen, sollten sich
einen festen IP-Namen etwa via dyndns.org zuweisen lassen, damit die SIP-Vermittlung des VoIP-
Netzbetreibers den jeweiligen Asterisk-Server finden kann.

Asterisk wird für den VoIP-Zugang über die Datei /etc/asterisk/sip.conf eingerichtet. Falls sie fehlt,
kopiert man asterisk/configs/sip.conf.sample in den Ordner /etc/asterisk/ und benennt die Datei
passend um. In sip.conf zeigen wir die SIP-Konfiguration für einen GMX-Zugang. In den darauf
folgenden Konfigurationsdateien steht "SIP-Rufnummer" als Variable für die jeweils gegebene
Internet-Rufnummer.

Die Datei rtp.conf führt die Ports auf, die Asterisk für die VoIP-Verbindung nutzt. Für den Rückruf
legt man ein callFile im Verzeichnis /etc/asterisk an - in der ersten Zeile steht die Genion-Rufnummer
des Handys.

Die Datei extensions.conf folgt dem Aufbau der Version für ISDN in vielen Punkten, enthält aber für
die VoIP-Nutzung per Handy unter anderem den Verweis auf das callFile sowie andere Variablen -
etwa wegen der VoIP-Rufnummer.

Um die Verbindung zu überprüfen, startet man Asterisk mit den Kommandoparametern -vvvvgc, die
die Asterisk-Shell starten. Das Kommando sip show registry gibt Aufschluss darüber, ob sich
Asterisk beim VoIP-Anbieter angemeldet hat. Zusätzlich kann die Verbindung mit dem Befehl sip
show peers überprüft werden. Eine wünschenswerte Antwort sieht so aus wie im Screenshot
"Aufschlussreich" gezeigt.




 file:///G|/Desktop/neu/ART.HTM (11 of 19)05.08.2005 13:39:34
 Praxis : Telefonvermittlung




Aufschlussreich: Asterisk liefert mit passenden Aufrufparametern zahlreiche
Statusinformationen über den Startvorgang. Hier ist die Registrierung beim VoIP-
Anbieter zu sehen.

Nun kann man die VoIP-Vermittlung prüfen, also mit dem Handy die MSN des Linux-PC anrufen. In
der Praxis funktioniert das System zwar, aber man muss gegenüber normalen ISDN- und auch
Mobiltelefonaten Einbußen beim Komfort hinnehmen. Zum Beispiel kommt es vor, dass Asterisk den
Wählton oder das Freizeichen nicht sendet, und die Sprachqualität liegt eher auf einem gerade noch
ausreichenden Niveau. Auch wird die Wiedergabe sehr spürbar verzögert.

Das ist weitgehend der Kopplung zweier ohnehin "langsamer" Telefonie-Techniken geschuldet. Schon
bei VoIP-Verbindungen muss man lange Laufzeiten hinnehmen und hinzu kommen nun die des
Mobilfunks. Zusammen sind das mehrere hundert Millisekunden. Unter Umständen lässt sich der
Effekt mildern, indem man die GSM-Kompression einschaltet (in sip.conf allow=gsm
einsetzen).


 file:///G|/Desktop/neu/ART.HTM (12 of 19)05.08.2005 13:39:34
 Praxis : Telefonvermittlung


Wenn der Rückruf des Linux-PC zum Handy scheitert - etwa weil das Handy gerade im Funkloch war
-, versucht es der Rechner nach einigen Minuten erneut. Wen das stört, der kann das Verhalten im
callFile ändern, etwa die Variable MaxRetries herabsetzen oder die RetryTime kürzen.

Fazit

Die hier vorgestellte Vermittlung bringt Linux-Tüftlern nicht nur Spielspaß, sondern senkt auch die
Mobilfunkkosten deutlich - wenn auch technisch bedingt mit Komforteinbußen. Das Konzept ist nicht
auf die aufgeführten Anbieter und Tarifmodelle beschränkt; wir haben sie nur deshalb eingesetzt, weil
sie für das Anliegen besonders illustrativ sind. Wenn etwa O2 die "deutschlandweite Homezone"
einstellen sollte, könnte man andere Angebote durchaus auf ähnliche Weise kombinieren.

Einen schnellen DSL-Anschluss vorausgesetzt, ließen sich auch mehrere Gespräche zeitgleich
abwickeln. Damit wäre die Beschränkung der üblichen ISDN-Anschlüsse auf nur zwei Verbindungen
aufgehoben, Asterisk könnte mehr als ein Telefonat auf einmal vermitteln. Reizvoll erscheint auch die
Idee, Asterisk für VoIP-Angebote anzupassen, deren Rufnummern aus öffentlichen Telefonnetzen
erreichbar sind. (dz)

Literatur

[1] Least-Cost-Routing-Projekt, www.telefon-sparbuch.de/tmpl/calc/telephone/lcr/info/asterisk.htm

[2] Johannes Endres, Sebastian Piecha, Sprechzeug, Telefone für Voice over IP, c't 9/04, S. 96

[3] Andreas Eversberg, Karsten Violka, Tux vermittelt, Linux als Telefonanlage mit VoIP, c't 9/04, S.
100

[4] Michael Kunze, Guter Stern vom Amt, Asterisk: Linux als professionelle Telefonanlage, c't 12/05,
S. 116

[5] ISDN-Anbieter AVM, www.avm.de

[6] Asterisk-Projekt, www.asterisk.org

[7] CAPI-Channel-Treiber, www.junghanns.net/asterisk/page1.html

[8] Junghanns.net, www.junghanns.net/asterisk/page14.html

[9] Caiviar, www.caiviar.org

Soft-Link 0513216

Kasten 1


 file:///G|/Desktop/neu/ART.HTM (13 of 19)05.08.2005 13:39:34
 Praxis : Telefonvermittlung




Asterisk und Heft-DVD

Wer Asterisk mit der Suse-Distribution unserer Heft-DVD einrichten will, braucht neben den
Archiven asterisk und chan_capi von der DVD die "Compiler und Werkzeuge" (Auswahl
"Selektionen") sowie aus dem Internet die RPM-Pakete ncurses, ncurses-devel und das Archiv
OpenSSL 0.97 (siehe Soft-Link).

Die RPM-Pakete kann man per YaST2 installieren. Nach dem Entpacken richtet man für OpenSSL
zunächst die Pfadvariable mittels ./config ein und fährt dann wie üblich fort:

./config --prefix=/usr/local
make
make test
make install

Die weitere Installation verläuft wie ab Abschnitt "Einrichten der ISDN-Karte" geschildert.

Kasten 2




ISDN nachträglich

Die Kernel der meisten Linux-Distributionen bringen zumindest rudimentären CAPI-ISDN-Support
mit, aber manchen fehlen einige Bausteine, beispielsweise Debian. Will man solche Systeme für den
CAPI-Betrieb mit AVM Fritz!Cards komplettieren, holt man die Kernel-Quellen, spielt die .config-
Datei des aktuellen Kernels ein, überprüft die Konfiguration, packt das AVM-Paket aus, baut in den
AVM-Quellen die Verweise auf die Quellen des laufenden Kernels ein und übersetzt und installiert
den AVM-Treiber.

Bei Debian zum Beispiel sind die Pakete capisuite, libcapi20-dev, libcapi20-2, capiutils und
isdnactivecards erforderlich, ferner das passende Treiber-Archiv für den ISDN-Adapter [3]. Die
aktuelle Version fcpci-suse9.1-3.11-02.tar.gz ist für Kernel 2.6.x gedacht. Für ältere Kernel, etwa die
verbreitete Version 2.4.18, nimmt man fcpci-suse8.2-03.11.02.tar.gz. In beiden Archiven sind nicht
nur Quellen und Binärdateien für Suse, sondern auch für andere Distributionen enthalten.

In der Kernel-Konfiguration müssen folgende Einstellungen (am Beispiel des Kernel 2.6) aktiv sein:

CONFIG_EXPERIMENTAL=y

Im Bereich "ISDN subsystem" unter "Active ISDN" müssen folgende Einstellungen stehen:



 file:///G|/Desktop/neu/ART.HTM (14 of 19)05.08.2005 13:39:34
 Praxis : Telefonvermittlung

<M>    CAPI2.0            support
[*]    Verbose            reason code reporting (Kernel size +=7K)
[*]    CAPI2.0            Middleware support (EXPERIMENTAL)
<M>    CAPI2.0            /dev/capi support
[*]    CAPI2.0            filesystem support

Dann kopiert man aus /boot die .config-Datei des laufenden Kernels in die entpackten Quellen hinein

cp /boot/config-`uname -r` ./.config

und führt make oldconfig; make dep aus. In den entpackten Quellen des AVM-Archivs
müssen die Pfad-Angaben auf die Kernel-Quellen angepasst werden. Dann lassen sich die AVM-
Module mit dem von AVM empfohlenen Aufruf passend zum aktiven Kernel des Systems übersetzen
und installieren.

Anschließend kommentiert man in der Datei /etc/capi.conf alle Zeilen außer den unten angegebenen
aus - so ist das System nicht nur für Fritz!Cards mit PCI-Bus, sondern auch für ISA- und USB-
Adapter geeignet:

# card file proto io irq mem cardnr options
fcpci - - - - - -
# ...
# oder für die ISA-Version
fcclassic - - 0x300 5 - -

Um die Änderungen zu übernehmen, initialisiert man unter Debian das CAPI neu (das erspart den
Neustart des Systems) und kann dann mit der Installation von Asterisk fortfahren:

capiinit stop
capiinit start

Kasten 3




Vergleichsmatrix Verbindungstarife

                                      O2-direkt (Cent/          O2-rerouted (Cent/
Art des Gesprächs
                                      Min.)                     Min.)
Homezone Ort/Tag                      5                         3 + 1,5
Homezone Ort/Nacht                    3                         2+1
Homezone Fern/Tag                     7                         4 + 1,5
Homezone Fern/Nacht                   4                         2+1

 file:///G|/Desktop/neu/ART.HTM (15 of 19)05.08.2005 13:39:34
 Praxis : Telefonvermittlung


Festnetz Ort/Tag                      49                        4 + 1,5
Festnetz Ort/Nacht                    19                        2+1
Festnetz Fern/Tag                     49                        4 + 1,5
Festnetz Fern/Nacht                   19                        2+1
Mobilnetzintern                       19                        15 + 1,5
andere Mobilnetze/Tag                 59                        15 + 1,5
andere Mobilnetze/
                                      29                        15 + 1
Nacht
kein Gespräch                         0                         3

Die O2-rerouted-Tarife wurden zur Vereinfachung auf volle Cent aufgerundet. "Kein Gespräch"
bedeutet einen nicht zu Stande gekommenen Anruf, bei dem der Anrufer länger als eine Minute auf
eine Antwort des Gegenübers wartet. Die zusätzlichen 1 bis 1,5 Cent beziehen sich auf den
Gesprächsaufbau.

Die Kosten fallen niedriger aus, wenn man Pauschalangebote wie XXL nutzt. Dann entfallen die
Gebühren für die Anwahl des eigenen Mobiltelefons und für das Warten auf die Verbindung. Die
Angebote für Anrufe in andere Mobilfunknetze sind dabei jedoch nicht so attraktiv.

Kasten 4




Konfigurationsdateien

Konfigurationsdateien für Asterisk als ISDN- oder VoIP-Vermittlung für Handys

modules.conf:

load => chan_capi.so

Falls auf dem Rechner Advanced Linux Sound Architecture (ALSA) verwendet wird, muss man diese
Zeile einfügen:

noload => chan_oss.so

... und im Abschnitt [global]

chan_capi.so=yes

einsetzen. Die letzte Zeile der Datei modules.conf muss leer sein.


 file:///G|/Desktop/neu/ART.HTM (16 of 19)05.08.2005 13:39:34
Praxis : Telefonvermittlung


extensions.conf:

[general]
static=yes
writeprotect=no
[default]
include => capiin
[capiin]
exten => 12345/01799876543,1,Wait,1
exten => 12345/01799876543,2,AGI,callback.agi
exten => 12345/01799876543,3,Hangup
[capidialtone]
exten => s,1,Dial,CAPI/@12345:b
exten => s,2,Hangup
include => capiin

chan_capi-0.3.5/capi.conf für /etc/asterisk/:

[general]
nationalprefix=0
internationalprefix=00
rxgain=0.8
txgain=0.8
[interfaces]
msn=12345
incomingmsn=12345
controller=1
softdtmf=1
accountcode=
context=capiin
devices=2

callback.agi:

#!/usr/bin/php -q
<?php
ob_implicit_flush(true);
set_time_limit(0);
$err=fopen("php://stderr","w");
$in = fopen("php://stdin","r");
$out = fopen("php://stout","w");
echo("before loop");     /* falls Debug-Ausgaben gewünscht */
while (!feof($in)) {
echo("in loop");         /* falls Debug-Ausgaben gewünscht */
$temp = str_replace("\n","",fgets($in,4096));


file:///G|/Desktop/neu/ART.HTM (17 of 19)05.08.2005 13:39:34
 Praxis : Telefonvermittlung

$s = split(":",$temp);
$agi[str_replace("agi_","",$s[0])] = trim($s[1]);
if (($temp == "") || ($temp == "\n")) {
break;
}
}
$cf = fopen("/var/spool/asterisk/outgoing/cb".$agi["callerid"],"w
+");
fputs($cf,"Channel: CAPI/".$agi["extension"].":069123456\n");
fputs($cf,"Context: capidialtone\n");
fputs($cf,"Extension: s\n");
fputs($cf,"SetVar: CALLERIDNUM=".$agi["extension"]."\n");
fputs($cf,"MaxRetries: 2\n");
fputs($cf,"RetryTime: 10\n");
fclose($cf);
fclose($in);
fclode($out);
fclose($err);
?>

Konfigurationsdateien für VoIP:

sip.conf:

[general]
port=5060
externip=test.homelinux.org # bei DynDNS beantragte Domain
localnet=192.168.0.0/255.255.255.0
context=default
srvlookup=yes
disallow=all
allow=ulaw
allow=alaw
register => SIP-Rufnummer:passwort@sip.gmx.net/SIP-Rufnummer
[gmx]
context=dialout
type=friend
username=SIP-Rufnummer
secret=passwort
host=sip.gmx.net
fromuser=SIP-Rufnummer
fromdomain=sip.gmx.net
qualify=yes
disallow=all
allow=ulaw
allow=alaw

 file:///G|/Desktop/neu/ART.HTM (18 of 19)05.08.2005 13:39:34
Praxis : Telefonvermittlung

insecure=very
caninvite=no
canreinvite=no
nat=yes

rtp.conf:

rtpstart=30000
rtpend=40000

callFile:

Channel: SIP/0691234567@gmx
Context: dialout
Extension: s
SetVar: CALLERIDNUM=SIP-Rufnummer
MaxRetries: 3
RetryTime: 30
WaitTime: 30
Priority: 1

extensions.conf:

[general]
static=yes writeprotect=no
[default]
include => capiin
[capiin]
exten => 12345/0179987654,1,Wait,1
exten => 12345/0179987654,2,System(cp /etc/
asterisk/callFile /var/spool/asterisk/outgoing/)
exten => 12345/0179987654,3,Hangup
[dialout]
exten => s,1,Answer exten => s,2,Wait(1)
exten => s,3,DISA(no-password|dial_now)
exten => s,4,Wait(2) exten => s,5, Hangup
exten => s,102,Busy exten => h,1,Hangup
[dial_now]
exten => _.,1,SetCallerID(SIP-Rufnummer)
exten => _.,2,Dial(SIP/${EXTEN}@gmx,60,tr)
exten => _.,3,Congestion




file:///G|/Desktop/neu/ART.HTM (19 of 19)05.08.2005 13:39:34

				
DOCUMENT INFO
Shared By:
Tags:
Stats:
views:27
posted:8/4/2011
language:German
pages:19