Marco Burmeister

  private Homepage



Einrichtung eines Dial-out-Servers mit pppd unter SuSE Linux 7.3

(Dokument befindet sich stets im Beta-Stadium.)

Seite ist auf Bewährung:
Diese Seite ist schon länger nicht mehr inhaltlich aktualisiert worden.
Der Inhalt scheint mir inzwischen größtenteils nicht mehr benötigt zu werden.

Ein Linux System kann auch als Router für Internet-Zugänge aus dem eigenen Netz dienen. Wenn dies mittels Einwahlverbindung geschieht, die bei jedem Zugriff ggfs. neu aufgebaut wird, so spricht man von Dial-on-Demand. Dieses Dokument beschreibt eine mögliche Konfiguration eines solchen Routers unter SuSE Linux 7.3 unter Verwendung von pppd (ohne diald).

Die Seite ist in die folgenden Bereich eingeteilt:

Hinweis:
Die Nutzung der hier geschilderten Anleitung geschieht auf eigene Gefahr!




top Erklärung

Schematische Darstellung Der folgende Text erläutert die Installation eines Dial-on-Demand bzw. Dial-out - Servers auf Basis eines Modems. Als Provider für die Einwahl dient in diesem Beispiel T-Online.

Jede Anfrage von Rechnern aus dem Netz, die nicht in das eigene Netz gehören, wird durch diesen Dial-out-Server nach der Einwahl beim Provider in das Internet geleitet.

Die folgende schematische Darstellung verdeutlicht das Prinzip.

top Technischer Ablauf (stark verkürzte Darstellung)

Eine Anfrage, die den Linux-Dial-Out-Server (Linux-Router) erreicht (vom LAN oder local vom Server), die eine IP-Adresse anfordert, die nicht zum eigenen LAN gehört, wird an das Dummy-Device ppp0 (Modem) weitergeleitet. Daraufhin wird der PPP-Daemon aktiviert, welcher sich beim Provider einwählt und eine vom Provider eine dynamische IP-Adresse erhät. Nach dem erfolgreichen Verbindungsaufbau wird die Anfrage an das Internet weitergeleitet.

Der Einsatz vom Masquerading ermöglicht es zum Beispiel einem Unternehmen, daß alle Benutzer nach außen mit einer IP-Adresse im Internet Surfen. Der außenstehende kann also nicht wissen, wieviele oder welcher Rechner aus dem Netzwerk die Daten aus dem Internet abfragen. Intern wird durch das Masquerading jedem Rechner das Daten-Paket zugeschickt, daß er auch angefordert hatte.

top Voraussetzungen

Ich gehe davon aus, daß ein lauffähiges SuSE Linux 7.3 inklusive erfolgreich konfigurierter Netzwerkanbindung vorliegt!

Das Masquerading (NAT = network address translation) und die Installation und Konfiguration sind jetzt Bestandteil dieses Dokumentes und am Ende zu finden.

Des weiteren gehe ich davon aus, daß grundlegende Linux-Kenntnisse vorhanden sind.

Programmversionen:



top Einstellungen im Kernel

Die folgenden Einstellungen im Kernel sollten aktiviert und anschließend das Kernel neu übersetzt werden. Bei den Netzwerkkarten ist entsprechend der eingebauten Netzwerkkarte die richtige Einstellung zu treffen.

top Einstellungen im SuSE Linux 7.3

Nach der Installation des PPP-Paketes und der Beispiel-Datei für PPP (ppp-nt und pppd)aus der SuSE-Distribution, gibt es im Verzeichnis etc ein Unterverzeichnis ppp.

In dem Verzeichnis /etc/ppp sind die folgenden Dateien zu bearbeiten bzw. zu erstellen:

Datei Beschreibung
pap-secrets In eine Zeile den Benutzernamen (Login-Namen), dann ein '*' und zum Schluß das Paßwort, durch ein [TAB] getrennt, eingeben.

Da diese Datei Paßworte enthält, sollte nur der Benutzer root Zugriff auf sie haben!
ppp.chat Die Datei ppp.chat ist neu anzulegen, kann aber auch ein Link auf eine bestehende Datei darstellen.
Sie dient später der eigentlichen Verbindungsaufnahme beim Provider, also T-Online.

