Zum Inhalt springen

Im Datennetz telefonieren

Workshop: Linux als VoIP-Server – Asterisk vermittelt zwischen ISDN und Internet. Der Anwender kommuniziert per IP-Telefon innerhalb des LAN. Ausgehende Anrufe routet Asterisk an einen VoIP-Provider oder ins ISDN.

Autor: Redaktion connect-professional • 27.9.2007 • ca. 7:25 Min

Voice-over-IP schickt sich an, die herkömmliche Telefonie in der Versenkung verschwinden zu lassen.Unternehmen drücken mit VoIP nicht nur Gesprächskosten. Auch die lokale Infrastruktur lässt sich besser ausnutzen. Wer die PBX-Software Asterisk als Vermittlungsstelle zwischen VoIP und ISDN einsetzt, spart sich die ISDN-Verkabelung. Statt dessen reist die Sprache eingebettet in IP-Paketen durchs LAN. Der Verwalter muss sich nur noch um die Ethernet-Verkabelung kümmern und ISDN Schritt für Schritt einstampfen. Asterisk eignet sich zwar auch für große Unternehmen. Hauptsächlich setzen jedoch kleine Firmen auf die Open-Source-Vermittlungsanlage. Sie besitzen häufig genug brach liegende Bandbreite im LAN, um Sprache über IP zu transportieren.

Ein Gespräch belegt rund 80 KBit/s pro Richtung, was zudem eine entsprechend breite Internetanbindung erfordert. Während Ich- AGs mit einem 786/128-KBit/s-ADSL-Anschluss gerade hinkommen, reicht eine so schmalbrüstige Anbindung bereits für eine 5-Mann-Firma nicht mehr.Bevor sich VoIP im Unternehmens- LAN etablieren lässt, muss der Verwalter einen passenden Internet-Zugang schaffen. Kleine Firmen sollten mindestens eine symmetrische 2- MBit/s-Anbindung wie SDSL oder Frame-Relay besitzen. Eine neue Technologie wie VoIP einzuführen geht mit dem Begriff der sanften Migration Hand in Hand. Zuerst sollen nur wenige ausgewählte Nutzer mit VoIP telefonieren und dabei das ISDN-Telefon behalten.Asterisk kümmert sich um die Vermittlung ins Internet sowie Fest- oder Mobilfunknetz. Zudem routet der Server eingehende Anrufe zu den entsprechenden Nebenstellen. Sobald die Konfiguration funktioniert, lassen sich alle anderen Mitarbeiter ebenfalls mit VoIP-Zugang versorgen.

Konfigurationsdateien sichten

Asterisk benutzt mehr als 20 Konfigurationsdateien, die sich in »/etc/asterisk« aufhalten. Die meisten sind für spezielle Einstellungen vorgesehen. Für eine Basiskonfiguration bearbeitet der Verwalter vier Dateien. In »sip.conf« tragen Sie die Zugangsdaten sowie die SIP-Telefone ein. In »modem.conf« hält sich die Konfiguration der ISDN-Karte auf.Wie Asterisk mit ein- und ausgehenden Anrufen verfahren soll, regeln Sie in »extensions.conf«. Für Verteilerlisten ist »queues.conf« gedacht. Die Datei »sip.conf« nimmt die Grundkonfiguration auf. Darin trägt der Administrator die Zugangsdaten des SIP-Providers ein und macht Angaben zum lokalen Netzwerk. Die originale »sip.conf« ist voll von Beispielen zu jeder einzelnen Option. Die wichtigsten für eine einfache Konfiguration zeigt das Listing »SIP-Provider eintragen«. Die Konfiguration leitet »[general] « ein. Passen Sie darin die Adresse des lokalen Netzwerks (»localnet«) sowie der Netzmaske (»localmask«) an. Das Schlüsselwort »register« dient zur Übergabe der Accountdaten des SIP-Providers.Am Ende der Zeile vergeben Sie ein Alias wie »providerconf« für den Zugang.

