Aus Linux-Magazin 05/2001

Telefonieren übers Intranet

Die Konfiguration von MS Netmeeting.

Es ist doch eigentlich unsinnig, je einen Kabelstrang fürs Netzwerk und einen fürs Telefon zu ziehen. Wer sich mal mit Protokoll H.323 beschäftigt hat, der weiß doch, warum auch ein Kabel reicht. Und wer nicht – liest einfach den folgenden Artikel.

Im Januar 2000 wurde die Version 0.2a1 des Programms isdn2h323 von der Firma Telos EDV Systementwicklung [1] veröffentlicht. Es handelt sich um ein ISDN-nach-H.323-Gateway unter der GPL.

H.323 ist ein ITU-Standard (International Telecommunication Union), der ein Protokoll zur Übertragung von Telefongesprächen über Netzwerke spezifiziert. Hierzu zählen zum Beispiel auch IP-basierte Netzwerke, die heute die Grundlage des Internet und der meisten Intranets bilden. Das Protokoll gibt keine Garantie für die maximale Laufzeit von Paketen.

Der bekannteste H.323-Client ist MS Netmeeting unter Windows, mit dem zwei Personen über ein IP-Netzwerk miteinander telefonieren können (siehe Kasten “Netmeeting”). Neben der reinen Sprachübertragung ist auch Videotelefonie möglich. Seit einiger Zeit gibt es neben den kommerziellen Implementierungen dieses Protokolls auch ein Open-Source-Projekt, das sich zum Ziel gesetzt hat, einen frei verfügbaren H.323-Stack in C++ zu implementieren: Das Ergebnis nennt sich OpenH323 [2].

Netmeeting

Auch das Programm MS Netmeeting, das den neueren Versionen von MS Windows beiliegt, verwendet das H.323-Protokoll für die Kommunikation zwischen den Teilnehmern. Um das Programm mit dem Gateway zusammen nutzen zu können, muss MS Netmeeting zuerst mit dem Menüpunkt Extras/Optionen… konfiguriert werden. Wichtig ist, dass unter Erweiterte Anrufoptionen Gateway beziehungsweise Gatekeeper vorgegeben werden. In der Abbildung ist diese Dialogbox zu sehen; als Gateway fungiert der Rechner mit dem Namen cicero.

Die Konfiguration von MS Netmeeting.

Die Konfiguration von MS Netmeeting.

Auf Basis dieses Stacks wurde von denselben Entwicklern der H.323-Client Ohphone implementiert. Dieser Client läuft sowohl unter Linux/ Unix wie auch unter Windows und bietet ungefähr die gleiche Funktionalität wie Netmeeting.

Ohphone

Der H.323-Client Ohphone hat ungefähr die gleiche Funktionalität wie MS Netmeeting. Allerdings läuft das Programm auch unter Linux [2].

Um den Client zu kompilieren, setzen Sie zuvor – wie beschrieben – die Umgebungsvariablen PWLIBDIR und OPENH323DIR. Dann wird das Programm so übersetzt:

tar xvzf ohphone_1.1pl1.tar.gz
cd ohphone
make opt

Das fertige Programm liegt im Unterverzeichnis obj_linux_x86_r/.

Wer mit Ohphone einen Teilnehmer im Telefonnetz erreichen will, ruft das Programm folgendermaßen auf:@Li:ohphone 4321@cicero

Ohphone geht dann davon aus, dass ein Gateway auf dem Rechner cicero installiert ist, und ruft auf diesem Wege die Telefonnummer 4321 an. Wenn im Netzwerk ein Gatekeeper installiert ist, bei dem sich das Gateway und der Client registriert haben, kann die Spezifikation des Gateway-Namens unterbleiben, da der Client das Gateway automatisch findet.

Soll Ohphone auf Anrufe warten, ruft man es einfach mit der Option -l auf. Eine bestehende H.323-Verbindung wird mit h beendet. Außerdem ist es möglich, DTMF-Töne durch Eingabe der Ziffern 0 bis 9 zu senden.