Vor der Benutzung ist der Eintrag [3 Plus-Zeichen] durch drei echte Plus-Zeichen zu ersetzen. Die umständliche Schreibweise rührt daher, daß mein FTP-Programm beim Vorhandensein dieser Zeichen, diese HTML-Seite nicht uploaden wollte und die Verbindung zum Provider beendete. Ferner ist eventuell der Initialisierungsstring an das verwendete Modem anzupassen.

TIMEOUT 90
ABORT "NO CARRIER"
ABORT BUSY
ABORT "NO DIALTONE"
ABORT ERROR
"" [3 Plus-Zeichen]\dATZ
OK \dATm0l0S10=100
OK \dATDT0191011
TIMEOUT 60
CONNECT 

ip-up Die Datei ip-up kann um die u.a. Eintragungen ergänzt werden.
Damit ist es möglich zu protokollieren, wann eine Verbindung in das Internet eröffnet wurde. Desweiteren wird die Uhrzeit mit einem Zeitserver im Internet synchronisiert, damit der Server die aktuelle Uhrzeit erhält.

ppp*)
    # Analog-PPP, add commands as you need...
    case "$BASENAME" in
    ip-up)

        # Diallog
        /etc/ppp/diallog WAHL
        # Zeit sychronisieren
        /etc/ppp/zeitserver &
[...]
    ip-down)
        # Diallog
        /etc/ppp/diallog AUFL		

ip-down Die Datei ip-down ist ein symbolischer Link auf die Datei ip-up.
options Wenn nicht vorhanden sollte diese Datei erstellt werden. Es werden hiermit Parameter an den PPP-daemon übergeben.

  • Der Parameter idle steht für die Zeit, die die Verbindung zum Provider aufrechterhalten wird, auch wenn keine Daten über die Leitung gehen. Steht der Parameter z.B. auf 500, so wird die Leitung zum Provider beendet, wenn 500 Sekunden lang keine Daten über die Leitung gehen.
  • demandDer Parameter bewirkt, daß das Programm pppd nach dem Starten als Daemon agiert und auf seine Aktivierung im Hintergrund wartet.
  • defaultrouteSetzt die Standard Netzwerkroute auf das Dummy-Netzwerk-Device ppp0, damit alle unbekannten Anfragen an das Modem und damit an den pppd-Daemon weitergeleitet werden.
  • 192.168.1.240:192.168.1.240 IP-Adresse für das Dummy-Device (Lokale IP-Adresse und IP-Adresse des Providers). Es sollte eine IP-Adresse sein, die nicht im lokalen Netz vorkommt (z.B. DNS-Server des Providers).
Weitere Parameter sind in der Man-Page zu PPP zu finden.
Weitere empfehlenswerte Einstellungen:

ipcp-accept-local
ipcp-accept-remote
noauth
crtscts
lock
modem
asyncmap 0
nodetach
lcp-echo-interval 30
lcp-echo-failure 4
idle 600
noipx
demand
defaultroute
192.168.1.240:192.168.1.240
connect "/usr/sbin/chat -v -f /etc/ppp/ppp.chat"
/dev/modem 115200

(Die genaue Bedeutung bitte ich der Man-Page zu entnehmen.)

Nun sind im Verzeichnis /etc/init.d das folgende Startscript für den pppd_start und entsprechende symbolische Links zum Aufruf des selben zum Startzeitpunkt des Systems in den Verzeichnissen rc*.d zu erstellen:

Datei Beschreibung
pppd_start  Diese Datei sorgt dafür, daß der pppd-Daemon beim Hochfahren des Systems automatisch gestartet wird. Das Dial-on-Demand ist dann einsatzbereit.
Die Rechte sind so gesetzt, daß nur der Benutzer root sie ausführen kann.

    pppd > /dev/null 2>&1

Als letztes ist im Verzeichnis /etc in der folgende Konfigurationsdatei der aufgeführte Eintrag entsprechend zu setzen:

