Dieses Handbuch wird mit freundlicher Genehmigung von Sebastian Hetze auf den Servern der Linux Information Systems AG gehosted.

next up previous contents index
Next: Die Installation von Linux Up: Datenreisen und reisende Daten Previous: Der Newsreader tin

Subsections


Das Point-to-Point-Protokoll (PPP)

  

Angesichts der steigenden Verbreitung der Internetdienste und der breiteren Verfügbarkeit von Einwählknoten in das Internet stellen wir hier eine Möglichkeit vor, mit der Welt des Cyberspace in Kontakt zu treten. Dieser Abschnitt ist eine kurze Einführung in PPP[*] und soll eine minimale Lösung zur Anbindung ans Internet anbieten.

Binden Sie Ihren Rechner mit PPP in das Internet ein, so wird er für die Dauer der Verbindung ein Teil dieses Netzes. Das bedeutet, daß ebenso, wie Sie andere Rechner mit den entsprechenden Tools erreichen können, auch Ihr Rechner für andere erreichbar ist. Deshalb darf auf keinen Fall eine Sicherheitsüberprüfung Ihres Systems versäumt werden. Das wichtigste ist, sicherzustellen, daß alle auf Ihrem System verfügbaren Accounts durch Paßwörter geschützt sind. Ein weiteres, oft übersehenes Sicherheitsloch ist das Vermischen von Programmen, die zur Verwendung mit dem Shadow-Password-System gedacht sind, mit solchen, die ohne diese Erweiterung funktionieren. Falls Sie also auf Ihrem Rechner Shadow-Password verwenden, stellen Sie sicher, daß in /etc/passwd in allen Paßwortfeldern ein * eingetragen ist.

Wenn in einem Netzwerk wie dem Internet Hunderttausende von Rechnern verbunden sind und klaglos zusammenarbeiten sollen, so erfordert das ein hohes Maß an Disziplin von allen Systemverwaltern. Durch Ihr Linux-System und seine Fähigkeit, sich in diese heterogene Netzwerkumgebung einzufügen, obliegt Ihnen nun die Aufgabe, Ihr System verantwortungsvoll zu warten und Mißbrauch des Internets von Ihrem System aus zu verhindern. Jeder Systemverwalter ist für sein System und die Benutzer seines Systems verantwortlich.

Voraussetzungen

Die andere Seite

Zur Teilnahme am Internet gehören immer zwei. Finden Sie also Ihren Partner, der bereit ist, seine Internetverfügbarkeit an Sie weiterzugeben. Von ihm bekommen Sie:

eine IP-Adresse
Sie ordnet den Rechner in das Netzwerk ein. Über die IP-Adresse wird der Rechner weltweit identifiziert und kann mit dieser Adresse von anderen Rechnern aus angesprochen werden. Die IP-Adresse ist eine aus vier Bytes zusammengesetzte Zahlenkombination, deren einzelne Bytes durch Punkt getrennt sind. Die IP-Adresse meines Rechners ist z. B. 193.98.158.2. Da jeder der vier Adreßteile durch ein Byte dargestellt wird, liegt jeder Teil zwischen 0 und 255. Eine Adresse 261.0.194.11 kann es deshalb nicht geben, da 261 nicht durch ein Byte dargestellt werden kann.

IP-Adressen sind ein sehr empfindlicher Teil des Internets. Verwenden Sie nur IP-Adressen, die Ihnen auch wirklich zugeteilt wurden. Es darf im Internet keine zwei verschiedenen Rechner mit derselben IP-Adresse geben.

einen DNS-Domain-Namen
Er dient in erster Linie der Zuordnung Ihres Rechners in einen Verwaltungsbereich und ist eine besser zu merkende Bezeichnung als die IP-Adresse.

