Marco Burmeister

  private Homepage



Einrichtung eines Dial-out-Servers mit diald unter SuSE Linux 6.2 und SuSE Linux 7.0

(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 6.2 und 7.0 unter Verwendung von 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)

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 den Daemon diald weitergeleitet. Dieser startet den PPP-Daemon und erhält dynamisch vom Provider eine IP-Adresse zugewiesen, um auf das Internet zugreifen zu können. 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 6.2 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. Hierzu ist es notwendig 3 Pakete aus den SuSE Distributionen 6.3 bzw 6.4 auch für SuSE 6.2 zu installieren.
Ist diese Vermischung nicht erwünscht kann ich leider nur noch auf meine Linkliste am Ende des Dokumentes bzw. an das sehr gute Handbuch, das der SuSE Distribution beiliegt, verweisen.

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 6.2

Nach der Installation des PPP-Paketes und der Beispiel-Datei für PPP aus der SuSE-Distribution, gibt es im Verzeichnis etc ein Unterverzeichnis ppp. Des weiteren muss das Paket diald installiert sein.

Die Konfigurationsdateien diald.conf und diald.defs aus dem Verzeichnis /etc müssen nicht verändert werden, um die erwünschte Funktionalität zu erhalten. Erst bei tieferen Kenntnissen sollten diese an eigene Bedürfnisse angepaßt werden.

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 ist neu anzulegen bzw. eine vorhandene Datei zu ergänzen.
Enthalten muß diese Datei möglichst als erste auszuführende Anweisung den u.a. Befehl zum Verbinden der Firewall mit dem Dial-Out-Interface (nur wenn Firewall eingerichtet (s.u.) und erwünscht). Wenn in der Datei nicht bereits vorhanden sollte auch die Default-Route hier auf das ppp-Device gesetzt werden.

# Firewall auf richtiges Device setzen
/sbin/SuSEfirewall
# defaultroute setzen bei Verbindungsaufbau
/sbin/route add default ppp0

ppp-down Wenn nicht vorhanden sollte diese Datei auch erstellt werden, da hiermit eine bestehende PPP-Verbindung unterbrochen werden kann. Darum sollte auch nur der Benutzer root diese ausführen können.

#!/bin/sh
#
# /etc/ppp/ppp-down
# (c) Klaus Franken, S.u.S.E. GmbH Fuerth, Germany
# 12.06.97, kfr@suse.de

DEVICE=ppp0
FILE=/var/run/$DEVICE.pid

if test -r $FILE ; then
   echo "Killing PPP: $DEVICE"

   kill -INT `cat $FILE`

   if test $? != 0; then
        echo "WARNING: stale pid file or pppd still running"
        echo "         please check by hand"
        rm -rf $FILE
        exit 1
   fi
else 
        echo "PPP not running on $DEVICE"
        exit 2
fi
exit 0

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.
Weitere Parameter sind in der Man-Page zu PPP zu finden.

idle 500

Weitere empfehlenswerte Einstellungen:

noipdefault
noauth
crtscts
lock
modem
asyncmap 0
nodetach
noproxyarp
noipx
novj
novjccomp

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

In dem neu zu erstellenden Verzeichnis /etc/ppp/diald ist die folgende Datei zu bearbeiten bzw. zu erstellen:

Datei Beschreibung
diald.options Die Datei diald.options ist neu anzulegen, kann aber auch ein Link auf eine bestehende Datei darstellen.
Sie dient später beim Aufruf von diald der Übermittlung weiterer Einstellungen, die auch beim Aufruf von diald per Kommando-Zeile übergeben werden könnten.

Vor der Benutzung ist der Eintrag [Benutzerkennung] durch die für den PPP-Zugang bei T-Online notwendige Angabe des Benutzers zu ersetzen (Infos siehe: Albert Rommel im Bereich Insider). Die Anführungszeichen sollten beibehalten werden.

# Dummy - File
# erstellt am 11.09.1999
# Options-File "diald.options"
#

