Up: ../

RWF's Dialin-Anleitung für Linux (unter besonderer Berücksichtigung des FEN): Server-Variante

Textdekoration: Augen kucken über den Rand

Anforderungen

Die Server-Variante erfüllt folgende Anforderungen:

  1. Einwahl-Konfiguration systemweit
  2. Sicherheit: nur bestimmte User/Gruppe dürfen/darf Verbindung auf-/abbauen
  3. Sicherheit gegen "Schadsoftware": man kennt ja die diversen CDs und Provider, die die Einwahl-Konfiguration gaaanz toll einfach machen... die Auswirkungen sind oft folgende: es funktioniert nicht; oder: die Einwahl erfolgt (bis zur nächsten Telephonrechnung) unbemerkt über teure Telephonnummern; oder: System zerschossen... Solchen Zirkus bekommt man unter Linux zum Glück (noch) nicht, da es die Schad-Software (bisher) nur für andere Betriebssysteme gibt...
  4. Events:
    1. Automatisches Abholen/Versenden von Mail nach dem Verbindungsaufbau
    2. Diverse Dienste über Verbindungsauf-/abbau informieren: z.B. Einschalten des Online-Modus eines HTTP-Caching-Proxies (z.B WWWOffle)
  5. Skript-Fähigkeit: Verbindungsauf- und abbau per Kommandozeilen-Befehl; dadurch kann man das Ganze auch in Skripts weiterverwenden.

Konzept

Es wird der unter Linux übliche ppp-Deamon (pppd) verwendet; dieser ist weitgehend über Kommandozeilenparameter und Konfigurationsdateien parametrierbar; die Konfigurationsdateien liegen durch Dateizgriffsrechte vor den Usern geschützt im system-globalen Konfigurationsverzeichnis /etc/ppp/. Der pppd ruft bei den Ereignissen (engl. Events) "Verbindungsaufbau" bzw. "Verbindungsabbau" sogenannte Event-Scripts auf; damit lassen sich die diversen Dienste darüber informieren und z.B. der Mailversand und -Abholung automatisieren. Das Hoch- und Herunterfahren der IP-Verbindung (zum ISP, hier: FEN) erfolgt per Kommandozeilen-Befehl; Wer Lust hat, kann sich mit TCL/Tk eine graphische Oberfläche dafür klöppeln...

Implementierung

Voraussetzungen

Anmerkung: die folgenden Beschreibungen beziehen sich auf ein Linux-System, das durch eine Distribution SuSE Linux 7.2 (Mai 2001) installiert wurde; da es im Linux-Bereich derzeit größere Bestrebungen gibt, die verschiedenen Systeme zueinander noch kompatibler zu machen, sollten die Beschreibungen auf andere Distributionen übertragbar sein. Des weiteren beziehen sich manche Beschreibungen auf RPM-basierte Distributionen (RPM: Red Hat Packetmanager, das Paketmanagement-Werkzeug vieler Linux-Distributionen); daneben gibt es noch Debian- (*.deb-Pakete, Paketmanager APT, Advanced Pakage Tool) und .tar.gz-Pakete (die entsprechenden Befehle würden mich in diesem Zusammenhang interessieren, damit ich sie hier aufnehmen kann; falls sie jemand herausfinden kann, bitte melden.).

Die folgenden Pakete müssen installiert sein (die Versionsnummern sind nicht sehr ausschlaggebend):

Diese Liste läßt sich erzeugen mit dem Befehl (rpm-basierte Distributionen):

$ rpm -q --requires ppp | xargs rpm -q --whatprovides | sort -u

Ob die drei Pakete installiert sind, bekommt man heraus über den Befehl:

$ rpm -qa | grep -e glibc -e pam -e ppp

Falls nicht, diese bitte erst über das distributions-spezifische Paketmanagement-Werkzeug nachinstallieren.

Installation/Konfiguration

Die folgende Anleitung wurde damals auf SuSE-7.* verwendet und funktionierte jahrelang einwandfrei. Mit den neuesten SuSE-Distributionen (SuSE-8.0 ff.) wird ein ähnliches Konzept fertig mitgeliefert. Deswegen ist die folgende Beschreibung (zumindest was SuSE-Installationen angeht) obsolet. Ich halte sie jedoch für den interessierten Leser online.

Folgende Dateien sind vonnöten bzw. werden im Folgenden beschrieben und erstellt:

