News Gästebuch Forum Mitglied werden FAQ Howtos Desktops C BOfH Lamer & DAUs Quote DB #linux Quotes Was und warum ? Downloads Wallpapers Subdomain Links TU Sidebar Das Team Über die Site Kontakt
Kommentar

Vorwort
HiSax (ISDN Support im Kernel)
Benötigte Packages
Isdnconfig: Tool zur Konfiguration von ISDN unter Debian
Konfigurationsdateien:
    isdn.conf Allgemeines zu ISDN
    ipppd.ippp0: Konfiguration zum ISDN4Linux Deamon
    device.ippp0: Konfiguration zum Device ippp0
    pap-secrets: User und Passwörter setzen
    resolv.conf: Nameserver konfigurieren
Die Isdnutils starten / stoppen
isdnctrl dial / hangup - Aufbau und Abbau der Verbindung
Anmerkungen



Vorwort

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. (Kernel Doku: /usr/src/linux/Dokumentation/isdn/README.HiSax)

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.



HiSax (ISDN Support im Kernel) modconf

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: /usr/src/linux/Dokumentation/isdn/README.HiSax
Hier eine Liste der gängigsten Karten, deren Typennummern und erforderlichen Parametern:

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)
Kernel selbst compilieren (empfohlen bei ISA Karten):
Den HiSax Treiber kann man auch direkt in den Kernel eincompilieren, der den Support für die ISDN Karte enthält. Unter ISDN4Linux müssen sie das HiSax Modul wählen und dann ihre Karte. Sie müssen nur diese 3 Schritte beachten:
1. Sie müssen den ISDN Support aktivieren und die Protokolle wählen (Screenshot 1)
2. Danach die Karte aus der Liste der passiven Karten auswählen (siehe Screenshot 2)
3. Nicht vergessen auch das PPP Protokoll unter Network Device Support zu aktivieren (siehe Screenshot 3)


Konfigurieren sie ihren Kernel wie gewohnt für ihr System und speichern sie die Konfiguration.
Sie können nun den Kernel compilieren.
Kurz erklärt machen sie ein make dep clean bzImage modules modules_install um ihren Kernel zu übersetzen.
Der neue Kernel ist noch nicht installiert (!!!). Er ist lediglich compiliert und liegt unter /usr/src/<verzeichnis_des_kernels>/arch/i386/boot/ und heißt bzImage. Diesen Kernel müssen sie nun nach /boot/ kopieren und einen Link von /vmlinuz auf /boot/<kernelname> legen (z.B. ln -s /boot/bzImage /vmlinuz). Ihren alten Kernel sollten sie auf vmlinuz.old linken, damit falls ihr neuer Kernel nicht bootet sie mit LinuxOLD den alten booten können. (siehe dazu lilo.conf).
Mit lilo können sie den Boot Sektor neu schreiben und danach müssen sie den neuen Kernel booten, also Neustart.
Beim Booten des neuen Kernels sollten sie sobald die Karten initialisiert werden fast identische Meldungen bekommen wie ich hier:
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
( nachlesbar in /var/log/messages )

Wenn die Meldungen fast die selben sind, dann können sie davon ausgehen, dass die Karte funktioniert. Wichtig ist, dass sie in diese Log Files einen Hinweis auf ihre Karte finden, zum Beispiel HiSax: AVM A1 config irq:10 cfg:0x1B40 oder HiSax: 2 channels added woran man erkennen kann, dass 2 ISDN B Kanäle bereitgestellt wurden.



Benötigte Packages

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: Tool zur Konfiguration von ISDN unter Debian

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.



isdn.conf: Allgemeines zu ISDN

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



ipppd.ippp0: Konfiguration zum ISDN4Linux Daemon

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.

# REMOVE the next line once configuration is complete #########################

# REMOVE the above line once configuration is complete ########################
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
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.
# AUTHENTICATION name s20959@surf1.de # set local name for auth XXX_
Falls ihr Provider spezielle Konfiguration verlangt, dann sollten sie mal hier unter dem Punkt Compression nachsehen.
# 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)



device.ippp0: Konfiguration zum Device ippp0

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.

LOCALIP=10.0.0.1        # XXX_
REMOTEIP=10.0.0.2       # XXX_
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.
LOCALMSN=6269429117     # ME
REMOTEMSN=10750192300   # Callino
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.
DIALMODE=auto           # XXX_  other values can be 'on' and 'off'
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 ;))
isdnctrl huptimeout ${device} 40        # XXX_
Mit dem verbose kann man den ISDN Logging Level festlegen. Ich setze ihn immer auf 2
isdnctrl verbose 2
Man kann auch einstellen, dass wenn eine bestimmte Gebührengrenze erreicht ist keine Einwahl mehr stattfindet. Diese Feature Deaktiviere ich immer.
isdnctrl chargehup ${device} off
#isdnctrl chargeint ${device} NUM
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.



pap-secrets: User und Passwörter setzen

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 ;)



resolv.conf: Nameserver konfigurieren

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.

nameserver 127.0.0.1
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 192.168.0.1



Die Isdnutils starten / stoppen

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:

/etc/init.d/isdnutils start
zum stoppen das selbe nur mit stop:
/etc/init.d/isdnutils stop
und zum Schluss kann man auch noch restarten:
/etc/init.d/isdnutils restart
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.



isdnctrl dial / hangup - Aufbau und Abbau der Verbindung

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:

isdnctrl dial ippp0
Um die Verbindung zu beenden brauchen sie folgende Zeile:
isdnctrl hangup ippp0
Sie wollen doch sicher auch sehen, ob alles geklappt hat, oder ?
Dann verwenden sie vor dem Einwählen den folgenden Befehl, der ihnen die Systemmeldungen auf der Konsole / Terminal ausgibt.
tail -f /var/log/messages
Hat die Einwahl geklappt ? Bei mir gab es folgende Ausgaben beim Wählen:
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
Diese Ausgaben bekomme ich beim Beenden der Verbindung:
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
Je nach Debuglevel (bei mir: isdnctrl verbose 2) kann die Ausgabe etwas anders ausfallen.
Es kann bei manchen Providern (hauptsächlich lowcost Internet by Call und Flatrate) sein, dass dialing ein paar mal in den /var/log/messages steht. Dann war beim Provider belegt und er versucht es dann nochmals, bis eine Einwahl möglich ist.



Anmerkungen
Dieses Howto gibts im Original auf: http://www.pl-berichte.de/t_netzwerk/print/debian-isdn.html
Allerdings fand ich andere Namen vor als die Dateien tatsächlich hatten... das hat mich etwas verwirrt, darum habe ich es ein wenig abgeändert für meine Besucher ;) Möge es mir der Author nachsehen...


Autor: Michael Flaig

nicht, dass man mir nachsagt ich würde mich mit den Lobeeren anderer schmücken....

cu, Tam