# Log-File
fifo /etc/ppp/diald/diald.ctl
#
# dynamische IP-Zuweisung
dynamic
#
# Dummy-Adressen (keine Relevanz bei dynamic)
local 192.168.0.100
remote 194.25.2.129
#
# Defaultroute durch DIALD setzen (auf SLIP)
defaultroute
#
# reroute nur bei Proxys einsetzen
# reroute
two-way
give-way
#
# DIAL-Out-Skripte
connect "/usr/sbin/chat -v -f /etc/ppp/ppp.chat"
#disconnect "/usr/sbin/chat -v -f /etc/ppp/diald/hangup.chat"
#
# Device
device /dev/modem
speed 57600
#
# Modus
mode ppp
#
#
# Wahl
redial-backoff-start 25
redial-timeout 15
redial-backoff-limit 240
connect-timeout 160
dial-fail-limit 2
died-retry-count 0
#
# ppp optionen
pppd-options user "[Benutzerkennung]"

lock
modem 
crtscts

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

Datei Beschreibung
diald          Diese Datei sorgt dafür, daß der diald-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.
Die Variable START_FIREWALL sollte eigentlich durch eine nur für den diald zur Verfügung stehende ersetzt werden. Da bei meinem System aber immer beides gestartet werden soll, nutze ich diese Variable auch an dieser Stelle.


#! /bin/sh
#

. /etc/rc.config

test "$START_FIREWALL" = "yes" || exit 0

case "$1" in
    start)
        echo -n "Starting DIALD services."

# alte Netzwerkinterface beseitigen
# (bei Problemen mit dem zweiten Waehlen, nach erstem disconnect)
        echo -n "    "
# SuSE Linux 6.2
        ifconfig sl0 down
# SuSE Linux 7.0
#  	    ifconfig tap0 down		

# diald starten
        /usr/sbin/diald -f /etc/ppp/diald/diald.options
        echo
        ;;
    stop)
        echo -n "Shutting down DIALD services."
        echo
        ;;
    *)
        echo "Usage: $0 {start|stop}"
        exit 1
esac

exit 0

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

Zunächst sind die folgenden Pakete aus dem Bereich Download->Updates der SuSE Homepage für die SuSE Distributionen 6.3 oder 6.4 zu besorgen und zu installieren:
     - firewals.rpm
     - ipchains.rpm
     - ipfwadm.rpm
Insbesondere das Firewall-Paket ist wichtig, da bei meiner SuSE 6.2 das vorhandene Paket nicht so wollte, wie ich.

Im Verzeichnis /etc/rc.config.d befindet sich nun eine Konfigurationsdatei namens firewall.rc.config. Diese Datei ist eigentlich selbsterklärend. Nach der erfolgreichen Konfiguration kann der Rechner neu gestartet werden und die (rudimentäre) Firewall ist einsatzbereit. Gleichzeitig ist damit das Masquerading ebenfalls eingerichtet.

An anderen Stellen dieses Dokumentes findest Du die Hinweise, was bei der Konfiguration der Firewall noch zu beachten ist. So muß z.B. in der Datei /etc/ppp/ip-up ein Eintrag eingefügt werden, damit die Firewall beim Aufbau der PPP-Verbindung aktualisiert wird.

WICHTIG: Es erscheinen einige Fehlermeldungen beim Start, die aber normalerweise zu ignorieren sind, da die Firewall sich nur beschwert, daß das Dial-Out Interface noch nicht aufgebaut ist (kann ja auch nicht, da noch keine Wahl in das Internet erfolgen soll).

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

case "$PARAMETER" in

WAHL)
        echo . >> /var/log/diallogging.log
        echo "Rechner:" $HOSTNAME "waehlt am:" `date` >> 
/var/log/diallogging.log
        ;;
AUFL)
        echo "Rechner:" $HOSTNAME "legt auf:" `date` >> 
/var/log/diallogging.log
        echo . >> /var/log/diallogging.log
        ;;
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
drwxr-xr-x   2 root     root         1024 Aug  2 22:45 diald
-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
-rwxr-xr-x   1 root     root          527 Aug 28  1999 ppp-down
-rwxr-xr-x   1 root     root          747 Apr 21 22:58 ppp-up
-rw-r-----   1 root     root          141 Aug  9  1999 ppp.chat

/etc/ppp/diald
drwxr-xr-x   2 root     root         1024 Aug  2 22:45 .
drwxr-x---   6 root     root         1024 Aug  2 22:43 ..
-rw-r-----   1 root     root          748 Apr 22 13:44 diald.options

/sbin/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 diald

/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 firewall.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 (gleich unter die anderen Anpassungen).


    # Zeit sychronisieren                                                   
    /usr/sbin/netdate -v ptbtime2.ptb.de                                    
    /sbin/clock -w

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!