einen Hostnamen
In Verbindung mit dem DNS-Domain-Namen ergibt sich daraus der FQDN (Fully Qualified Domain Name) Ihres Rechners. Lautet der Domain-Name z. B. ,,IN-Berlin.DE`` und Ihr Hostname ,,caesar``, so ergibt sich daraus der FQDN ,,caesar.IN-Berlin.DE``. DNS ist der ,,Domain Name Service``. Er stellt lediglich ein Übersetzungssystem dar, das FQDNs in IP-Adressen übersetzt, da sich der Name eines Rechners wesentlich einfacher merken läßt als eine IP-Adresse und gleichzeitig auch etwas über die Zugehörigkeit eines Rechners zu einem größeren Verbund aussagt.

einen Benutzernamen
Das ist der Name, mit dem Sie sich bei Ihrem ,,Nachbarn`` anmelden müssen. Ein Un*x-System zeigt sich grundsätzlich sehr ,,verschlossen``, und der einzige Unterschied zwischen einem normalen Shell-Account und einem PPP-Zugang besteht für das System, das Sie anrufen, in dem ,,Kommandointerpreter``, den es für Sie startet. Statt der tcsh oder bash steht in der Paßwortdatei dann eben der pppd. Zu dem Benutzernamen gehört meistens auch noch ein Paßwort. Allerdings bietet das PPP selbst auch noch die Möglichkeit zu ,,intimen`` Fragen, so daß bei einem PPP-Zugang oft kein Paßwort nötig ist.

Die treibende Kraft im Kern

Unter Linux ist das PPP in zwei Teile aufgeteilt. Ein Teil befindet sich im Kernel und ist ein Low-Level HDLC-Treiber, der die Bereitstellung der Daten und deren Interpretation vornimmt. HDLC steht für ,,High-Level Data Link Control Protocol`` und definiert das Format, in das die Datenpakete gebracht werden müssen, um zur Gegenseite verschickt werden zu können. Mit HDLC können nicht nur IP-Pakete, sondern auch alle möglichen anderen Netzwerkpakete, wie z. B. Novell- oder LAN-Manager-Pakete, verschickt werden. Dieser Treiber muß nicht besonders konfiguriert werden, er muß nur in den Kernel eingebunden sein. Dies kann entweder beim Übersetzen des Kernels geschehen, oder er kann zur Laufzeit als Modul nachgeladen werden (Siehe insmod). Es läßt sich leicht überprüfen, ob der PPP-Treiber im Kernel enthalten ist. Das Kommando cat /proc/net/dev sollte ungefähr folgende Ausgabe liefern:

livius:~# cat /proc/net/dev 
Inter-|   Receive                  |  Transmit                   
 face |packets errs drop fifo frame|packets errs drop fifo colls carrier
    lo:      0    0    0    0    0        0    0    0    0     0    0
  ppp0:      0    0    0    0    0        0    0    0    0     0    0
  ppp1:      0    0    0    0    0        0    0    0    0     0    0
  ppp2:      0    0    0    0    0        0    0    0    0     0    0
  ppp3:      0    0    0    0    0        0    0    0    0     0    0
livius:~# _

Werden die mit ppp beginnenden Zeilen nicht ausgegeben, so ist in dem Kernel kein PPP-Treiber vorhanden. Übersetzen Sie den Kernel neu, oder laden Sie das PPP-Modul in den Kernel.

Der gute Geist

  Der zweite für die Funktion von PPP unabdingbare Teil ist ein Daemon, der pppd. Dieser Daemon übernimmt die Authentifizierung, die Konfiguration der Leitung und des Kernel-Treibers. Er trägt die Netzwerk-Routen in die Routing-Tabelle im Kernel ein, konfiguriert das entsprechende PPP-Device auf Ihre IP-Adresse und überwacht das Bestehen der Verbindung. Falls die Telefonverbindung zusammenbricht, löscht er automatisch die Routen, dekonfiguriert das PPP-Interface und gibt die Schnittstelle wieder frei.

Das Vorspiel

