Diese Web-Seite ergänzt einen in c't 18/2001 auf Seite 187 veröffentlichen Kasten zu Linux und PPTP.
Damit Linux via PPTP mit der Außenwelt kommunizieren kann, braucht es eine ganze Reihe von Patches, die sich im Internet leider nicht an zentraler Stelle finden. Ich habe deswegen hier die Patches und ihre Bezugsquellen zusammengetragen, mit denen ich persönlich Erfahrungen gesammelt habe.
Wer ältere Kernel und PPP-Versionen nimmt, muss deutlich mehr Patches besorgen und einspielen - ich betrachte hier nur das Gespann aus Kernel 2.2 und 2.4 mit einem PPP 2.4.1. Die Korrekturen, die man für ältere Versionen zusätzlich braucht, heißen unter anderem mppe_stateless und ppp_mppe_compressed_data_fix.
Es gibt die Patches, die das für die Verschlüsselung nötige Kernel-Modul (ppp_mppe) nachrüsten, sowohl für 2.2er- als auch 2.4er-Kernel. Ich habe es nur mit den Patches für den 2.4er probiert. Die erste (ältere Version) lässt sich auch auf aktuelle 2.2er-Kernel loslassen (ich benutze 2.2.18). Lediglich das Makefile muss man von Hand nacharbeiten – dazu einfach jede Zeile, in der bsd_comp.o vorkommt ergänzen um " ppp_mppe.o" (Anführungszeichen weglassen, Leerzeichen nicht vergessen ;-)).
Patch für 2.4er Kernel alt (linux-2.4.0-openssl-0.9.6-mppe.patch)
Patch für 2.4er-Kernel neu (linux-2.4.4-openssl-0.9.6a-mppe.patch)
Hinweis: Die Patches unterscheiden sich in einem wesentlichen Punkt. Der modernere Patch sollte vor allem ein Problem beheben, das beim Einsatz von PPTP unter Linux gelegentlich auftritt, nämlich dass der PPP-Daemon trotz erzwungener Verschlüsselung Pakete nicht kodiert, sondern unverschlüsselt überträgt. Dieses Verhalten lässt sich durch große Pakete, die man durch einen PPTP-Tunnel hindurch schickt, provozieren.
Nach meiner Erfahrung funktioniert genau das aber nicht. Die einzige praktikable Lösung, die ich bisher gefunden habe, besteht darin, die Paketgrößen auf dem PPTP-Link zu begrenzen (einfach mtu und mru in die options-Datei des PPP-Daemons eintragen). Es sollen aber auch andere Lösungen existieren, die ich bisher aber nicht dingfest machen konnte.
Während man beim Kernel mit einem Patch auskommt, können je nach Einsatzzweck beim PPP-Daemon mehrere Korrekturen nötig sein. Wer die Quellen des PPP-Daemons nicht hat, findet die derzeit aktuelle Version unter anderem auf [1].
Wie beim Kernel auch braucht der PPP-Daemon grundlegende Patches, um überhaupt das für PPTP nötige Verschlüsselungsprotokoll (MPPE) zu lernen – in PPP implementiert als Kompressionsprotokoll.
Wie beim Kernel auch habe ich Erfahrungen nur mit modernen PPP-Versionen (2.4.x) gesammelt. Die Patches sind auch für ältere Versionen (2.3) zu haben – meine ersten Versuche damit sind allerdings gescheitert – und warum auch alte Versionen nehmen?
Der wichtigste Patch bringt einem aktuellen PPP-Daemon (2.4.1) außer den MPPE-Fähigkeiten auch gleich noch Microsofts Authentifizierungsprotokoll Version 2 (MSCHAPv2) näher:
ppp-2.4.1-openssl-0.9.6-mppe.patch
Weitere Patches beseitigen Fehler, zum Beispiel in der Implementierung von MS-CHAPv2:
Soll ein PPTP-Server unter Linux nur verschlüsselte Verbindungen annehmen, sollte der Patch nicht fehlen, der entsprechende Optionen für die Konfigurationsdatei (options) des PPP-Daemons ergänzt (der Patch ist eigentlich für ältere PPP-Daemonen, lässt sich aber auch auf den aktuellen anwenden):
Soll ein Linux-PPTP-Server Clients mit Windows 9x/ME bedienen,
empfiehlt sich darüber hinaus ein Patch, der die bei diesen Systemen
gelegentlich mit dem Benutzernamen übertragenen Domänen-Daten
(
Die Entwicklung von PPTP-Clients für Linux verläuft leider nicht so zentral, wie das wünschenswert wäre. Die Basis für die meisten derzeit kursierenden Entwicklungen stammt von C. S. Ananian [2]. Ich favorisiere aber einen anderen Client [3], der zusammen mit den Fähigkeiten eines aktuellen PPP-Daemons Dial-on-Demand unterstützt. Ferner ist dieser Client ohne weitere Patches auch in der Lage, Verbindungen zu unter Windows 2000 operierenden Servern aufzubauen. Die Weiterentwicklung selbst erfolgte aber mit anderer Motivation: Viele europäische ISPs benutzen für ihre DSL-Angebote PPTP statt PPOE wie hierzulande die Telekom.
Vom PPTP-Server namens PoPToP gibt es zwei Varianten. Die Version 1.01 gilt als stabil. Die meisten Installation nutzen jedoch die geringfügig weiterentwickelte Version 1.1.2. Sie hat den Vorteil, außer der Reihe abgelieferte Pakete nicht zu verwerfen, sondern wieder in die richtige Abfolge zu bringen. Besonders dann, wenn ein PPTP-Server eine asymetrische Netzanbindung hat, sollte das Vorteile haben. Beide Versionen sind auf der PoPToP-Homepage zu finden:
[1] aktuelle PPP-Versionen für Linux
ftp://ftp.samba.org/pub/ppp
ftp://linuxcare.com.au/pub/ppp
ftp://cs.anu.edu.au/pub/software/ppp/
[2] Standard-PPTP-Client für Linux
http://cag.lcs.mit.edu/~cananian/Projects/PPTP/
[3] PPTP-Client auch gegen Windows 2000 mit mit Dial-on-Demand
http://www.sphaero.org/adsl/download.html