Dann brauchen Sie dieses nicht mehr komplett einzutragen,wenn es an anderer Stelle benötigt wird.

SIP-Provider eintragen
[general]
port=5060
;Für dynamische Adresszuweisung
bindaddr=0.0.0.0
;Asterisk steht vor der NAT-Firewall
nat=no
;Sprache auf Deutsch umstellen
language=de
externip=100.101.102.103
localnet=192.168.0.0
localmask=255.255.255.0
context=incoming
;DNS für ausgehende Anrufe nutzen
srvlookup=yes
; Codecs einstellen
disallow=all
; Für USA-Gespräche (G.711)
allow=ulaw
; Für EU-Gespräche (G.711)
allow=alaw
;Account des SIP-Providers und Alias
register => benutzer:passwort@host.provider.com:5060/providerconf

Nun ist in »sip.conf« der Kontext für ausgehende Anrufe an der Reihe.Hier trägt der Administrator jeden Benutzer ein und ordnet diesem ein IP-Telefon zu (siehe Listing »IP-Telefone eintragen «). Ein frei wählbares Alias leitet die Konfiguration ein. Das Beispiel zeigt die Einstellungen für das Telefon des Lageristen. Die Option »type=peer« gestattet nur Anrufe aus dem lokalen Netz nach draußen.Wichtig ist »dtmfmode«. Damit bestimmt der Verwalter, dass Tonwahlsteuerung nach RFC2833 (Tastentöne) benutzt werden. Dies dient beispielsweise zur Abfrage einer Mailbox. Das Telefon im Lager besitzt eine statische IP-Adresse, die Sie explizit angeben. Für mobile Mitarbeiter, die sich beispielsweise per WLAN Zugang zum Internet verschaffen, ersetzen Sie die Adresse durch die Option »dynamic«.Mit »canreinvite= no« verhindert der Verwalter Probleme mit NAT und fehlerhafter Hardware, die das »reinvite«-Kommando von SIP nicht korrekt umsetzen.

Die Konfiguration legen Sie für jeden Benutzer respektive jedes Telefon an.Anschließend geht es in der Datei »extensions.conf« weiter.

IP-Telefone eintragen
; Kontext für ausgehende Anrufe
[lager]
type=peer
; Benutzername des SIP-Accounts
username=Benutzername
; Benutzername des SIP-Accounts
fromuser=Benutzername
; Passwort des SIP-Accounts
secret=Passwort
; Domain des SIP-Providers
host=
provider.com
; Domain des SIP-Providers
fromdomain=provider.com
; Das Telefon benutzt den Startkontext in
»extensions.conf«
context=default
; Hinter einem NAT-Gateway verneinen
canreinvite=no
; NAT deaktivieren
nat=no
; Kontext für eingehende Anrufe
[incoming]
type=peer
fromdomain=provider.com
host=provider.com
;
; Nebenstelle 101 definieren
[101]
type=friend
host=dynamic
username=101
secret=passwort
context=tel101
insecure=very
caninvite=no
canreinvite=no
allow=ulaw
allow=alaw
nat=yes
; Nebenstelle 102 nach dem gleichen Muster definieren.

[102]

Anrufe vermitteln

Der Verwalter muss festlegen, wie Asterisk mit ein- oder ausgehenden Anrufen umgehen soll. Eingehende Anrufe soll die Vermittlungsstelle an die entsprechenden lokalen Telefone weiterleiten. Ausgehende Anrufe stellt Asterisk dem SIPProvider zu, der sich dann um alles Weitere kümmert. Die Einstellungen nimmt die Datei »extensions.conf« auf (siehe Listing »Vermittlung konfigurieren«). Die Datei beginnt mit dem Kontext »[general] «, unter dem Sie die Standardeinstellungen »static« und »writeprotect« stehen lassen. Die Behandlung der eingehenden Anrufe legen Sie im Kontext »[incoming]« fest. Ausgehende Anrufe behandelt der Kontext »[default]«. Bei beiden kommt das Alias des SIP-Accounts wieder ins Spiel.