/etc/ppp/
/etc/ppp/connect-errors
/etc/ppp/peers/
/etc/ppp/peers/in/                                   # Konfigurationen eingehender IP-Verbindungen
/etc/ppp/peers/in/options
/etc/ppp/peers/out/                                  # Konfigurationen ausgehender IP-Verbindungen
/etc/ppp/peers/out/ISPs/
/etc/ppp/peers/out/ISPs/FEN/
/etc/ppp/peers/out/ISPs/FEN/Erlangen/
/etc/ppp/peers/out/ISPs/FEN/Erlangen/alt/
/etc/ppp/peers/out/ISPs/FEN/Erlangen/alt/chat        # chat-Skript fuer Modem
/etc/ppp/peers/out/ISPs/FEN/Erlangen/alt/README
/etc/ppp/peers/out/ISPs/FEN/Erlangen/alt/options     # Einstellungen fuer pppd
/etc/ppp/peers/out/ISPs/FEN/Erlangen/neu/
/etc/ppp/peers/out/ISPs/FEN/Erlangen/neu/chat        # chat-Skript fuer Modem
/etc/ppp/peers/out/ISPs/FEN/Erlangen/neu/README
/etc/ppp/peers/out/ISPs/FEN/Erlangen/neu/options     # Einstellungen fuer pppd
/etc/ppp/peers/out/ISPs/default                      # -> FEN/Erlangen/neu/options
/etc/ppp/ip-up                                       # Event-Skript
/etc/ppp/ip-up.local                                 # Event-Skript, selbst erstellt
/etc/ppp/ip-down                                     # Event-Skript
/etc/ppp/ip-down.local                               # Event-Skript, selbst erstellt
/etc/ppp/options                                     # globale Einstellungen fuer pppd
/etc/ppp/pap-secrets                                 # Authentikationsinformationen
/etc/ppp/chap-secrets                                # Authentikationsinformationen (nicht bei FEN)
/usr/bin/ppp-on                                      # Befehl zum Hochfahren der Verbindung
/usr/bin/ppp-up                                      # -> /usr/bin/ppp-on
/usr/bin/ppp-off                                     # Befehl zum Herunterfahren der Verbindung
/usr/bin/ppp-down                                    # -> /usr/bin/ppp-off

Wir holen uns einen Kommandozeilen-Prompt (an der Textkonsole oder xterm), wechseln unsere Identität zum Systemverwalter root (Minus nicht vergessen!) und erstellen die Verzeichnisse:

$ su - root
Password:               hier geheimes Passwort reindrücken
# # Sind wir root?
# id
uid=0(root) gid=0(root) groups=0(root),1(bin),14(uucp),15(shadow),16(dialout),17(audio),65534(nogroup)
#
# # Also, dann geht's los:
# # Alle Verzeichnisse unter /etc/ppp/peers/ in einem Rutsch anlegen:
# 
# mkdir -p /etc/ppp/peers/{in,out/ISPs/FEN/Erlangen/{alt,neu}}
# 
# # Erfolgskontrolle:
# find /etc/ppp/peers/ -type d
/etc/ppp/peers/
/etc/ppp/peers/in
/etc/ppp/peers/out
/etc/ppp/peers/out/ISPs
/etc/ppp/peers/out/ISPs/FEN
/etc/ppp/peers/out/ISPs/FEN/Erlangen
/etc/ppp/peers/out/ISPs/FEN/Erlangen/alt
/etc/ppp/peers/out/ISPs/FEN/Erlangen/neu
# 
# # Benutzer- und Gruppen-Eigentümerschaft festlegen:
#
# chown -R root.dialout /etc/ppp/peers/{in,out}/
#
# # Benutzer- und Gruppen-Rechte festlegen:
# # Die Gruppe others (o= Rest der Welt) geht das hier gar nichts an:
#
# chmod o-rwx /etc/ppp/peers/{in,out}/
#
# # Die Gruppe dialout muß manche Dateien lesen können
# # (und evtl. in die Verzeichnisse wechseln können),
# # braucht aber dort nichts schreiben können:
#
# chmod g+rx,g-w /etc/ppp/peers/{in,out}/
# 

Konfigurationsdateien anlegen:

# cat <<EOT >>/etc/ppp/peers/out/ISPs/FEN/Erlangen/neu/options
# RWF Sun Apr  1 22:02:32 MEST 2001:
# Vorlage: /usr/share/doc/packages/ppp/SETUP

# modem is connected to /dev/ttyS1
#/dev/modem
/dev/ttyS1

# run the serial port at this baud rate:
115200

# damit pppd in /etc/ppp/{pap,chap}-secrets den richtigen
# Account-Namen findet:
user ea1370

# Wir nehmen fuer unser Ende NICHT die lokale IP-Adresse, 
# sondern lassen uns eine vom Provider zuweisen:
noipdefault

# use the ISP as our default route
defaultroute

# Ich will sehen, welches user/secret-Paar pppd aus pap-secrets popelt:
# Achtung: nur zu Debugging-Zwecken einschalten!
#show-password

# Das connect-Skript (wickelt die Wahl des Modems und 
# Behandlung eventueller Login-Prozeduren ab):
connect '/usr/sbin/chat -v -f /etc/ppp/peers/out/ISPs/FEN/Erlangen/neu/chat'

# EOF
EOT

Das Chat-Skript für FEN:

# cat <<EO_CHAT >> /etc/ppp/peers/out/ISPs/FEN/Erlangen/neu/chat
TIMEOUT 60
ABORT "NO CARRIER"
ABORT BUSY
ABORT "NO DIALTONE"
ABORT ERROR
"" +++ATZL3
OK ATH0
OK ATX3
OK ATDT0,0193703
CONNECT ""
EO_CHAT

ATX3 und ATDT0, wird gebraucht, um meine Haustelephonanlage auf Amtsebene durchzuschalten.

Textdekoration: Baustelle
VORSICHT BAUSTELLE
Eltern haften an ihren Kindern!

© 2001 ich
Created: Don Jul 19 15:09:37 MEST 2001
Last updated: 
Mon Apr 21 21:05:04 CEST 2003
EOF