Wer sich die Mühe sparen möchte, zum Beispiel in einem Unternehmen für jeden Mitarbeiter eine Telefonleitung an den Arbeitsplatz zu verlegen, der kann stattdessen auf den heute meist sowieso vorhandenen Ethernet-Anschluss in Verbindung mit einem H.323-Client zurückgreifen. Der Mitarbeiter benötigt in diesem Fall auch keinen Telefonapparat mehr, sondern lediglich eine Soundkarte und ein Headset.

Ausstattung

Mit dieser Ausstattung ist es zwar möglich, übers Intranet mit den Kollegen zu telefonieren, die auch einen H.323-Client installiert haben. Es ist ebenfalls denkbar, andere Teilnehmer weltweit über das Internet per H.323 anzurufen. Diese Möglichkeit ist allerdings durch die geringe Bandbreite und die lange Laufzeit im Internet meist keine wirkliche Alternative zum normalen Telefon. Auch ist dabei zu bedenken, dass viele Gesprächspartner nicht per H.323 erreichbar sind, da sie keine Internet-Standleitung besitzen oder keinen entsprechenden Client installiert haben.

Gateway

Aus diesen Gründen hegen die meisten H.323-Benutzer sehr schnell den Wunsch, ein Gateway zum herkömmlichen Telefonnetz einzurichten. Es gibt im Internet bereits einige Firmen und Provider, die einen solchen Service gegen Gebühr anbieten. Allerdings löst dies das Problem der Bandbreite und Laufzeit nicht. Besser ist die Installation des Gateways im lokalen Intranet. Ein solches Gateway wird als spezieller Router von einigen Herstellern angeboten. Allerdings haben diese Geräte den Nachteil, dass sie relativ teuer und deshalb für Installationen in kleineren Unternehmen oder in privaten Haushalten nur wenig geeignet sind.

Abbildung 1: Aufbau des Gateways.

Abbildung 1: Aufbau des Gateways.

Daher wurde bei Telos ein Gateway für Linux entwickelt: isdn2h323. Es verwendet – wie Ohphone auch – den H.323-Stack OpenH323.

In Abbildung 1 ist der Aufbau des implementierten Gateways zu sehen. Es ist zum einen mit dem lokalen Intranet und zum anderen mit dem ISDN-S0-Bus verbunden. Für die Kommunikation mit dem ISDN-Netz sorgen die ttyI-Devices von Linux. Sie emulieren den AT-Befehlssatz eines externen Modems und bieten auch eine Schnittstelle an, um Audio-Daten über ISDN aufzunehmen und abzuspielen. Der H.323-Stack ist über ein beliebiges Netzwerk mit den H.323-Clients verbunden.

Möchte ein Anwender von seinem PC aus einen Teilnehmer im normalen Telefonnetz anrufen, baut er mit seinem Client eine H.323-Verbindung zum Gateway auf und teilt ihm die gewünschte Telefonnummer mit. Das Gateway baut daraufhin eine ISDN-Verbindung zu dem anderen Teilnehmer auf.

Rückruf

Meist möchte der Anwender nicht nur andere Teilnehmer anrufen, sondern auch selbst angerufen werden. Auch das ist mit Hilfe des Gateways möglich: Wie bei einer klassischen Telefonzentrale erhält jeder H.323-Benutzer eine eigene ISDN-Durchwahl. Sobald diese aus dem normalen Telefonnetz angerufen wird, versucht das Gateway, eine Verbindung zu dem passenden H.323-Benutzer aufzubauen.

Installation

Die aktuelle Version des Gateways kann von [3] als Source-Archiv und als RPM-Paket (für SuSE 7.0) bezogen werden. Neben dem eigentlichen Gateway werden noch die beiden Bibliotheken openh323 (1.1pl1) und pwlib (1.1pl19) benötigt. Beide können von der Homepage des Open-H323-Projekts als Source-Paket und von [3] als RPM-Paket bezogen werden. Es sollten auf keinen Fall die H.323-Pakete benutzt werden, die SuSE Linux 7.0 beiliegen, da sie fehlerhaft übersetzt sind.

