
Die Installation von ISDN gilt immer als schwierig. Das ist so nicht ganz korrekt. Es gibt einen recht gut ausgetretenen Weg um ans Ziel zu kommen. Wenn sie schon Grundkenntnisse über ISDN besitzen, dann fällt ihnen die Installation leichter, aber auch ohne große Kenntnisse ist es sicher auf Anhieb zu schaffen. Diese Anleitung soll nicht die letzten Winkel der ISDN Konfiguration erklären, sondern die Grundlagen vermitteln. Tipps für weiterführende Dokumentation finden sie unter dem Punkt Anmerkungen.
Für die Installation lege ich ein Debian potato System zugrunde, das über einen 2.2er Kernel verfügt.
Testsystem:
P2 233 MHz
4 GB UW SCSI
128 MB RAM
AVM A1 (Fritz!Card Classic)
Debian GNU/Linux 2.2 (potato)
selbst compilierter Kernel 2.2.16
Meine Installation ist schon etwas älter und basiert darum noch auf dem 2.2.16. Der 2.2.17 ist auf jeden Fall zu empfehlen.
Hardwareanforderungen:
Eine ISDN Karte. Hier haben sie die Auswahl zwischen Passiv und Aktiv. Aktive Karten lasse ich hier einmal außen vor, da diese Karten sehr teuer sind und wohl nicht so häufig eingesetzt werden. ( Ich besitze auch keine ;-) )
Die Installation geht den Weg über eine AVM FritzCard (Typ A1 bzw Classic). Allerdings kann man auch jede andere Karte zum laufen bringen. Da die Installation zu 90% identisch ist.
Es werden viele weitere Karten unterstützt. Sehen sie dazu einfach in ihre Kernel Doku oder in das Kernel Setup. Weiter unten habe ich auch die am häufigsten Verwendeten Karten aufgelistet.
Grundlagen:
Die Unterstützung von ISDN wird durch ISDN4Linux realisiert.
Es werden wirklich viele Karten unterstützt, da eigentlich alle bekannten Karten (Teles, FritzCard, Elsa ...) mit dem Chipsatz von Siemens arbeiten.
ISDN4Linux und ein HiSax Modul benötigen sie, um ihren Rechner mit ISDN ins Netz zu bekommen.
Mit Standardkernel (einfacher mit PCI Karten):
Bei PCI Karten empfiehlt sich auf jeden Fall der einfache Weg über die Module des Kernels. Beim Debian Standardkernel sind bereits alle Module enthalten. Laden sie diese mit modconf nach. Falls sie kein modconf finden auf ihrem System dann installieren sie es per apt-get install modconf
Sie benötigen: PPP Module, HiSax Modul (Kartentyp muss per Parameter übergeben werden)
Vollständige Doku zu HiSax und Modulen finden sie unter:
Hier eine Liste der gängigsten Karten, deren Typennummern und erforderlichen Parametern:
Kernel selbst compilieren (empfohlen bei ISA Karten):Typ: Benötige Parameter: 1 Teles 16.0 irq, mem, io 2 Teles 8.0 irq, mem 3 Teles 16.3 (non PnP) irq, io 4 Creatix/Teles PnP irq, io0 (ISAC), io1 (HSCX) 5 AVM A1 (Fritz) irq, io 6 ELSA PCC/PCF cards io or nothing for autodetect (the iobase is required only if you have more than one ELSA card in your PC) 7 ELSA Quickstep 1000 irq, io (from isapnp setup) 8 Teles 16.3 PCMCIA irq, io 9 ITK ix1-micro Rev.2 irq, io 10 ELSA PCMCIA irq, io (set with card manager) 11 Eicon.Diehl Diva ISA PnP irq, io 11 Eicon.Diehl Diva PCI no parameter 12 ASUS COM ISDNLink irq, io (from isapnp setup) 13 HFC-2BS0 based cards irq, io 14 Teles 16.3c PnP irq, io 15 Sedlbauer Speed Card irq, io 15 Sedlbauer PC/104 irq, io 15 Sedlbauer Speed PCI no parameter 16 USR Sportster internal irq, io 17 MIC card irq, io 18 ELSA Quickstep 1000PCI no parameter 19 Compaq ISDN S0 ISA card irq, io0, io1, io (from isapnp setup io=IO2) 20 NETjet PCI card no parameter 21 Teles PCI no parameter 22 Sedlbauer Speed Star (PCMCIA) irq, io (set with card manager) 24 Dr. Neuhaus Niccy PnP irq, io0, io1 (from isapnp setup) 24 Dr. Neuhaus Niccy PCI no parameter 25 Teles S0Box irq, io (of the used lpt port) 26 AVM A1 PCMCIA (Fritz!) irq, io (set with card manager) 27 AVM PnP (Fritz!PnP) irq, io (from isapnp setup) 27 AVM PCI (Fritz!PCI) no parameter 28 Sedlbauer Speed Fax+ irq, io (from isapnp setup) 29 Siemens I-Surf 1.0 irq, io, memory (from isapnp setup) 30 ACER P10 irq, io (from isapnp setup) 31 HST Saphir irq, io 32 Telekom A4T none 33 Scitel Quadro subcontroller (4*S0, subctrl 1...4) 34 Gazel ISDN cards (ISA) irq,io 34 Gazel ISDN cards (PCI) none 35 HFC 2BDS0 PCI none 36 W6692 based PCI cards none 37 HFC 2BDS0 S+, SP/PCMCIA irq,io (pcmcia must be set with cardmgr)
( nachlesbar in /var/log/messages )Oct 3 11:44:47 voyager kernel: ISDN subsystem Rev: 1.100/1.84/1.114/1.63/none/1.4 Oct 3 11:44:47 voyager kernel: HiSax: Linux Driver for passive ISDN cards Oct 3 11:44:47 voyager kernel: HiSax: Version 3.3e (kernel) Oct 3 11:44:47 voyager kernel: HiSax: Layer1 Revision 2.37 Oct 3 11:44:47 voyager kernel: HiSax: Layer2 Revision 2.20 Oct 3 11:44:47 voyager kernel: HiSax: TeiMgr Revision 2.13 Oct 3 11:44:47 voyager kernel: HiSax: Layer3 Revision 2.10 Oct 3 11:44:47 voyager kernel: HiSax: LinkLayer Revision 2.40 Oct 3 11:44:47 voyager kernel: HiSax: Approval certification valid Oct 3 11:44:47 voyager kernel: HiSax: Approved with ELSA Quickstep series cards Oct 3 11:44:47 voyager kernel: HiSax: Approval registration numbers: Oct 3 11:44:47 voyager kernel: HiSax: German D133361J CETECOM ICT Services GmbH Oct 3 11:44:47 voyager kernel: HiSax: EU (D133362J) CETECOM ICT Services GmbH Oct 3 11:44:47 voyager kernel: HiSax: Approved with Eicon Technology Diva 2.01 PCI cards Oct 3 11:44:47 voyager kernel: HiSax: Card 1 Protocol EDSS1 Id=HiSax (0) Oct 3 11:44:47 voyager kernel: HiSax: AVM driver Rev. 2.11 Oct 3 11:44:47 voyager kernel: AVM A1: Byte at 1b40 is 7 Oct 3 11:44:47 voyager kernel: AVM A1: Byte at 1b43 is 3 Oct 3 11:44:47 voyager kernel: AVM A1: Byte at 1b42 is 2 Oct 3 11:44:47 voyager kernel: AVM A1: Byte at 1b40 is 7 Oct 3 11:44:47 voyager kernel: HiSax: AVM A1 config irq:10 cfg:0x1B40 Oct 3 11:44:47 voyager kernel: HiSax: isac:0x1740/0x1340 Oct 3 11:44:47 voyager kernel: HiSax: hscx A:0x740/0x340 hscx B:0xF40/0xB40 Oct 3 11:44:47 voyager kernel: AVM A1: ISAC version (0): 2086/2186 V1.1 Oct 3 11:44:47 voyager kernel: AVM A1: HSCX version A: V2.1 B: V2.1 Oct 3 11:44:47 voyager kernel: AVM A1: IRQ 10 count 0 Oct 3 11:44:47 voyager kernel: AVM A1: IRQ 10 count 3 Oct 3 11:44:47 voyager kernel: HiSax: DSS1 Rev. 2.23 Oct 3 11:44:47 voyager kernel: HiSax: 2 channels added Oct 3 11:44:47 voyager kernel: HiSax: MAX_WAITING_CALLS added
Durch die in Potato neu hinzugekommen virtuellen Packages namens task-* muss man nur die Packages:
task-dialup und task-dialup-isdn per apt-get install task-dialup task-dialup-isdn installieren.
Natürlich lassen sich die Tasks auch über tasksel auswählen und installieren.
isdnconfig
Das Anlegen von Beispiel-Dateien für die Konfiguration wird über isdnconfig gemacht. Dieser Schritt kann natürlich auch manuell ausgeführt werden. Aber warum, wenn es doch so komfortabel geht!? Es reicht vollkommen aus Punkt 1 (network devices) und 2 (synchronous ppp daemon) zu benutzen.
Wenn sie möchten können sie noch eine Modem Emulation (3) aktivieren oder den isdnlog konfigurieren (4) um auf dem ISDN D Kanal mitzuhören. Wer eine Voicebox machen möchte kann dazu Punkt 5 (Voice Box konfigurieren) verwenden.
Diese Anleitung wird allerdings bei der Konfiguration für die Einwahl bei einem Provider per PPP bleiben.
Benennen sie ihren Daemon am besten mit ippp0, wenn es der erste (oder einzige) ist, bei ippp1 müssen sie in der folgenden Konfiguration ippp0 durch ippp1 oder was immer sie gewählt haben ersetzen.
In der isdn.conf findet man allgemeine Einstellungen zum ISDN4Linux System.
Das Konfigurationsfile ist eigentlich selbsterklärend. Man muss nur beim Angeben vom AREACODE die 0 weglassen und als AREAPREFIX die 0 angeben, damit alles klappt.
Die anderen Optionen sind nicht wichtig für die erste Konfiguration.
[GLOBAL]
COUNTRYPREFIX=+
AREAPREFIX=0
# Change this to reflect your city
COUNTRYCODE=49 # Germany
AREACODE=6269 # Gundelsheim
# Isdnlog supports two databases for areacode -> name mapping.
# avon is the old one, I recommend to use areacode, the new one.
# However, it is easier to add to the avon database...
CODELIB=AREACODE
AREALIB=/usr/share/isdn/areacode.dat
# for avon:
# CODELIB=AVON
# AVON=/usr/share/isdn/avon
[VARIABLES]
[ISDNLOG]
CHARGEMAX = 9999.99
# CURRENCY = 0.08,NLG # 8 cents/unit (approximation in NL!), currency notation
ILABEL = %b %e %T %ICall to tei %t from %N2 on %n2
OLABEL = %b %e %T %Itei %t calling %N2 with %n2
# Alternates (easier to read):
# ILABEL = %a %b %e %T incoming %I%n2 <- %N2
# OLABEL = %a %b %e %T outgoing %I%n2 -> %N2
# If you're in Germany, and subscribe to Telekom's "cityweekend" tariff:
# CITYWEEKEND=Y
Nun kommen wir zum Konfigurationsfile ipppd.ippp0 unter /etc/isdn/. Ich werde hier nur die wichtigen Stellen aus der Konfiguration herausziehen, da das File doch recht lang ist. Alles, was ich nicht anspreche muss auch nicht geändert werden.
Die Zeile zwischen den 2 hier gezeigten muss entfernt werden, damit diese File ausgelesen werden kann.
Das einzige, was man noch ändern muss in dieser Datei die Option name XXX_.
Hier muss der Username eingetragen werden, der Ihnen von Provider mitgeteilt wurde. In meinem Beispiel s20959@surf1.de
# REMOVE the next line once configuration is complete #########################
# REMOVE the above line once configuration is complete ########################
Dieser Eintrag ist nur nötig, damit bei der Einwahl die richtige Kombination aus Username und Passwort aus der /etc/ppp/pap-secrets heraus geholt werden kann.
Falls ihr Provider spezielle Konfiguration verlangt, dann sollten sie mal hier unter dem Punkt Compression nachsehen.
# AUTHENTICATION
name s20959@surf1.de # set local name for auth XXX_
# COMPRESSION
#noaccomp # address compression on/off
#nopcomp # protocol field compression on/off
#novj # van jacobsen compression on/off
#novjccomp # van jacobsen connection-ID compression on/off
#vj-max-slots X # tune maximum vj header slots
#nobsdcomp # bsd compression on/off
#nodeflate # deflate compression on/off
#nopredictor1 # predictor1 compression in/off
noccp # compression negotation on/off
nolzs # LZS compression off (not yet supported fully)
In diesem File ( device.ippp0 unter /etc/isdn/ ) geht es eigentlich richtig zur Sache. Hier kann alles eingestellt werden. Sogar Callback ist möglich.
Ich ziehe auch hier wieder nur die relevanten Zeilen heraus, damit es etwas übersichtlicher wird.
Mit LOCALIP und REMOTEIP wird eingestellt, welche IP man selbst und das Interface des Routers gegenüber hat. Diese IP´s sind aus einem privaten Bereich zu wählen, da sie bei der Einwahl durch die richtigen IPs ersetzt werden. Am besten so lassen wie es ist.
Mit der LOCALMSN setze ich meine Rufnummer und mit der REMOTEMSN die Nummer, die gewählt werden soll (bei Areaprefix von 0 müssen sie bei der Remotemsn keine 0 vor der Vorwahl angeben, wohl aber bei ihrer Localmsn.
LOCALIP=10.0.0.1 # XXX_
REMOTEIP=10.0.0.2 # XXX_
Nun kommen wir zum DIALMODE. Hier kann man Auto, on oder off setzen. Auto entspricht Dial an Demand. Das heißt wenn eine Internet Adresse eingegeben wird, dann wählt I4L automatisch zum Provider. Kann bei Fehlkonfiguration zu hohen kosten führen.
LOCALMSN=6269429117 # ME
REMOTEMSN=10750192300 # Callino
Der huptimeout ist ein wichtiger Parameter. Hier kann man bestimmen, nach wieviel Sekunden die Verbindung getrennt wird, wenn kein Traffic mehr vorhanden ist. (Ganz praktisch, wenn man vor seinem Download eingeschlafen ist ;))
DIALMODE=auto # XXX_ other values can be 'on' and 'off'
Mit dem verbose kann man den ISDN Logging Level festlegen. Ich setze ihn immer auf 2
isdnctrl huptimeout ${device} 40 # XXX_
Man kann auch einstellen, dass wenn eine bestimmte Gebührengrenze erreicht ist keine Einwahl mehr stattfindet. Diese Feature Deaktiviere ich immer.
isdnctrl verbose 2
Das wars eigentlich schon. Der größte Teil ist geschafft. Wie sie gesehen haben ist in der Konfiguration noch einiges mehr möglich. Es gibt auch schon vorgefertigte ipchains Firewall Regeln. Lassen sie diese aber Deaktiviert, solange sie noch testen und die ipchains Doku noch nicht gelesen haben.
isdnctrl chargehup ${device} off
#isdnctrl chargeint ${device} NUM
In der pap-secrets Datei unter /etc/ppp/ stehen die Kombinationen aus Username und Passwort. Diese Datei darf nur von root gelesen werden, da sie ja Passwörter und Usernamen für den Internetzugang enthält. Also müsste ein ls -la -rw------- root root ausgeben.
Tragen sie einfach die Kombination Username * Passwort bei den OUTBOUND connections ein.
# OUTBOUND connections
# Here you should add your userid password to connect to your providers via
# pap. The * means that the password is to be used for ANY host you connect
# to. Thus you do not have to worry about the foreign machine name. Just
# replace password with your password.
# If you have different providers with different passwords then you better
# remove the following line.
s20959@surf1.de * LLnUd
# Der Account funktioniert natürlich nicht ;)
Um die Auflösung von Domainnamen (www.pro-linux.de) in die für die Verbindung nötige IP-Adresse durchzuführen braucht man einen Nameserver. Dieser wird unter Windows automatisch zugewiesen. Unter Linux wird dieser am besten fest eingestellt in der resolv.conf, die unter /etc zu finden ist (wenn nicht einfach erstellen). Es ist im Normalfall nur eine Zeile nötig.
Sie können natürlich auch mehrer nameserver Einträge erstellen, für den Fall, dass ein nameserver offline sein sollte. Ergo:
nameserver 127.0.0.1
nameserver 127.0.0.1
nameserver 192.168.0.1
Es muss nun als erstes die isdnutils neu gestartet werden. die isdnutils werden beim booten automatisch gestartet durch init.
Nach jeder Änderung in der Konfiguration muss dem ISDN4Linux Daemon gesagt werden, dass sich seine Konfiguration geändert hat. das erreicht man eben am besten durch einen Neustart des Dienstes.
Um die isdnutils zu starten verwendet man:
zum stoppen das selbe nur mit stop:/etc/init.d/isdnutils start
und zum Schluss kann man auch noch restarten:/etc/init.d/isdnutils stop
Die isdnutils sollten ohne die Meldung "not configured yet!" hochfahren, ansonsten haben sie eine der zu löschenden Zeilen nicht gelöscht. Kontrollieren sie nochmal die Files. Für den Fall, dass unerwartet Fehler ausgegeben werden, lesen sie diese ein paar mal durch, vielleicht kommen sie auf die Lösung was falsch sein könnte. Eventuell bekommen sie die Zeilenzahl angezeigt, die den Fehler enthält./etc/init.d/isdnutils restart
Für den Fall, dass sie manuell die Einwahl starten wollen, sollten sie als root die isdnctrl - Befehle benutzen.
Für die Einwahl beim Provider:
Um die Verbindung zu beenden brauchen sie folgende Zeile:isdnctrl dial ippp0
Sie wollen doch sicher auch sehen, ob alles geklappt hat, oder ?isdnctrl hangup ippp0
Hat die Einwahl geklappt ? Bei mir gab es folgende Ausgaben beim Wählen:tail -f /var/log/messages
Diese Ausgaben bekomme ich beim Beenden der Verbindung:Oct 14 00:01:48 voyager kernel: ippp0: dialing 1 010750192300... Oct 14 00:01:50 voyager ipppd[4154]: Local number: 6269429117, Remote number: 010750192300, Type: outgoing Oct 14 00:01:50 voyager ipppd[4154]: PHASE_WAIT -> PHASE_ESTABLISHED, ifunit: 0, linkunit: 0, fd: 8 Oct 14 00:01:50 voyager kernel: isdn_net: ippp0 connected Oct 14 00:01:50 voyager ipppd[4154]: Remote message: Oct 14 00:01:50 voyager ipppd[4154]: MPPP negotiation, He: No We: No Oct 14 00:01:50 voyager ipppd[4154]: local IP address 213.21.31.58 Oct 14 00:01:50 voyager ipppd[4154]: remote IP address 10.0.60.254
Je nach Debuglevel (bei mir: isdnctrl verbose 2) kann die Ausgabe etwas anders ausfallen.Oct 14 00:04:03 voyager ipppd[4154]: Modem hangup Oct 14 00:04:03 voyager ipppd[4154]: Connection terminated. Oct 14 00:04:03 voyager ipppd[4154]: taking down PHASE_DEAD link 0, linkunit: 0 Oct 14 00:04:03 voyager ipppd[4154]: LCP is down Oct 14 00:04:03 voyager ipppd[4154]: closing fd 8 from unit 0 Oct 14 00:04:03 voyager ipppd[4154]: link 0 closed , linkunit: 0 Oct 14 00:04:03 voyager ipppd[4154]: reinit_unit: 0 Oct 14 00:04:03 voyager ipppd[4154]: Connect[0]: /dev/ippp0, fd: 8 Oct 14 00:04:03 voyager kernel: isdn_net: local hangup ippp0 Oct 14 00:04:03 voyager kernel: ippp0: Chargesum is 0