ISDN unter Debian #
Immer wieder hört man von Problemen, ISDN unter Debian ans Laufen zu bekommen. Da ich diesen Vorwurf einerseits nicht so nachvollziehen kann, andererseits jedoch dennoch immer wieder bemerkenswerte Erlebnisse in diesem Zusammenhang hatte, habe ich diese Seite angefertigt. Sie basiert insbesondere auf den Erfahrungen, die wir bei KrefixLinux gewonnen haben.
Hier beschreibe ich, wie eine AVM-Karte mit CAPI installiert wird: DebianISDN/AvmCapi (SusanneWenz)
Hardware #
Wir haben hier eine alte Teles-ISDN-ISA-Karte benutzt, weil die gerade herumlag. Generell ist dazu zu sagen, dass ISA-Karten generell gegen die Genfer Konvention zur psychologischen Kriegsführung verstossen. Die meisten Probleme, von denen ich im Zusammenhang ISDN gehört/gelesen habe, hingen mit ISA-Karten zusammen.
Also: Wer eine ISA-Karte installieren will, kann das tun, sollte aber für die entstehenden Probleme nicht Debian oder Linux allgemein verantwortlich machen. ;-)
Kernel-Modul #
Natürlich muss das ISDN-Subsystem eingebunden werden, insbesondere der hisax-Treiber. Dieser Treiber deckt eigentlich die meisten gängigen ISDN-Karten ab. Zusätzlich muss noch "asynchrones ppp" einkompiliert werden - und zwar sowohl bei den Einstellungen für die ISDN-Treiber als auch bei den Netzwerk-Einstellungen für ppp.
Nun muss man herausfinden, welchen Typ die ISDN-Karte hat. Dies ist eigentlich der einzige Punkt, an dem man etwas nachdenken (oder probieren) muss. Hierbei hilft die Liste in den Kernel-Sourcen. Unsere Teles-Karte hat den Typ 3. Hat man eine ISA-Karte, muss natürlich noch I/O und IRQ angegeben werden. Bei uns half bei modconf die Parameter-Zeile:
modprobe hisax '''type=3 io=320 irq=12'''
Bei PCI-Karten sollte type=3 ausreichen. Der Treiber muss definitiv anzeigen, dass er eine Karte gefunden hat und welche IO/IRQ-Einstellungen diese hat. Wenn nur ein paar Zeilen "Layer xxx" erscheinen, hat der Treiber sich selber zwar initialisiert, aber die Karte nicht gefunden.
Debian-Pakete #
Die Pakete isdnutils und ipppd (Ersatz für pppd bei synchroner Übertragung) müssen installiert werden. Bei der Installation des ipppd-Paketes werden nun alle Fragen gestellt, die den Provider, Einwahlnummer, etc. betreffen. Danach lief dann auch schon alles.
Dialin Server #
Ok, wir können uns nun über ISDN ins Internet einwählen. Das war die Pflicht. Nun zur Kür: Wir wollen selbst einen Rechner als Dialin-Server konfigurieren.
Raw IP #
Im Prinzip könnte man das auch über ppp und ein Login machen. Aber es geht viel einfacher, wenn sich nur ein bestimmter (oder einige wenige) Partner einwählen dürfen. In diesem Fall kann auf das Handshake verzichtet werden. Beide Partner benutzen feste IP-Adressen und feste Routen.
Konfiguration #
Zunächst lege ich ein Interface "isdn0" (oder "isdn1", ...) an. Dazu gibt es bei Debian das Programm "isdnconfig". Im Menü wählen: "1 network devices" und dann ein "rawip interface" anlegen. Wie dort beschrieben muss anschließend die Datei "/etc/isdn/device.isdn0" editiert werden. Zunächst sind als "LOCALIP" und "REMOTEIP" zwei feste IP-Adressen für Server und Client einzutragen. Ich wähle zum Beispiel "192.168.7.1" und "192.168.7.2". Schwieriger wird es bei der Angabe der Telefonnummern. Die richtige Einstellung der Telefonnummern ist wichtig, denn die einzige Authentifizierung bei der Einwahl geschieht über die Caller-Id des Anrufers! Ob man führende Nullen und Vorwahlen angeben muss, scheint von Ort zu Ort verschieden zu sein. Bei mir funktioniert folgendes:
LOCALMSN=454545 # Telefonnummer des Clients ohne Vorwahl REMOTEMSN=12124545 # Telefonnummer des Servers mit Vorwahl ohne führende Null LEADINGZERO=0 # Führende Null
Die Zeile mit dem Workaround für dynamische IP-Adressen (ca. Zeile 108) kann auskommentiert werden.
Wichtig ist es die Kommentarzeichen vor der Zeile mit dem Befehl
isdnctrl addphone ${device} in $MSN
samt dem umgebenden if- und for-Statement zu entfernen. An dieser Stelle werden die Telefonnummern eingetragen, die meinen Dialin-Server anrufen dürfen!
Zum Schluss nicht vergessen am Anfang der Datei die Zeile "Warning! $0 not configured..." zu löschen.
An der Gegenstelle nimmt man die gleiche Konfiguration vor. IP-Adressen und Telefonnummern müssen natürlich getauscht werden.
Einen ersten Test kann man mit "ping 192.168.7.1" bzw. "ping 192.168.7.2" machen. Wenn keine Verbindung zustande kommt, weil die Gegenstelle den Anrufe nicht akzeptiert, hilft es ggf. in der "device.isdn0"-Datei vorübergehend den Befehl
isdnctrl secure ${device} on
durch "secure .. off" zu erstzen. Dann darf jeder anrufen! Führt dies zum Erfolg, dann war wohl die Telefonnummer nicht korrekt angegeben.
Besonderheiten #
synchron/asynchron #
Es gibt verschiedene Übertragungsprotokolle, die man bei ISDN nutzen kann. Insbesondere kann man die Daten asynchron oder synchron übertragen. Da bei normalen Modems immer mal die Übertragungsgeschwindigkeit schwanken kann, benutzen diese ausschliesslich asynchrone Übertragung. Wenn man sich nun jedoch bei ISDN auf die garantierten 64.000 Baud verlassen kann, kann man die Daten auch synchron übertragen (d.h. ohne Handshake etc.) und nutzt die Leitung dafür effektiver. Dazu benötigt man den Protokoll-Treiber für synchrones PPP, der im Kernel einkompiliert sein muss.
Generell kann man eine Verbindung mit pppd über das Device /dev/ttyI# aufbauen (asynchron, ergibt Device ppp0). AFAIK merken normale Provider-Gegenstellen das und machen das mit, allerdings geht ein bisschen Bandbreite für das Handshake flöten. Üblich ist daher, eine synchrone Verbindung über ipppd aufzubauen (synchron, ergibt Device ippp0).
Krefix-Linux #
Leider läuft dpkg-reconfigure nicht von der CD. Deshalb müssen wir Krefix auf einen Standard-Zugang einrichten, z.B. call by call bei freenet.de (und dann deaktivieren?). Wer dann einen anderen Provider einrichten will, muss per Editor die Dateien in /etc/isdn/ ändern. Das Programm isdnconfig (das auch von CD läuft) legt leider nur Template-Dateien dort an und trägt auch keine Provider-Daten ein.