27.7PPP-Grundlagen
Das Point-to-Point Protocol (PPP) ermöglicht eine TCP/IP-Verbindung zwischen zwei Rechnern über eine serielle Verbindung. PPP kam in der Vergangenheit bei der Verwendung von Analog- und ISDN-Modems zum Einsatz. Für ADSL- und UMTS-Modems sowie für VPNs mit PPTP spielt PPP bis heute eine wichtige Rolle. Dieser Abschnitt fasst daher einige Grundlagen rund um PPP zusammen. Die Informationen sind vor allem dann relevant, wenn Sie eine PPP-Verbindung manuell konfigurieren müssen, was in der Praxis glücklicherweise nur ganz selten notwendig ist.
Unter Linux ist der PPP-Dämon pppd für die PPP-Verbindung verantwortlich. Dieses Programm kann grundsätzlich sowohl als Client als auch als Server eingesetzt werden – hier geht es aber ausschließlich um die Client-Variante.
Bei ADSL-Verbindungen kommt zumeist eine der drei folgenden pppd-Erweiterungen zum Einsatz:
-
PPPoE: Point-to-Point Protocol over Ethernet ist ein öffentlich dokumentiertes Protokoll, das im RFC 2516 beschrieben ist. Sein Hauptnachteil besteht darin, dass es die maximale Länge von IP-Paketen einschränkt (MTU-Problem, siehe Abschnitt 27.9, »ADSL-Interna«).
-
PPPoA: Point-to-Point Protocol over ATM ist eine Alternative zu PPPoE. ATM steht dabei für Asynchronous Transfer Mode.
-
PPTP: Das Point-to-Point Tunneling Protocol ist ein von Microsoft definiertes bzw. aus anderen Standards weiterentwickeltes Protokoll, das ebenfalls öffentlich dokumentiert ist (RFC 2637). Seine ursprüngliche Aufgabe bestand darin, Virtual Private Networks zu ermöglichen. Aufgrund bekannter Sicherheitsprobleme sollte der Einsatz von PPTP aber vermieden werden.
Am Beginn des PPP-Verbindungsaufbaus steht immer die Authentifizierung: Ihr Rechner muss sich also beim Internet-Provider mit einem Login-Namen und einem dazugehörenden Passwort anmelden. Hierfür gibt es zwei Verfahren: PAP und CHAP.
CHAP unterstützt wiederum zahllose Varianten (z.B. MS-CHAPv2), die das Verfahren sicherer machen.
-
PAP: Beim Password Authentication Protocol überträgt der Client den Login-Namen und das Passwort zumeist unverschlüsselt.
-
CHAP: Beim sichereren Challenge Handshake Authentication Protocol initiiert der Server die Authentifizierung und sendet ein sogenanntes Challenge-Paket an den Client. pppd verwendet diese Daten, um aus seinem Passwort einen Hash-Wert zu berechnen. pppd sendet dann den Login-Namen und den Hash-Wert zurück an den Provider. Auf diese Weise wird vermieden, dass das Passwort selbst übertragen wird.
pppd-Konfigurationsdateien und -Scripts
/etc/ppp/options enthält globale pppd-Optionen. Diese Optionen gelten als Defaulteinstellung für alle Verbindungen, die mit pppd hergestellt werden. Um Konflikte zwischen verschiedenen PPP-Einsatzformen zu vermeiden, sollte options möglichst wenige Einstellungen enthalten. Verwenden Sie zur Optionseinstellung stattdessen die verbindungsspezifischen Dateien in /etc/ppp/peers/! Sie vermeiden damit, dass eine Option, die für die Verbindungsvariante A zutrifft, eventuell einen Verbindungsaufbau bei Variante B blockiert.
/etc/ppp/peers/name enthält verbindungsspezifische Optionen. Um pppd unter Anwendung dieser Optionen zu starten, führen Sie das folgende Kommando aus:
Einstellungen in /etc/ppp/peers/name haben Vorrang gegenüber /etc/ppp/options.
/etc/ppp/pap-secrets und chap-secrets enthalten eine Liste aller Login-Namen und Passwörter für die PAP- bzw. CHAP-Authentifizierung. Wenn Sie nicht sicher sind, ob die Authentifizierung per PAP oder CHAP erfolgt, fügen Sie denselben Eintrag einfach sowohl in pap-secrets als auch in chap-secrets ein. Sicherer und weiter verbreitet sind CHAP-Varianten (CHAP, MS-CHAP oder MS-CHAPv2). Die Einträge für Client-Verbindungen sehen so aus:
Statt des * zwischen dem Login-Namen und dem Passwort kann die IP-Adresse des PPP-Servers angegeben werden, zu dem die Verbindung hergestellt werden soll. In diesem Fall gilt die Passwortinformation nur für diese IP-Adresse. Das ist ein zusätzlicher Schutzmechanismus gegen missbräuchliche Verwendung, der aber nur möglich ist, wenn die IP-Adresse bekannt und unveränderlich ist.
Statt des zweiten Sterns können Sie angeben, für welche Client-IP-Adresse die Kombination aus Login-Name und Passwort gelten soll. Diese Adresse ist in der Regel unbekannt, weil der PPP-Server dem Client bei jedem Verbindungsaufbau eine andere, gerade freie Adresse zuweist. Der zweite Stern erlaubt daher beliebige Client-IP-Adressen.
Die beiden Script-Dateien /etc/ppp/ip-up und /etc/ppp/ip-down werden unmittelbar nach Herstellung der Verbindung bzw. nach deren Beendigung ausgeführt. Mögliche Anwendungen sind die Einstellung von /etc/resolv.conf sowie das Einrichten oder Verändern von Routing-, Masquerading- und Firewall-Funktionen.
An die beiden Scripts werden sechs Parameter übergeben. Der erste Parameter enthält den Schnittstellennamen (z.B. ppp0), der vierte die lokale IP-Adresse, der fünfte die IP-Adresse des PPP-Partners und der sechste die Identifikationszeichenkette der PPP-Verbindung (Option ipparam). Die Parameter zwei und drei sind ungenutzt. Wenn beim Verbindungsaufbau DNS-Adressen übertragen werden (Option usepeerdns), stehen außerdem in den Variablen DNS1 und DNS2 die beiden Adressen zur Verfügung.