Als Erstes müssen Sie die pwlib-Bibliothek auspacken, in das entstandene Verzeichnis wechseln und übersetzen:

tar xvfz pwlib_min_1.1pl19.tar.gz
cd pwlib
export PWLIBDIR=`pwd`
make opt

Der letzte Schritt schlägt fehl, wenn Ihre bison-Installation defekt ist. Es muss dann in der Datei /usr/share/ bison.simple der Abschnitt

/* Prevent warning if -Wstrict-prototypes. */
#ifdef __GNUC__
int yyparse (void);
#endif

in die Form

/* Prevent warning if -Wstrict-prototypes. */
#ifdef __GNUC__
#ifndef YYPARSE_PARAM
int yyparse (void);
#endif
#endif

geändert werden. Danach sollte sich die Bibliothek problemlos ins Unterverzeichnis lib/ übersetzen lassen. Von dort kann sie nach /usr/local/lib kopiert werden:

cp lib/libpt_linux_x86_r.so.1.1.19 /usr/local/lib
ldconfig

Als Nächstes wird die openh323-Bibliothek erzeugt. Sie benötigt einige Dateien aus dem Verzeichnis der pwlib. Es empfiehlt sich also, dieses Verzeichnis erst nach dem Kompilieren zu löschen.

cd ..
tar xvfz openh323_1.1pl1.tar.gz
cd openh323
export OPENH323DIR=`pwd`
make opt

Das kann – je nach Leistungsfähigkeit des Rechners – einige Zeit dauern. Auch hier liegt im Unterverzeichnis lib/ die fertige Bibliothek, die im Systemverzeichnis installiert werden muss:

cp lib/libh323_linux_x86_r.so.1.1.1 /usr/local/lib
ldconfig

Nachdem die beiden Bibliotheken jetzt in übersetzter Form vorliegen, wird das eigentliche Gateway entpackt und kompiliert:

cd ..
tar xvfz isdn2h323_0.2a1-source.tar.gz
cd isdn2h323-0.2a1

Dann passen Sie das Makefile und die Daten config.h an die eigene Konfiguration an. In config.h muss eigentlich nur die Variable CONFIG_FILE gesetzt werden. Die beiden ersten Variablen im Makefile legen fest, wo sich die Header-Files der pwlib und der openh323-Bibliotheken befinden. Diese Header-Files sind Bestandteil der Sourcen dieser beiden Bibliotheken und befinden sich jeweils im Unterverzeichnis include/.

Dann können Sie die Übersetzung auf gewohnte Weise starten mit:

make

Das fertige Programm kopieren Sie nach der Übersetzung zum Beispiel nach /usr/local/sbin:

cp isdn2h323 /usr/local/sbin

Konfiguration

Das Gateway konfigurieren Sie jetzt passend für die eigenen Rechner. Das geschieht durch die Datei isdn2h323 .config, die an jene Stelle kopiert werden muss, die mit der Variablen CONFIG_FILE vor dem Kompilieren festgelegt worden ist. Die Konfigurationsdatei hat folgendes Format:

<schlüsselwort>=<wert>

Das erste Schlüsselwort ist device. Mit ihm werden die ISDN-ttyI-Devices benannt, die vom Gateway für die Kommunikation mit der ISDN-Karte verwendet werden sollen. In der Regel entspricht die Anzahl der Devices der Anzahl der ISDN-B-Kanäle, die vom Gateway maximal verwendet werden. Sollen Anrufe ein und aus gehen, benötigt das Gateway mindestens zwei Devices. Üblicherweise sieht die Konfiguration so aus:

device=/dev/ttyI0
device=/dev/ttyI1