Zwischen Ihrem ,,anderen Ende`` und Ihnen liegt noch etwas, das besonderer Behandlung bedarf: die Telefonleitung und die Modems. Der Aufbau der physikalischen Verbindung zwischen den beiden Rechnern wird nicht vom pppd übernommen. Sie kann entweder mit einem Terminalprogramm, mit kermit oder mit chat aufgebaut werden. Letzteres ist im PPP-Paket enthalten und hervorragend geeignet, um das Modem zu steuern und das Login beim anderen Rechner zu überwinden. Gleichzeitig vermeidet es den Überhang an Funktionalität, der bei einem Terminalprogramm vorhanden wäre. Ein weiter Vorteil liegt darin, daß es vollständig automatisch einen Verbindungsaufbau bewerkstelligen kann und deshalb auch direkt vom pppd aus gestartet werden kann. Die Parameter, die chat erwartet, werden allen bekannt vorkommen, die schon einmal ein UUCP-System konfiguriert haben. chat erwartet nämlich nur eine Folge von Zeichenketten, die den Ablauf des Verbindungsaufbaus charakterisieren, und sendet darauf eine andere Zeichenkette als Antwort. Um von zu Hause aus den Rechner im Büro anzurufen, verwende ich folgendes Chatscript:
chat ABORT BUSY '' ATZ OK ATDP6235097 CONNECT '' ogin: ppp ord: mypass
Der Aufbau des Scriptes ist denkbar einfach. Die beiden Wörter ABORT BUSY veranlassen chat dazu, den Verbindungsaufbau abzubrechen, wenn es vom Modem die Antwort ,,BUSY`` bekommt. Diese Kombination kann mehrmals in der Kommandozeile verwendet werden; so könnte man auch noch ABORT 'NO CARRIER' und ABORT 'NO DIALTONE' in die Zeile einfügen, um noch weitere Fehlermeldungen des Modems abzufangen. Wichtig ist lediglich, daß Zeichenfolgen, die Leerzeichen enthalten und trotzdem als eine Zeichenkette interpretiert werden sollen, in einfache Anführungszeichen eingeschlossen werden müssen. Die leere Zeichenkette '' veranlaßt chat, nicht auf eine Antwort zu warten, sondern sofort die nächste Zeichenfolge der Zeile zu senden. Auf Dauer ist es umständlich, die gesamte Kommandozeile immer von Hand einzutippen, außerdem enthält sie ja auch das Paßwort für das andere System. Am einfachsten ist es deshalb, eine Datei anzulegen, die nur das Chatscript für chat enthält, und chat einfach mit chat -f Dateiname aufzurufen.

Die Konfiguration des pppd

Um die an ihn gestellten Aufgaben erfüllen zu können, braucht der pppd eine Reihe von Informationen. Ein Teil dieser Informationen kann dem Daemon in der Kommandozeile übergeben werden, den anderen holt er sich aus seinen Konfigurationsdateien, die er im Verzeichnis /etc/ppp sucht. Die Dateien options, pap-secrets und chap-secrets sowie zwei Shellscripte namens ip-up und ip-down werden vom pppd dort gesucht. Die Datei options muß vorhanden sein, auch wenn sie leer ist.

Die options-Datei

Die options-Datei ist sozusagen eine verlängerte Kommandozeile. Alle Optionen, die dem pppd in der Kommandozeile übergeben werden können, dürfen auch in der options-Datei verwendet werden. Wird sowieso nur eine PPP-Verbindung zu einem einzigen Rechner aufgebaut, was in den meisten Fällen wohl zutrifft, so können alle Optionen in die options-Datei eingetragen werden. Der Aufbau der Datei ist denkbar einfach: eine Option pro Zeile, exakt so, wie sie auch in der Kommandozeile angegeben werden kann. Beispiel:

