= 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|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.

--PeterHormanns

== 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.

[{Tag Debian Netzwerk ServerDienste}]