Jede Zeile der Vermittlungsregeln leitet »exten =>« ein. Jede Extension erwartet drei Parameter: Die kompletten Zugangsdaten respektive das Alias (»providerconf«), die Priorität innerhalb des Kontexts sowie zum Schluss eine Aktion (»Hangup«) oder den Verweis zu einer Anwendung. Der String »setcallerid(${CALLERIDNUM})« meldet die Telefonnummer des Anrufers an das interne IP-Telefon.Anschließend leitet Asterisk den Anruf über SIP an die Nebenstelle 101 (»Dial( SIP/101«) und lässt es 30 Sekunden lang (»30«) klingeln (»r«). Meldet sich niemand, hängt die Software in der letzten Zeile auf. Die Basiskonfiguration ist damit abgeschlossen. Das System lässt sich nun für ein- und ausgehende Anrufe über den SIP-Provider nutzen.

Doch Asterisk beherrscht noch deutlich mehr, beispielsweise ausgehende Anrufe an eine ISDNSchnittstelle zu übergeben.

Vermittlung konfigurieren
[general]
static=yes
writeprotect=no
[incoming]
; Der incoming-Kontext regelt eingehende Anrufe
; Für jede interne Nebenstelle ein Block
; Für Nebenstelle 101
exten => providerconf,1,setcallerid($
{CALLERIDNUM})
exten => providerconf,2,Dial(SIP/101,30,r)
exten => providerconf,3,Hangup
; Für Nebenstelle 102
exten => providerconf,1,setcallerid($
{CALLERIDNUM})
exten => providerconf,2,Dial(SIP/102,30,r)
exten => providerconf,3,Hangup
[default]
; Der »default«-Kontext regelt ausgehende Anrufe
; Für jede interne Nebenstelle ein Block
; Für Nebenstelle 101
[tel101]
exten => _.,1,Dial(SIP/$
{EXTEN}@providerconf,30,r)
exten => _.,2,Hangup
; Für Nebenstelle 102
[tel102]
exten => _.,1,Dial(SIP/$
{EXTEN}@providerconf,30,r)
exten => _.,2,Hangup

ISDN als Fallback

Das Hauptargument gegen VoIP ist die mangelnde Verfügbarkeit der Internetverbindung. Fällt diese aus, ist das Unternehmen telefonisch nicht mehr zu erreichen. Daher sollte mindestens eine ISDN-Karte im Asterisk-Server vorhanden sein, damit die Firma sowohl erreichbar, als auch der Weg nach draußen frei bleibt.Die Karte lässt sich in der Datei »modem.conf« konfigurieren und in »extensions.conf« mit einer Vorwahl ausstatten. Diese wählen die Anwender,wenn sie per ISDN telefonieren müssen.

Als ISDN-Karte eignet sich eine handelsüblich passive Karte,wie sie diverse Hersteller in Deutschland anbieten. Der Workshop benutzt einen Adapter, den die Treibersammlung »ISDN4Linux« unterstützt. Die Konfiguration nimmt »/etc/asterisk/ modem.conf« auf (siehe Listing »ISDN in »modem.conf« einbinden«).

ISDN in »modem.conf« einbinden
[interfaces]
; Kontext für »extensions.conf« setzen
context=remote
; ISDN4Linux-Treiber
driver=i4l
; Kartentyp selbst herausfinden
type=autodetect
; Tonwahl benutzen
dialtype=tone
; Erst einmal klingeln, dann die Route setzen
mode=ring
group=1
; MSN für eingehende Anrufe
incomingmsn=1234
; MSN für ausgehende Anrufe
msn=5678
; ISDN-Schnittstellen zuweisen (2 Kanäle)
device => /dev/ttyI0

device => /dev/ttyI1

Um SIP und ISDN auseinander zu halten, vergibt der Verwalter je eine Vorwahl. Das Prefix geben die Benutzer vor der eigentlichen Telefonnummer ein. Für Verbindungen über ISDN sollen die Benutzer die 99 vorwählen. Bei 88 geht der Anruf über den SIP-Provider hinaus. Als Kontext benutzen Sie wieder »[default]«,wie das Listing »Vorwahl für ISDN und SIP« zeigt.

Vorwahl für ISDN und SIP
; ISDN und SIP bekommen intern eine Vorwahl zugewiesen
; Default-Kontext
[default]
; ISDN an Vorwahl 99
; Anruf geht über ISDN-Kanal raus;
; EXTEN:1 entfernt die erste Ziffer von Prefix + Nummer
exten => _99.,1,Dial(Modem/ttyI0:${EXTEN:1},30,r)
exten => _99.,2,Playback(invalid)
exten => _99.,3,Hangup
; SIP an Vorwahl 88
exten => _88.,1,Dial(SIP/${EXTEN:0}@providerconf,30,r)
exten => _88.,2,Playback(invalid)

exten => _88.,3,Hangup

Warteschlange einstellen

In einem Unternehmen sollten Anrufer in eine Warteschleife kommen, falls sich nicht sofort ein Ansprechpartner meldet.Handelt es sich um eine Service- Nummer, hinter der mehrere Mitarbeiter zu erreichen sind, soll Asterisk eine Verteilerliste überwachen. Diese klingelt der Server in bestimmten Abständen durch, um eine freie Leitung zu finden. Dass der Anrufer in eine Warteschleife kommt,stellen Sie in »extensions.conf« mit der Aktion »Queue« ein:
exten => s,3,Queue(warteschleife)
Was genau in »warteschleife« passiert,kommt in die Datei »queues.conf«.Hier geben Sie beispielsweise eine Datei an, die Asterisk als Hintergrundmusik spielen soll.Hier lässt sich jedes »GEMA«-freie Stück im GSM-Format kostenlos verwenden. Deutsche Sounddateien, die gesprochene Anweisungen enthalten, finden Sie unter anderem bei der IT-Abteilung der Stadt Pforzheim auf http://www.pforzheim.de/asterisk.

Zum Schluss trägt der Verwalter noch alle internen Ansprechpartner ein, deren Apparate Asterisk nacheinander abklingeln soll (»strategy= ringall«):
member => SIP/101
Über den Timeout-Wert (»timeout=10«) lässt sich eine Zeitspanne festlegen, nach der sich ein Anrufer in die Warteschlange einreiht.Wie viele Anrufer sich höchstens in der Queue befin-den dürfen,bestimmt der Administrator mit der Option »maxlen=5«.

Vor VoIP ist nach ISDN

Niemand sollte alles schlucken, was ihm die Marketingstrategen servieren.VoIP senke die Kosten, da für Gespräche innerhalb des Netzes eines Providers keine Gebühren anfallen.Hier haben die Experten recht.Was sie hingegen unter den Tisch fallen lassen, sind die erheblichen Kosten,bis das LAN fit für die IP-Telefonie ist. Nach wie vor beherrscht Ethernet die lokalen Netzwerke. Meist sind Desktops mit 10/100- MBit/s angebunden. Im Backbone flitzen die Daten schon mit 1 GBit/s. Da sich ein Gespräch gleich 160 KBit/s schnappt, wird es bei ein paar parallel geführten Telefonaten gleich unerwartet eng in dem Kabel. Wer mit solchen Bandbreitenproblemen kämpft, hat zwei Möglichkeiten: 1 GBit/s bis zum Desktop und damit die Verkabelung auswechseln, oder den Verkehr nach Wichtigkeit zu markieren (Priorisierung).

Immerhin lässt sich VoIP dank Asterisk einfach testen.Kleine Unternehmen dürften sofort vom Spareffekt profitieren, da sie das Ethernet- LAN nur selten aufrüsten müssen. Über spezielle ISDN-Karten mit HFC-Chip schließt der Verwalter das Software-PBX an die ISDN-TK-Anlage an und kann VoIP somit in Ruhe im LAN etablieren.

jr@networkcomputing.de