Datei Beschreibung
rc.config Der Eintrag sorgt dafür, daß die Datenpakete, die das Wählen angestoßen haben, auf das neue Interface umgelenkt werden.

IP_DYNIP=yes

Darüber hinaus sollte der Nameserver (IP-Adresse: 194.25.2.129) von T-Online im Linux-System definiert werden. Das sollte am besten mit dem Tool yast geschehen.

top Installation und Konfiguration der Firewall und des Masquerading

Die folgenden Pakete sollten installiert sein:

Im Verzeichnis /etc/rc.config.d befindet sich nun eine Konfigurationsdatei namens firewall2.rc.config. Diese Datei ist eigentlich selbsterklärend. Nach der erfolgreichen Konfiguration kann der Rechner neu gestartet werden und die Firewall ist einsatzbereit. Gleichzeitig ist damit das Masquerading ebenfalls eingerichtet.
Für eigene speziellere Ergänzungen bietet sich die Konfigurationsdatei firewall2-custom.rc.config an.
Beispielkonfigurationen und weitere Anleitungen sind im Verzeichnis /usr/share/doc/packages/SuSEfirewall2 zu finden.

top Protokollieren der Verbindungsaufnahme zum Provider

Im Verzeichnis /etc/ppp sind in der Datei ip-up (ip-down) in Abhängigkeit vom verwendeten Device im Bereich ppp* oder ippp* die folgenden Einträge zu ergänzen:

Der Quelltext des o.g. Skripts findet sich in der folgenden Tabelle:

Datei Beschreibung
diallog Das u.a. Skript schreibt in die Datei /var/log/diallogging.log die Informationen, wann der Dial-On-Demand - Mechanismus einen Verbindungsaufbau zum Provider durchgeführt hat. Dafür muß dem Skript für den Benutzer und die Gruppe root bzw. dialout die Ausführungsberechtigung gegeben werden.

Protokolliert wird nur der Zeitpunkt (Uhrzeit und Datum) an dem eine Verbindung zum Provider etabliert wurde und wann diese wieder getrennt wurde.

#!/bin/sh
#
# Skript loggt die Telefonwahl aus meinem System
# Ziel: Kontrolle, wann rausgewaehlt wurde und wann
#       Telefon wieder aufgelegt wird.
#
# (c) Marco Burmeister
#

PARAMETER=$1
FILEDIALLOG=/var/log/diallogging.log

case "$PARAMETER" in

WAHL)
        anzzeil=`cat $FILEDIALLOG | wc -l`
        if (( $anzzeil > 1000 ))
        then
                mv $FILEDIALLOG $FILEDIALLOG.old
        fi
        echo . >> $FILEDIALLOG
        echo "Rechner:" $HOSTNAME "waehlt am:" `date` >> $FILEDIALLOG
        ;;
AUFL)
        echo "Rechner:" $HOSTNAME "legt auf:" `date` >> $FILEDIALLOG
        echo . >> $FILEDIALLOG
        ;;
esac
exit 0

top Dateirechte

Die folgende Liste zeigt, welche Rechte die Dateien haben sollten, damit ein problemloser Betrieb gewährleistet werden kann:


/etc/ppp
drwxr-x---   6 root     root         1024 Aug  2 22:43 .
drwxr-xr-x  27 root     root         4096 Aug  3 21:51 ..
lrwxrwxrwx   1 root     root           11 Apr 21 22:44 default -> ppp.chat
-rwxr-x---   1 root     root          477 Jun 11 19:47 diallog
lrwxrwxrwx   1 root     root            5 Apr 21 16:07 ip-down -> ip-up
-rwxr-x---   1 root     root         4812 Jun 11 19:16 ip-up
-rw-r-----   1 root     root         6392 Apr 22 10:31 options
lrwxrwxrwx   1 root     root            7 Apr 21 22:42 options.ppp0 -> options
-rw-------   1 root     root          301 Aug  9  1999 pap-secrets
-rw-r-----   1 root     root          141 Aug  9  1999 ppp.chat
-rwxr-x---   1 root     root         4812 Jun 11 19:16 zeitserver