Danach muss noch mit default_msn die ISDN-Rufnummer (MSN) festgelegt werden, die vom Gateway standardmäßig für eingehende und für ausgehende Gespräche benutzt werden soll. Denken Sie daran, nur Telefonnummern zu verwenden, die Ihnen von der Telekom offiziell zugewiesen worden sind.

VoIP in Appliances

Wer die Installation und Konfiguration zu kompliziert findet, kann auch auf den Server Ben Hur von Pyramid (http://www.pyramid.de) zurückgreifen. Nach Aussage der Herstellerfirma ist er der erste Kommunikationsserver, der Voice-over-IP (VoIP) für ISDN anbietet.

Auch für die Client-Seite gibt es Alternativen zu Ohphone und Netmeeting: Das IP-Telefon der Firma Snom (http://www.snom.de) kann direkt ans Netzwerk angestöpselt werden. Es unterstützt die gängigen Kompressionsstandards und läuft natürlich mit embedded Linux.

Rauschfilter

Falls die H.323-Clients nur über minderwertige Headsets verfügen, ist es sinnvoll, mit use_agc sowie mit use_echo_comp die Automatic Gain Control (AGC) beziehungsweise die Echo-Kompensation einzuschalten. Mit der AGC versucht das Gateway, automatisch die Lautstärke so anzupassen, dass sich die Gesprächsteilnehmer gut verständigen können. Die zweite Funktion versucht das Echo, das bei Headsets entstehen kann, zu reduzieren. Beide Funktionen sollten Sie nur dann benutzen, wenn es wirklich Probleme gibt, der Standard ist:

use_agc=no
use_echo_comp=no

Wie normale H.323-Benutzer hat das Gateway einen H.323-Namen, mit dem es sich bei anderen H.323-Benutzern meldet. Er wird mit dem Schlüsselwort gateway_name gesetzt:

gateway_name=ISDN gateway

Der H.323-Standard sieht verschiedene Audio-Codecs vor, die die Gespräche kodieren, bevor sie über das IP-Netzwerk übertragen werden. Das Gateway unterstützt drei Codecs: ALaw, muLaw und GSM. Die ersten beiden benötigen eine recht große Bandbreite von 64 KBit pro Sekunde, bieten aber daher auch eine für Telefongespräche sehr gute Audio-Qualität (8 Bit nicht linear, 8 kHz). GSM kommt mit einer deutlich niedrigeren Bandbreite von etwa 13 KBit/s aus. Im lokalen Netzwerk empfiehlt sich vor allem die Verwendung von ALaw und muLaw, da hier die benötigte Bandbreite kein Problem sein sollte.

Komprimierung

Mit dem Schlüsselwort use_law_ codec werden die Codecs ALaw und muLaw und mit use_gsm_codec der GSM-Codec eingeschaltet, und zwar gleichzeitig:

use_law_codec=yes
use_gsm_codec=yes

Der Client und das Gateway handeln den für beide besten Codec aus. Nur wenn sie eine Übereinstimmung finden, kommt die Verbindung zustande.

Abbildung 2: Das Hauptfenster von MS Netmeeting.

Abbildung 2: Das Hauptfenster von MS Netmeeting.

Der H.323-Standard kennt neben Clients und Gateways auch so genannte Gatekeeper. Deren Funktion lässt sich gut mit jener von Nameservern in IP-Netzwerken vergleichen. Jeder H.323-Client kann sich bei einem Gatekeeper mit seinem Benutzernamen registrieren. Möchte ein Benutzer einen anderen erreichen, übermittelt er dem Gatekeeper den Namen, der ihm im Gegenzug verrät, wo der Benutzer zu finden ist.

Das Gateway sucht mit dem Schlüsselwort gatekeeper automatisch nach einem Gatekeeper (Wert: automatic) im lokalen Netz. Es ist auch möglich, den Gatekeeper statisch über seinen DNS-Namen vorzugeben:

gatekeeper=localhost

Schließlich kann der Gatekeeper auch ganz abgeschaltet werden ( none).

Zuständigkeiten

Im Zusammenhang mit der Gatekeeper-Unterstützung steht die Option prefix, die mehrfach in der Konfigurationsdatei vorkommen darf. Sie legt die Zuständigkeit für Telefonnummernbereiche des Gateways fest. Die Bereiche werden vom Gateway beim Gatekeeper registriert:

prefix=0049
prefix=040

Hier ist es denkbar, dass ein Unternehmen zwei Gateways betreibt, wobei das erste in Deutschland steht und als Prefix 0049 gesetzt hat und ein zweites in den USA mit 001 als Prefix registriert ist. Teilt nun ein H.323-Benutzer in Deutschland dem Gatekeeper in Amerika mit, dass er die Nummer 0049123456789 anrufen möchte, wird ihm geantwortet, dass er doch bitte das deutschen Gateway benutzen soll. Der Gatekeeper kann also über die registrierten Telefonnummernbereiche das jeweils beste Gateway ermitteln.

Least Cost Router

Der Least Cost Router (LCR) Isdnrate ist Bestandteil von Isdn4linux. Damit der LCR korrekte Daten liefert, ist es wichtig, dass das ISDN-System korrekt konfiguriert ist. Vor allem muss in /etc/isdn/isdn.conf unter AREACODE die eigene Vorwahl eingetragen sein. Ob der LCR korrekt konfiguriert ist, lässt sich feststellen:

isdnrate -b 0 -H 04181 
Eine 153 Sekunden lange Verbindung von +49 40/ Hamburg 
nach +49 4181/ Buchholz kostet am Mon Jan 22 10:18:46 2001

Hierbei sollte statt Hamburg der Ort angezeigt werden, in dem sich das Gateway befindet. Ist der LCR richtig konfiguriert, kann er als Daemon gestartet werden:

isdnrate -D2

Wenn der Daemon korrekt läuft, funktioniert folgender Befehl ohne Probleme:

isdnrate -C -b 1 04181 01013_1:Tele 2 Preselection   DEM    0.153

Sicherheit

Wichtig ist das Thema Sicherheit, schließlich kostet eine ISDN-Verbindung Geld und man möchte natürlich nicht, dass ein unbekannter Benutzer über das eigene Gateway irgendwelche 0190er Nummern anrufen kann. Die Option dialout_ip definiert deshalb die IP-Nummern der Rechner, die das Gateway benutzen dürfen:

dialout_ip=192.168.1.
dialout_ip=192.168.2.129

Das Beispiel erlaubt allen Rechnern aus dem Netzwerk 192.168.1.x und dem Rechner 192.168.2.129 Teilnehmer im Telefonnetz anzurufen. Mit admin setzen Sie die E-Mail-Adresse des Administrators, der für das Gateway zuständig ist.

Das Gateway erzeugt automatisch zwei HTML-Dateien. In der Status-Datei werden zum einen die Konfiguration des Gateways und der Zustand der ISDN-Leitungen angezeigt. Zweitens gibt es eine HTML-Datei, in der ein Telefonbuch mit allen für H.323-Benutzer registrierten ISDN-Rufnummern abgelegt ist. Die Namen der Dateien werden mit den Optionen status_filename und directory_filename bestimmt. Wer die Dateien nicht erzeugen lassen will, kann die Optionen einfach weglassen.

Um bei ISDN-Verbindungen Kosten zu sparen, verfügt das Gateway über eine Schnittstelle zu dem Least Cost Router Isdnrate [4], der den jeweils günstigsten Provider für eine Vorwahl ermittelt (siehe Kasten “Least Cost Router”). Die Kommunikation mit Isdnrate erfolgt über ein Socket, dessen Name mit der Option lcr_isdnrate gesetzt werden kann:

lcr_isdnrate=/tmp/isdnrate

Befindet sich das Gateway nicht direkt am ISDN-Netz der Telekom, sondern innerhalb einer Telefonanlage, kann mit der Option lcr_pbx_prefix die Vorwahl gesetzt werden, die ein Benutzer wählen muss, um ein Amt zu erhalten. Es ist wichtig, diese Option bei einer Telefonanlage korrekt zu setzen, da ansonsten lokale Gespräche eventuell ins Telekom-Netz geleitet werden.

Durchwahl

Sie können jedem H.323-Benutzer eine eigene ISDN-Durchwahl zuweisen. Ruft ein Teilnehmer aus dem Telefonnetz diese Nummer an, versucht das Gateway eine Verbindung zu dem H.323-Benutzer aufzubauen. Diese Zuordnung erfolgt über die Routing-Tabelle. Jeder Eintrag beginnt mit dem Schlüsselwort number, das die ISDN-Durchwahl definiert.

Dieser Durchwahl können anschließend mit Hilfe der beiden Schlüsselwörter user und gateway ein H.323-Benutzer und das H.323-Gateway zugeordnet werden. Die Spezifikation des Gateways ist dabei optional:

number=444
user=mbudde
gateway=telos

number=445
user=nick

In diesem Beispiel werden zwei Durchwahlen definiert. Die Durchwahl 444 erhält der Benutzer mbudde zugewiesen, der über das Gateway telos zu erreichen ist. Der Benutzer nick ist unter der Durchwahl 445 zu erreichen.

Die Nummern werden auch bei den ausgehenden Gesprächen der entsprechenden Benutzer als MSN gesetzt, so dass der angerufene Teilnehmer im normalen Telefonnetz die entsprechende Nummer auf dem Display seines Telefons sieht.

Test des Gateways

Das Gateway ist nun vollständig konfiguriert und startet mit:

isdn2h323

In der /var/log/messages gibt das Gateway einige Meldungen aus. Sollte es sich nach dem Start gleich wieder beenden, dann gibt die genannte Logdatei genauere Auskunft.

Eine Ursache für Probleme kann zum Beispiel sein, dass vergessen wurde, vor dem Start das ISDN-System zu konfigurieren. Das lässt sich aber mit lsmod leicht feststellen:

Module Size Used by
...
hisax 483760 1 
isdn 117932 2 [hisax]
slhc 4440 0 [isdn]
...

Sobald das Gateway läuft, werden zum Testen noch ein Client und ein Telefon benötigt. Als Client ist beispielsweise MS Netmeeting geeignet. Der Linux-Client Ohphone hat leider Probleme bei der Übertragung der Audio-Signale. MS Netmeeting muss – wie in Kasten “Netmeeting” beschrieben – konfiguriert sein.

Sie geben als angerufener H.323-Benutzer im Hauptfenster einfach die gewünschte Telefonnummer ein. Das Gateway versucht daraufhin, diesen Teilnehmer zu erreichen und baut eine H.323-Verbindung auf.

Auch die Gegenrichtung sollten Sie testen. Rufen Sie mit einem Telefon einfach die Nummer an, die Sie in der Routing-Tabelle für den H.323-Benutzer vergeben haben. Der H.323-Client sollte dann ein eingehendes Gespräch anzeigen.

Wenn Sie es bis hierher geschafft haben: herzlichen Glückwunsch zu Ihrem persönlichen ISDN-H.323-Gateway! Wenn Probleme oder Fragen auftauchen, können Sie Mitglied der Isdn2h323-Mailingliste werden beziehungsweise deren Archiv von alten Artikeln lesen [5]. ( tfr)

Infos

[1] http://www.telos.de/

[2] http://www.openh323.org

[3] http://www.telos.de/linux/H323/

[4] ftp://ftp.isdn4linux.de/pub/isdn4linux/utils

[5] http://listserv.telos.de/cgi/listinfo/isdn2h323

[6] http://www.opengatekeeper.org/

Der Autor

Dipl.-Ing. Marco Budde ist Herausgeber der deutschen Linux-HOWTOs und arbeitet für die Telos EDV Systementwicklung in Hamburg.

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben