Der Linuxserver als Einwahlrechner
Ein Linuxrechner ist mit sehr einfachen Mitteln als Einwahlrechner zu konfigurieren. Einwahlrechner meint dabei nicht nur, daß mensch sich mittels eines Terminalprogramms auf den Rechner einwählen kann und dann dort wie auf einem lokalen Rechner arbeiten kann. Sondern hier geht es darum, daß der sich einwählende Rechner zu einem vollwertigen Mitglied des Netzes wird, in dem sich der Einwahlrechner befindet.
Details dazu sind in den vorhergehenden Seiten ausführlich
beschrieben.
Im folgenden werden zwei verschiedene Konfigurationen beschrieben,
einmal für eine Modemeinwahlverbindung und zum anderen eine für
eine ISDN-Verbindung.
Gliederung
2 Voraussetzungen
3 Einwahlrechner für
eine Modemverbindung
3.1 Konfiguration
des Modems
3.2 Anlegen
eines Einwahlbenutzers
3.3
Einwahl nur zu bestimmten Zeiten ermöglichen
3.4 Weitere Systemeinstellungen
für die Modemeinwahl
4 Einwahlrechner für
eine ISDN-Verbindung
5 mehrere ISDN-Karten in einem
Rechner
6 Sonstige allgemeine
Systemeinstellungen
7 Sicherheitsaspekte
Das folgende Bild zeigt das Zugangsprinzip am Beispiel der Modemverbindung.
2 Voraussetzungen
Auf dem Einwahlrechner muß logischeweise Linux inclusive der Netzwerkoptionen
installiert sein. Wenn der Einwahlrechner seinerseits in einem Netz hängt,
muß er (ebenfalls logischerweise) über eine Netzwerkkarte verfügen.
Dann benötigen wir noch ein Modem, damit sich andere Rechner hier
einwählen können. Da in meinem Büro leider kein ISDN-Anschluß
zur Verfügung steht, muß ich mich auf die Modemeinwahl beschränken.
Als Pakete müssen mindestens installiert sein:
mgetty - Für die Modem-Verbindung
i4l - Für die ISDN-Verbindung:
3 Einwahlrechner für eine Modemverbindung
3.1 Konfiguration des Modems
Das Modem sollten Sie bei der Systeminstallation einrichten, dann wird
in der Datei /etc/rc.config für ein Modem an der ersten seriellen
Schnittstelle (COM1 unter DOS) eine Zeile mit dem Inhalt
MODEM="dev/ttyS0"
bzw.
MODEM="dev/ttyS1"
für die zweite serielle Schnittstelle (COM2 unter DOS) eingerichtet.
Und zudem wird im Verzeichnis /dev ein Link von der entsprechenden Datei
auf die Datei /dev/modem erstellt. Wenn Sie ohne YaST arbeiten, tun Sie
dies von Hand.
Dafür, daß das Modem bei Anruf abhebt, sorgt das Programm
mgetty. Dieses Programm überwacht die serielle Schnittstellen. Es
kann noch viel mehr, als "nur" eine ppp-Verbindung intiieren, aber das
ist ein anderes Thema. Um mgetty regelmäßig beim Systemstart
zu starten, muß die Datei /etc/inittab verändert werden. Öffnen
Sie diese Datei mit einem Editor und suchen Sie nach den Zeilen
# modem getty
# mo:23:respawn:/usr/sbin/mgetty -s 38400 modem
entfernen Sie das Kommentarzeichen und passen Sie ggf. die Geschwindigkeitsvorgabe
an. Wenn Sie ein schnelles Modem und eine entsprechende serielle Schnittstelle
(mit einem Baustein vom Typ 16550A) können Sie dort auch die maximale
Geschwindigkeit für aktuelle serielle Schnittstellen von 115200 einstellen.
mo:23:respawn:/usr/sbin/mgetty -s 115200 modem
Wenn diese Zeilen nicht zu finden sind, tragen Sie sie selbst dort so
ein, wie oben beschrieben.
Wenn Sie vorgeben möchten, daß das Modem erst nach z.B. 6
Klingelzeichen abheben soll, tragen Sie noch den Parameter -n 6 ein.
mo:23:respawn:/usr/sbin/mgetty -s 115200 -n 6 modem
Das wäre eine Möglichkeit, das Modem und das normale Telefon
gemeinsam an einer Leitung zu betreiben. Sie müssen nur den Wert für
die Anzahl der Klingelzeichen so hoch setzen, daß ein normaler Anrufer
mit großer Wahrscheinlichkeit aufgelegt hat (z. B. 6 oder 8). Diese
Lösung hat aber den Nachteil, daß Sie zu Hause doch relativ
lange auf die Verbindung warten müssen. Deshalb wird unten eine andere
Lösung beschrieben.
Das war's bereits mit dem Modem. Nach einem Systemneustart müßte
das Modem jetzt aktiv sein.
Ich bekomme häufiger Hinweise von Linux-Profis, daß natürlich
hier kein vollständiger Systemneustart wie etwa unter Windows notwendig
sei, sondern daß es ausreicht, den runlevel durch Eingabe von init
1 und danach von init 2 (bzw. init 3 bei grafischem
Login) ausreicht. Ich denke, daß das den erfahreneren Benutzern klar
ist, daß aber für die Neulinge der Neustart einfacher nachzuvollziehen
ist.
3.2 Anlegen eines Einwahlbenutzers
Für die Einwahl definieren wir einen speziellen Benutzer. Dieser soll
zu einer speziellen Gruppe im System gehören. Sagen wir zur Gruppe
mit dem Namen "einwahl". Diese Gruppe legen wir an mit dem Befehl "groupadd
einwahl" an. Dann legen wir den Benutzer einwahl_user an mit "useradd
-g einwahl -s /etc/ppp/ppplogin einwahl_user". Die Besonderheit ist
hier, daß für diesen User ein spezielles loginscript, nämlich
die Datei /etc/ppp/ppplogin definiert wird. Das heißt, sobald sich
dieser User im System einloggt, wird dieses Skript gestartet. Vergeben
Sie noch ein Passwort für den Benutzer einwahl: passwd einwahl_user.
Das Skript hat folgenden Inhalt:
#!/bin/sh
exec /usr/sbin/pppd
Bei neueren Versionen von pppd gibt es eine unterschiedliche Behandlung
von Optionen, die über die Kommandozeile angegeben werden und von
denen, die in der Datei /etc/ppp/options stehen. Deshalb habe ich jetzt
alle Parameter nur noch in der Datei stehen. Im Grunde könnte somit
auch direkt /usr/sbin/pppd als Einwahlshell angegeben werden.
Diese Skript soll von allgemeinen Nutzern nur ausgeführt werden,
aber nicht geändert werden können. Deshalb stellen wir
sicher, daß root der Eigentümer ist (chown root ppplogin)
und setzen die entsprechenden Rechte (chmod 644 ppplogin).
Besonders wichtig sind in dieser Beispielskonfiguration die Rechte des
Programms pppd. Wir ordnen das Programm der Gruppe einwahl zu: chgrp
einwahl /usr/sbin/pppd. Da das Programm in wichtige Systemdetails
(v.a. das routing des Kernels) eingreift, muß es mit root-Rechten
(suid) laufen. Also:
chmod 4750 /usr/sbin/pppd.
Wichtig: Wenn Sie diese Konfiguration so
durchführen wollen, dürfen Sie bei S.u.S.E. Distributionen YaST
nicht in der Standarkonfiguration laufen lassen, da dieses die Rechte standardgemäß
anders setzt, bzw. Sie müssen den entsprechenden Teil von SuSEConfig
abschalten! Oder Sie müssen hinterher die Installation entsprechend
überprüfen bzw. wiederherstellen. Falls hier die Rechte nicht
richtig gesetzt sind, erhalten Sie in der Datei /var/log/messages eine
entsprechende Meldung mit dem Inhalt "persission denied", wenn debugging
eingeschaltet ist (s.u.).
Die einfachste Lösung ist, die Standardvorgabe für die Rechte
der Datei /usr/sbin/pppd in der Datei /etc/permissions entsprechend
zu ändern. Suchen Sie in dieser Datei nach der Zeile
/usr/sbin/ppd
root.dialout 4754
und ändern Sie diese in
/usr/sbin/ppd
root.einwahl 4750
(Danke für den Hinweis an Joerg Menke)
Sie können jetzt überprüfen, ob die Installation soweit
funktioniert, indem Sie sich an einer der Konsolen als Benutzer "einwahl"
einloggen. Wenn alles stimmt, sehen Sie nach einem kurzen Moment eine Reihe
merkwürdiger Zeichen auf dem Bildschirm, unter den Zeichen finden
Sie eine Menge von geschweiften Klammern. Was Sie da sehen, sind die Ausgaben
von pppd, der versucht, mit Ihnen über die Details der ppp-Verbindung
zu verhandeln. In der Regel beendet sich pppd dann nach erfolglosen Versuchen
(Sie sind ja in diesem Moment kein Modem) von selbst. Andernfalls beenden
Sie die Verbindung oder fahren Sie das System herunter.
In den man-pages ist auch beschrieben, daß der mgetty einen AutoPPP-modus
beherrscht. Das heißt, daß der Prozeß, der sozusagen
an der Telefonleitung lauscht, dann bei Anruf den pppd startet. Das hätte
den Vorteil, daß das spezielle Einwahlscript für den Benutzer
nicht notwendig wäre, aber ich habe das bei meinen Versuchen nicht
zum Laufen bekommen. (Wenn da jemand eine laufende Konfiguration hat, wäre
ich für einen Hinweis dankbar ...).
3.3 Einwahl
nur zu bestimmten Zeiten ermöglichen
Wenn im Büro nur eine Telefonleitung zur Verfügung steht, an
der das normale Telefon und das Modem parallel angeschlossen sind, können
Sie dafür sorgen, daß der Einwahlrechner nur außerhalb
der Bürostunden eine Verbindung zuläßt. Das Modemprogramm
(mgetty) überprüft nämlich, bevor es abhebt, ob für
die serielle Schnittstelle (in unserem Beispiel ttyS0) des Modems eine
Datei nologin.ttyS0 im Verzeichnis /etc existiert. Wenn ja, wird nicht
abgehoben, wenn nein, wird abgehoben.
Mit Hilfe des cron-Programms können wir dafür sorgen, daß
Werktags zu Bürobeginn diese Datei erstellt wird und zu Büroende
wieder gelöscht wird. Es gibt eine systemweite Datei für das
Programm cron (/etc/crontab) und für jeden Benutzer/jede Benutzerin
eine eigene. Bei meinem Einwahlserver habe ich in die systemweite Datei
zwei Zeilen wie folgt eingetragen:
0 18 * * 1-5 root rm /etc/nologin.ttyS0
0 7 * * 1-5 root cp /etc/dummy /etc/nologin.ttyS0
Die erste davon bewirkt, daß um 18 Uhr und 0 Minuten mit der
Benutzerkennung root der Befehl rm /etc/nologin.ttyS0 ausgeführt
wird, das heißt die Datei /etc/nologin.ttyS0 gelöscht wird.
Die zweite bewirkt, daß um 7 Uhr und 0 Minuten diese Datei erstellt
wird, indem eine Datei aus dem /etc-Verzeichnis entsprechend umkopiert
wird. Diese Datei kann leer sein oder einen beliebigen Inhalt haben (Sie
sollten wenigstens hineinschreiben, wofür sie gut ist, falls sich
später einmal Alsheimer ankündigt). Das heißt, Sie müssen
diese Datei erst einmal mit einem beliebigen Editor erstellen.
Achtung: Je nach Konfiguration von mgetty kann es auch sein, daß
mgetty auf ihr Modem nicht über /dev/ttyS0 oder /dev/ttyS1 zugreift,
sondern über den symbolischen Link /dev/modem. Wenn also obiges nicht
funktionieren sollte, versuchen Sie es mit /etc/nologin.modem als Dateinamen.
3.4 Weitere Systemeinstellungen
für die Modemeinwahl
Die lokale Netzwerkkarte muß natürlich richtig installiert sein
und vernünftig laufen, wenn Sie auf das Netz zugreifen wollen, in
dem sich der Einwahlserver befindet. Das setze ich im folgenden voraus.
Wichtig für das Modem-Einwahlsystem ist vor allem die Datei /etc/ppp/options.modem,
in der die Details für das Programm pppd festgelegt werden. Ganz wichtig:
Das PPP-System verlangt, daß eine Datei /etc/ppp/options im System
vorhanden ist. Da aber diese Beschreibung so ausgelegt ist, daß parallel
die Einwahl per Modem und per ISDN-Karte möglich sind und unterschiedliche
Optionen für ISDN-Karte und Modem erforderlichj sind, hat diese hier
keine Funktion. Sie muß aber vorhanden sein! Deshalb sollten
Sie eine Datei dieses Namens erstellen, die z.B. lediglich einen Kommentar
enthält!
Wenn Sie nur eine einwahl per modem einrichten wollen, können
Sie sich die Datei options.modem sparen und alles in die Datei options
schreiben.
Die Datei des Einwahlservers ist nachfolgend kommentiert wiedergegeben
(Kommentare beginnen mit einem #)
#
# Datei /etc/ppp/options.modem
# es sollen Meldungen über den Verbindungsaufbau in die Datei
# /var/log/messages geschrieben werden, die bei der Fehlersuche
helfen
# wenn das Ganze läuft besser wieder herausnehmen, da die
Datei sonst zu groß wird
debug
# benutze die modem control lines
modem
# benutze hardware flow control
crtscts
# alle Zeichen der Verbindung koennen genutzt werden
asyncmap 0
# Groesse der Uebertragungspakete fuer die Uebertragung
mtu 1500
# Groesse der Uebertragungspakete fuer Empfangen
mru 1500
# die beiden obigen Werte können bei schlechten Telefonleitungen
verkleinert werden
# und liefern dann einen etwas besseren Durchsatz
#
# Spiegle dem System vor, die IP-Adresse des anrufenden Modems
gehöre zum lokalen Netz
proxyarp
# Das angerufene System soll (passiv) auf Initiativen des anrufenden
Systems warten
passive
# die ip-Nummern werden fest vorgegeben für die Modems lokal:remote
# bei kleinen Systemen sicher einfacher als dynamische ip-Zuweisung
192.168.2.40:192.168.2.41
# Wenn Sie die Sicherheit erhöhen wollen,
dann sollten Sie Authentifizierung
# aktivieren. Das sicherste Verfahren (weil
beidseitig) ist CHAP
# Dann sollten Sie folgende Zeilen einfügen:
require-chap
refuse-pap
# Etwas unsicherer ist Authentifizierung
per PAP. Dann müssen Sie eine Zeile
# einfügen, die den Inhalt: require-pap
heißt.
# Bei CHAP muß dann eine Datei /etc/ppp/chap-secrets
# PAP eine Datei /etc/ppp/pap-secrets vorhanden
sein.
# Eine Beschreibung finden sie weiter unten.
Sie finden im Verzeichnis /etc noch ein Unterverzeichnis /mgetty+sendfax.
Die dort bei der Systeminstallation eingerichteten Dateien dialin.config
login.config mgetty.config voice.conf habe ich nicht
weiter verändert.
4 Einwahlrechner für eine ISDN-Verbindung
Die Konfiguration eines ISDN-Einwahlrechners ist nach meiner Meinung wesentlich
einfacher als die eines Modem-Einwahlrechners. Das liegt zum einen daran,
daß eine ISDN-Karte in einem Linuxsystem behandelt wird wie eine
Netzwerkkarte. Das heißt sie hat eine IP-Nummer und ist anders als
ein Modem als Gerät "ansprechbar", auch wenn keine Verbindung vorliegt.
Zum anderen wird der spezielle ppp-Daemon (das Hintergrundprogramm für
die ppp-Verbindung - ipppd) bei einer ISDN-Karte nur einmal beim Systemstart
aktiviert und lauscht gewissermaßen ständig, ob auf die Karte
zugegriffen wird. Er stellt dann die Verbindung her oder baut sie wieder
ab. Das erspart uns hier die Hilfskrücke mit dem Einwahlbenutzer und
dem speziellen Einwahlskript.
Die einfachste Lösung ist meiner Meinung nach, die ISDN-Karte zu
Beginn so einzurichten, als wolle mensch eine Verbindung vom Server zum
Client (zu dem Rechner, der sich einwählt) herstellen. Wir tun also
so, als wäre es gerade andersherum als wir eigentlich wollen. Bei
S.u.S.E. geschieht das am einfachsten mit dem Installationsprogramm YaSt.
Das ist im Handbuch so deutlich beschrieben, daß ich mir hier Details
spare.
Um jetzt aus dem Rechner einen Einwahlserver zu machen, müssen
einige Dateien angepaßt werden.
Ich führe im folgenden nur die zu ändernden Details auf:
/etc/ppp/ip-up
Dieses Skript wird unter Linux immer aufgerufen, wenn eine ppp-Verbindung
zustand kommt und wenn sie abgebaut wird. Bei einem Client, also einem
Rechner, der sich woanders einwählt, wird vor allem im Abschnitt ip-up
des Skripts das routing so gesetzt, daß die IP-Pakete dann in das
fremde Netz weitergeleitet werden. Bei einem Server wäre das aber
völliger quatsch. Das Routing muß hier so bleiben, wie vor der
Einwahl.
Öffnen Sie die Datei /etc/ppp/ip-up und löschen Sie bis auf
die Semikolons alles zwischen den Zeilen ip-up) und ip-down).
Eigentlich kann die Datei ganz gelöscht werden, aber der Rest
schadet zumindestens nicht.
Der entsprechende Abschnitt der Datei sieht dann so aus:
...
case "$BASENAME" in
ip-up)
;;
ip-down)
...
Dann müssen noch die PPP-Optionen für das Gerät ISDN-Karte
geändert werden. Diese werden zum einen aus der systemweiten Datei
/etc/ppp/options gelesen und zum zweiten dann aus der zur jeweiligen Karte
gehörigen Konfigurationsdatei. Bei einer Karte ist das /etc/ppp/options.ippp0.
Um ggf. später weitere Karten hinzufügen zu können, ist
bei mir die Datei /etc/ppp/options bis auf eine Kommentarzeile ganz leer.
Soweit ich weiß, muß diese Datei allerdings vorhanden sein,
Löschen geht also nicht.
Die eigentliche Konfiguration erfolgt in
/etc/ppp/options.ippp0. die sieht so aus:
# /etc/ppp/options.ippp0
#Optionen für einen Einwahlserver
#
# basierend auf dem Originalskript von
# Klaus Franken, kfr@suse.de
#
# das "Gerät", hier die erste ISDN-Karte
/dev/ippp0
# ermöglicht, daß Einwahlrechner als Bestandteil des
# lokalen Netzes erscheint
# Diese Zeile muß eingefügt werden!
proxyarp
# wir geben die IP-Adressen fest vor:
192.168.2.40:192.168.2.41
# ein paar Systemeinstellungen
-vj
-vjccomp
-ac
-pc
-bsdcomp
# Größe der Pakete zum Empfangen
mru 1524
# Größe der Pakete zum Versenden
mtu 1500
Zum Austesten der Verbindungen sollte in der Datei /etc/ppp/ioptions
das Debugging aktiviert werden. Dazu sollte das Kommentarzeichen vor der
Zeile mit der anweisung debug entfernt werden. Das sorgt dafür, daß
in der Datei /var/log/messages die Verbindungsversuche protokolliert werden.
Wenn das Ganze funktioniert, sollte das Kommentarzeichen # wieder eingefügt
werden.
# Set 'debug' to create a lot of information in /var/log/messages
debug
Im Prinzip war es das. Da der Einwahlrechner im konkreten Fall an einer
größeren ISDN-Anlage hängt, protokolliert die Karte alle
Wählverbindungen im Netz und müllt damit die Logdatei /var/log/messages
voll. Um das zu unterbinden, habe ich in der Datei /etc/isdn/isdnlog.isdnctrl0.options
die Zeile mit der Angabe syslog= geändert:
# Angabe der gewuenschten Meldungen, die in's syslog eingetragen
# werden sollen
# ist in der Standardeinstellung: syslog=1015
# will aber nur Errors (1), Warnings (2), Notice (4)
syslog=7
5 Mehrere ISDN-Karten in einem Rechner
Es ist sehr einfach, in einen Linuxrechner mehrere ISDN-Karten einzubauen
und die gleichzeitige Einwahl über diese zu ermöglichen. Es müssen
lediglich genügend Steckplätze sowie unbenutzte Interrupts und
IO-Adressen im Rechner vorhanden sein. Bei mir läuft das zur Zeit
problemlos mit zwei Karten, wäre aber noch auf die selbe Weise leicht
erweiterbar.
Leider ist die Konfiguration von mehreren Karten zumindestens für
die SuSE-Distribution nirgendwo beschrieben und SuSE leistet hier zu meinem
Ärger 8-(( nur kostenpflichtigen Support - dabei ist das Ganze sehr
einfach.
Sie benötigen ISDN-Karten, bei denen Interrupt und IO-Adresse einstellbar
sind. Bei mir sind das zwei Fritz-Card classic. Sie müssen für
die zu installierenden Karten dann Kombinationen für diese Werte finden,
die sich nicht überschneiden, die bei den Karten einstellbar sind
und die nicht von anderen Karten im Rechner bereits belegt werden.
Die möglichen Werte der Karten finden Sie im Handbuch der Karte,
die im Rechner belegten Werte, indem Sie an der Kommandozeile den Befehl
cat
/proc/interrupts und cat /proc/ioports eingeben.
Der Einfachheit halber habe ich die erste ISDN-Karte standardgemäß
über YaST - wie oben beschrieben - konfiguriert und dann lediglich
für die zweite Karte die entsprechenden Ergänzungen vorgenommen.
Nachfolgend kommen also im wesentlichen die Ergänzungen und Veränderungen
für die zweite Karte.
Sie müssen in der Datei /etc/rc.config die zweite ISDN-Karte als
Netzdevice eintragen.
# Es gibt im Rechner 3 Netzinterfaces, die Netzkarte (_0) und die
beiden ISDN-Karten (_1) (_2)
NETCONFIG="_0 _1 _2"
#
IPADDR_0="192.168.1.40"
IPADDR_1="192.168.1.41"
IPADDR_2="192.168.1.42"
# interne Namen der Netzwerkkarte(eth0) und der ISDN-Karten (ippp0,
ippp1)
NETDEV_0="eth0"
NETDEV_1="ippp0"
NETDEV_1="ippp1"
#
IFCONFIG_0="192.168.1.40 broadcast 192.168.1.255 netmask 255.255.255.0
up"
IFCONFIG_1="192.168.1.41 pointopoint 192.168.1.40 up"
IFCONFIG_2="192.168.1.42 pointopoint 192.168.1.40 up"
Bei SuSE befinden sich die wesentlichen Konfigurationsdateien in diesem
Zusammenhang seit der Version 6.0 in folgenden Verzeichnissen:
| Verzeichnis |
Konfigurationsdateien |
Inhalt/Zweck |
| /etc/ppp |
options |
Grundkonfiguration der ppp-devices |
| options.ippp0, ippp1 usw. |
spezifische Konfiguration der einzelnen devices |
| ip-up bzw. ip-down |
Skript, das automatisch beim Verbindungsaufbau und -abbau gestartet
wird |
| /etc/rc.config.d/ |
i4l_xxxx.config |
Konfigurationsdateien für die ISDN-Hardware |
| /etc/isdn |
isdnlog.xxx.options |
Konfigurationsdateien für ISDN-Details |
Im folgenden also Hinweise zu den notwendigen Änderungen und Ergänzungen.
Dateien im Verzeichnis /etc/rc.config.d
Der erste Schritt ist die Konfiguration der Hardware. Die Hardwaredetails
werden in der Datei /etc/rc.config.d/i4l_hisax.rc.config definiert.
Wenn nur eine Karte im System ist, werden Dinge wie Interrupt, IO-Port
usw. durch einzelne Zeilen festgelegt. Um mehrere Karten zu initialisieren,
werden die Einstellungen für die Karten beim Laden des HiSax-Moduls
als Parameter übergeben. SuSE wertet beim Start des Moduls dafür
den Eintrag in der Zeile I4L_MODUL_OPTIONS= aus. Dort werden (in
dieser Reihenfolge) angegeben: Kartentyp Protokoll IO-Adresse Interrupt
Name, jeweils getrennt durch ein Leerzeichen und die Angaben für mehrere
Karten jeweils getrennt durch ein Komma.
Meine Konfiguration sieht so aus:
I4L_MODUL_OPTIONS="type=5,5 protocol=1,1 irq=10,15 io=0x300,0x240 id=Fritz1%Fritz2"
Es ist zum einen nach meinem Eindruck ein Bruch in der Logik der anderen
SuSE-HiSax-Konfigurationsdateien, wo ansonsten immer maximal vier devices
vorkonfiguriert sind, zum anderen bin ich mir nicht sicher, ob es ggf.
zu Problemen kommen kann, wenn in der obigen Zeile andere Werte für
die erste Karte angegeben werden als in den "normalen" Konfigurationszeilen.
Ich habe demnach nur die untere Zeile eingefügt und die anderen so
gelassen wie sie waren.
Achten Sie bei den anderen Dateien in diesem Verzeichnis darauf, daß
auch in der jeweiligen Zeile für das zweite device gültige Eintragungen
stehen. Also z.B. in i4l_default.rc.config dann für den Wählmodus
#
I4L_DIALMODE_0="auto"
I4L_DIALMODE_1="auto"
usw. in den anderen Zeilen.
Anpassen müssen Sie auf jeden Fall die Eintragungen für die
Telefonnummern der ISDN-Anschlüsse an denen die Karten hängen.
Diese stehen in i4l_option.rc.config. Bei mir steht dort diesbezüglich:
#
I4L_LOCALMSN_0="18"
I4L_LOCALMSN_1="19"
Wichtig! Bei Telefonanlagen ist dies in
der Regel nicht die vollständige von der Post zugewiesene MSN, sondern
meist nur die Endziffer in der internen Anlage! Im Zweifelsfall bekommen
Sie das heraus, wenn Sie den Anschluß, an der die Karte angeschlossen
ist anrufen und die Einträge in die ISDN-Logdateien ansehen. Dort
werden die Nummern aufgezeichnet.
Dies ist auch zu beachten, wenn Sie in der selben Datei definieren wollen,
welche Nummern anrufen dürfen.Sie müssen dann
den Eintrag in den Zeilen I4L_SECURE_n auf on setzen und dann wieder
die richtige Nummer eintragen.
I4L_SECURE_0="on"
I4L_SECURE_1="on"
In der Datei i4l_sp_option.rc.config müssen Sie noch eintragen,
daß alle Karten jeweils an einen ippp-Daemon gebunden werden soll.
Also:
I4L_PPPBIND_0="yes"
I4L_PPPBIND_1="yes"
Dateien im Verzeichnis /etc/isdn
Maßgeblich sind hier die Dateien isdnlog.isdnctrl0.options und zudem
die Datei isdnlog.isdnctrl2.options. Letztere ist eine Kopie von /etc/isdn/isdnlog.isdnctrl0.options.
Lediglich der Dateiname muß in isdnctrl2 (Etwas verrückt, daß
das hier gleich auf die Nummer zwei springt, aber es ist in der Tat so)geändert
werden und die Portnummer um einen erhöht werden.
Suchen Sie also in dieser Datei nach der Zeile mit dem Eintrag
port=
und tragen dort die nächstgrößere Zahl ein. Bei mir
steht dort in isdnlog.isdnctrl0.options port=20011 und in isdnlog.isdnctrl2.options
port=20012.
Dateien im Verzeichnis /etc/ppp
Kopieren Sie die bereits vorhandene Datei options.ippp0 unter dem Namen
options.ippp1 (Eine genauere Beschreibung der options.ippp0 finden Sie
in einem der oberen Abschnitte). Sie müssen zwei Zeilen ändern,
die zum device und die für die IP-Nummer.
# Das Device ist für die zweite Karte ippp1
/dev/ippp1
# IP Addressen: <local>:<remote>
# Hier werden die IP-Adressen statisch zugewiesen
192.168.2.40:192.168.2.42
Die IP-Nummer für den lokalen Rechner bleibt gleich, aber der anrufende
Rechner bekommt eine andere als beim device ippp0.
Testen der Konfiguration
Zum Testen können Sie bei laufendem Rechner das ISDN-System herunterfahren
und wieder neu starten, indem Sie den Befehl /sbin/init.d/i4l restart
eingeben. Sie können dann an der Konsole und in der Datei /var/log/messages
nachsehen, ob es Probleme gegeben hat.
Besondere Konfiguration für einen Rechner, der sowohl als Einwahlrechner
als auch als Verbindungsrechner dient
Da ich schon mehrfach gefragt worden bin, wie ein Rechner zu konfigurieren
ist, der die eine ISDN-Karte nutzt, um selbst eine Verbindung zum Netz
aufzubauen und die andere, um seinerseits die einwahl zu ermöglichen,
hier ein kurzer Hinweis.
Entscheidend ist die Datei /etc/ppp/ip-up, in der das Routing gesetzt
wird. Hinweise zum Routing für den Einwahlrechner finden Sie auf dieser
Seite, Hinweise zum Routing für einen Internetserver auf der entsprechenden
Seite.
Die Grundidee ist, nur bei der ISDN-Karte, die die Verbindung zum Provider
herstellt das Routing anzupassen und bei der ISDN-Karte, auf der man sich
einwählen kann, alles so zu lassen wie es ist.
Im folgenden kommt eine Beschreibung des Grundgerüstes der Datei
/etc/ppp/ip-up, die Details müssen dann entsprechend der eigenen Rechnerkonfiguration
angepaßt werden.
#!/bin/sh
# Grundgerüst eines Skriptes ip-up für einen
# Linuxrechner, der mit einer ISDN-Karte (ippp0)
# die Einwahl in das System erlaubt
# und gleichzeitig sich mit der anderen (ippp1) selbst
# in das Internet einwählt
#
# Das Skript wird vom System standardgemäß mit folgenden
Parametern aufgerufen:
# <INTERFACE> <DEVICE> <SPEED> <LOCALIP> <REMOTEIP>"
# Definition von Variablen, die im Skript verwendet werden:
# da ip-down ein Link auf ip-up ist, muß festgestellt werden
# ob ip-up oder ip-down aufgerufen wurde.
# Unter Linux wird der Name des aufgerufenen Programms
# bzw. Skriptes als erster Parameter übergeben.
# in BASENAME wird also gespeichert, ob es sich um ip-up
# oder um ip-down handelte.
BASENAME=`basename $0`
INTERFACE=$1
DEVICE=$2
SPEED=$3
LOCALIP=$4
REMOTEIP=$5
# Hier sind einige Zeilen herausgenommen,
die in einer
# vollständigen Datei aber enthalten
sein sollten
...
# jetzt wird in einer ersten case-Abfrage festgestellt, ob als
# Interface der Daemon für die erste ISDN-Karte (ippp0),
# für die zweite ISDN-Karte (ippp1) oder das Modem (ppp0)
# gewählt ist.
case "$INTERFACE" in
# erste ISDN-Karte (zur Einwahl von außen
ippp0)
# Zweite case-Abfrage, um festzustellen, ob
ip-up
# oder ip-down aufgerufen wurde.
case "$BASENAME" in
# wenn ip-up aufgerufen wurde, dann wird die
Verbindung hergestellt
# Bei einem Einwahlrechner bleibt das Routing
hier unverändert.
ip-up)
;;
# Am besten ebenfalls leer lassen
ip-down)
;;
*)
# Diese Stelle des Skriptes
sollte eigentlich niemals erreicht werden
;;
esac
# Ende der zweiten case-Abfrage
;;
# zweite ISDN-Karte mit der Verbindung zum Provider hergestellt
# wird. Unterschied zu oben: Das Routing muß hierbei konfiguriert
# werden.
ippp1)
# Zweite case-Abfrage, um festzustellen, ob
ip-up
# oder ip-down aufgerufen wurde.
case "$BASENAME" in
# Hier wird jetzt beim Verbindungsaufbau das
Routing gesetzt.
ip-up)
# Hier wird das Routing
gesetzt
...
;;
ip-down)
# Beim Verbindungsabbau
das Routing wieder auf die
# Ausgangswerte setzen
...
;;
*)
;;
esac
# Ende der zweiten case-Abfrage
;;
ppp*)
# Hier ggf. Kommandos für die Modemeinwahl
einfügen
;;
*)
# Auch diese Stelle dürfte eigentlich nie
erreicht werden.
;;
esac
# Ende der ersten case-Abfrage
6 Sonstige allgemeine Systemeinstellungen
Wenn Sie die Wahl haben, sollten Sie immer eine Authentifizierung per CHAP
verlangen, da dies ein zweiseitiges Verfahren ist und etwas höhere
Sicherheit bietet. Sie benötigen dann eine Datei /etc/ppp/chap-secrets.
Wenn Authentifizierung per CHAP verlangt wird, muß auf beiden
Rechnern eine Datei /etc/ppp/chap-secrets vorhanden sein. Dort werden jeweils
in einer Zeile server, client und ein Paßwort festgehalten, mit dem
sich die Systeme gegenseitig bekanntmachen. Da CHAP zweiseitig ist, d.h.
der Client meldet sich beim Server an und umgekehrt, hat die Datei auf
beiden Rechnern das nachfolgend beschriebene Aussehen. Die Namen für
Client und Server entsprechen üblicherweise den jeweiligen Hostnamen,
müssen aber wohl nicht; im dargestellten Beispiel verwende ich ppp_client
für den Rechner, der anruft und ppp_server für den Rechner, der
angerufen wird. Interessant ist, daß wohl bei Einwahl per Modem auch
die IP-Nummer angegeben werden muß. Ich erlaube im folgenden alle
IP-Nummern und trage deshalb einen Stern am Ende jeder Zeile ein.
# /etc/ppp/chap-secrets
# server client secret
ppp_server ppp_client verratichnicht
*
ppp_client ppp_server verratichnicht
*
Das routing auf dem Einwahlserver ist sehr einfach, es gibt dort nur
die lokale Netzkarte und das default-Gateway des Netzes (in unserem Fall
wieder ein Gateway).
#
# /etc/route.conf
#
# wird gelesen von /sbin/init.d/route.
#
# loopback-device
127.0.0.0
0.0.0.0
255.255.255.0
lo
# Ethernetz-Karte, die mit dem lokalen Netz verbunden ist
192.168.2.0
0.0.0.0
255.255.255.0
eth0
# default-route zeigt auf das gateway im Netz
default
192.168.1.1
Das routing für das Modem und die ISDN-Karte wird automatisch geregelt,
insbesondere der Eintrag proxyarp in /etc/ppp/options ist hier wichtig!
7 Sicherheitsaspekte
Die beschriebene Lösung ist aus Sicherheitsaspekten insbesondere für
die Modemeinwahl nicht ganz unproblematisch, da Benutzer dort von außen
ein Programm (pppd) mit root-Rechten ausführen können. Im vorliegenden
Fall ist das nicht weiter wild, da der Rechner selbst kein Arbeitsplatzrechner
ist, sondern nur für die Einwahl eingerichtet ist und sich Hacker
sowohl den Einwahlnamen, Passwort und die Gruppenzugehörigkeit erschleichen
müßten. Im schlimmsten Fall muß der Rechner wieder neu
eingerichtet werden.
Für öffentlich zugängliche Lösungen sollte das
eigentliche Netz durch ein Firewall o.ä. Sicherheitsmaßnahmen
abgeschirmt werden. Eine vollwertige Workstation mit wichtigen Daten würde
ich so nicht einrichten.
Ein Hinweis noch für Nutzer von Windows, die sich per DFÜ-Netzwerk
auf den Linux-Server einwählen. Dort sollte in den Netzwerkeinstellungen
unter ->Servertyp->TCPIP Einstellungen das "Standard-Gateway im Remote-Netzwerk
verwenden" aktiviert sein, andernfalls ist zwar ein ping, telnet und ftp
vom Linux zum Windows möglich, andersherum allerdings nicht (Danke
für den Hinweis an Jörg Niemeyer).
|