/etc/init.d
drwxr-xr-x  11 root     root         2048 Jun  9 20:45 .
drwxr-xr-x   5 root     root         3072 Jun 25 22:42 ..
-rwxr-----   1 root     root          542 Apr 21 21:25 pppd_start

/etc/rc.config.d		(nur Firewall-Konfiguration)
drwxr-xr-x   3 root     root         1024 Jul  2 21:36 .
drwxr-xr-x  27 root     root         4096 Aug  3 21:51 ..
-rw-r-----   1 root     root        17548 Jul  2 21:36 firewall2.rc.config
-rw-r-----   1 root     root        17548 Jul  2 21:36 firewall2-custom.rc.config

top Einstellungen beim Client im eigenen Netz (LAN)

Der Linux-Dial-Out-Server muß als Default-Gateway mit seiner IP-Adresse eingetragen sein.

top Zeitserver für das interne Netz

Um den Router auch als Zeitserver (NTP-Server) für das interne Netzwerk zu nutzen, müssen nur die u.a. Zeilen in die Datei ip-up eingetragen werden (siehe oben). Außerdem muss der xntp-Daemon installiert sein (Standard-Konfiguration nach Installation ist ausreichend). Um den NTP-Daemon zu aktivieren muss der Parameter START_XNTPD="yes" in der /etc/rc.config gesetzt werden.


    # Zeit sychronisieren
    /etc/ppp/zeitserver &

Skript zeitserver

    # Zeit sychronisieren
    sleep 10
    # Zeitserver stoppen
    /etc/init.d/xntpd stop
    # Uhrzeit setzen (es kann auch ntpdate verwendet werden)
    /usr/sbin/netdate -v ptbtime2.ptb.de
    /sbin/clock -w
    # Zeitserver starten
    /etc/init.d/xntpd start

Skript zeitserver.sh - Variante 2

    # Uhrzeit setzen
    /usr/sbin/ntpdate -bsvu ptbtime2.ptb.de
    /sbin/hwclock --systohc    

Dann wird der Einwahlrouter bei jeder Einwahl die eigene Rechner-Uhrzeit mit der Atomuhr der Physikalisch-Technischen Bundesanstalt abgleichen. Es ist anzuraten einen Zeitserver in der näheren eigenen Umgebung zu suchen, da dann auch die Uhrzeit schneller abgeglichen werden kann.

Update vom 06.10.2007 / 17.10.2007:
In der Zeitschrift c't aus dem Heise Verlag wurde in Ausgabe 20/2007 (erschienen am 17.09.2007) auf Seite 158 im Hotline Artikel "Öffentliche Zeitquellen" sowie in Ausgabe 22/2007 (erschienen am 15.10.2007) auf Seite 202 im Hotline Artikel "Genaue Zeit für alle" , berichtet daß die Physikalisch-Technischen Bundesanstalt zwar noch jedermann den Zugriff auf ihre NTP-Server geben möchte, dieses aber via email Benachrichtigung bei Aufnahme des Betriebs anzuzeigen sei.
Informationen und Verweise zu öffentlichen NTP-Servern sowie Hintergrundinformationen sind im Artikel "Zeit-Abgleich" bei heise Netze zu finden. Frei zugängliche NTP-Server sind auch beim NTP-Projekt selbst unter dem Stichwort Pool-Server erfaßt.


Damit hat zwar der Router die aktuelle Uhrzeit, aber noch nicht der Client. Unter Windows 2000 muß dafür eine Batch-Datei erstellt mit folgendem Inhalt erstellt werden:

    @echo off
    net time [Name Einwahlrouter] /set /yes

Der String [Einwahlrouter] ist durch den Rechnernamen in der Form \\einwahlroutername zu ersetzen. Diese Batch-Datei kann in der Autostart bei jedem Rechnerstart aufgerufen werden und gleicht dann die Uhrzeit des Client mit der des Einwahlrouters ab.

top Links zum Thema Dial-on-Demand

Hinweis:
Für die Richtigkeit der Daten übernehme ich keine Gewähr!
Für den Inhalt von Internet-Seiten, auf die von dieser Seite verwiesen wird, übernehme ich keine Verantwortung!