/dev/cua0                      
38400
name livius.lunetix.de
remotename public.lunetix.de
193.98.158.8:193.98.158.12
connect chat -f /etc/ppp/chat-public
lock
modem
crtscts
defaultroute
Die erste Zeile legt die serielle Schnittstelle fest, über die die PPP-Verbindung laufen soll, die zweite die Geschwindigkeit. Mit der Option name wird der Name des eigenen Rechners angegeben, mit remotename der des Nachbarn. Die folgende Zeile enthält als erstes die eigene IP-Adresse und als zweiten Parameter, von dem ersten durch einen Doppelpunkt getrennt, die IP-Adresse des Nachbarn. In der sechsten Zeile wird dem pppd mitgeteilt, daß er den Verbindungsaufbau mit dem Programm chat bewerkstelligen soll. In der Datei /etc/ppp/chat-public befindet sich das Chatscript für chat. Um andere Programme von der seriellen Schnittstelle fernzuhalten, wird der pppd mit lock dazu gebracht, unter /var/spool/uucp ein Lockfile anzulegen. Die Optionen modem und crtscts tragen dafür Sorge, daß der pppd die DCD-Leitung des Modems überwacht, um eventuelle Verbindungsabbrüche erkennen zu können, und daß er Hardware-Handshake bei der Kommunikation mit dem Modem verwendet. Statt crtscts kann auch xonxoff oder -crtscts verwendet werden, um auf XON/XOFF Handshake zurückzugreifen. Die Option defaultroute veranlaßt den pppd, eine Standardroute für alle Netzwerkpakete zum anderen Rechner einzurichten. Diese Option ist immer dann sinnvoll, wenn der andere Rechner die einzige Verbindung zum Internet ist.

Der pppd erkennt noch eine Vielzahl anderer Optionen, die in der Manualpage pppd(8) beschrieben sind. Sie decken eine Fülle von Sonderfällen ab, sind aber in der Regel nicht notwendig. Die beschriebene Konfiguration sollte in 95% aller Fälle ausreichend sein, in denen ein einzelner Rechner an das Internet angeschlossen werden soll.

Authentifizierung via PAP oder CHAP

Zur Authentifizierung über das PAP-Protokoll ist die Datei /etc/ppp/pap-secrets notwendig. Die Datei hat einen vierspaltigen Aufbau. Die erste Spalte enthält den Namen des Clients, die zweite den Namen des Servers und die dritte das ,,Geheimnis``, auch ,,secret`` genannt. Die vierte Spalte ist optional und kann eine Liste von IP-Adressen enthalten, die das andere System verwenden darf. Wichtig ist hier die Verwendung der Begriffe Client und Server. Client ist immer der Rechner, von dem eine Authentifizierung verlangt wird, Server ist der, der die Authentifizierung fordert. Wichtig ist weiterhin, daß für jede PPP-Verbindung zwei Zeilen vorhanden sein müssen. Als Namen für Client und Server verwendet der pppd die mit name und remotename angegebenen Namen.
Eine pap-secrets-Datei für obiges Beispiel sähe so aus:

#/etc/ppp/pap-secrets
#client           #server           #Geheimnis               #Adresse
livius.lunetix.de public.lunetix.de mein_passwort_bei_public 
public.lunetix.de livius.lunetix.de publics_passwort_bei_mir

Die Authentifizierung via CHAP funktioniert exakt genauso, die Datei kann einfach kopiert werden. Der große Unterschied zwischen PAP und CHAP besteht darin, daß bei PAP nur eine Authentifizierung am Beginn der Verbindung stattfindet und daß die Geheimnisse unverschlüsselt über die Telefonleitung übetragen werden. Bei CHAP kann auch in regelmäßigen Abständen während der Verbindung eine Authentifizierung verlangt werden. Ferner werden bei CHAP die Geheimnisse verschlüsselt über die Leitung geschickt. Damit wird verhindert, daß Zugangsberechtigungen über die Telefonleitung abgehört werden können.

Die Verbindung starten

Da in der beschriebenen Konfiguration schon alle Informationen, die der pppd benötigt, in die options-Datei eingetragen wurden, muß lediglich der pppd von der Kommandozeile aus gestartet werden.

Die Verbindung beenden

Der pppd legt im Verzeichnis /var/run eine Datei namens device.pid an, in die er seine Prozeß-Id schreibt. Der Parameter device ist hierbei das PPP-Device, auf dem der Daemon läuft, also ppp0, ppp1, ppp2 oder ppp3. Beenden läßt sich die Verbindung am einfachsten mit dem Kommando: kill -INT `cat /var/run/device.pid`


next up previous contents index
Next: Die Installation von Linux Up: Datenreisen und reisende Daten Previous: Der Newsreader tin

Das Linux Anwenderhandbuch
(C) 1997 LunetIX