PPTP-Tunnel (IPv4) unter Debian-Linux einrichten (Anleitung)

Aus Portunity Wiki

Wechseln zu: Navigation, Suche

Diese Anleitung zeigt Ihnen in wenigen Schritten, wie Sie unter Linux (hier: Debian) einen PPTP-Tunnel mit einer statischen IP-Adresse (IPv4) einrichten.


Inhaltsverzeichnis

Statische Routen und Firewall-Freigaben

Falls Sie statische Routen setzen oder die Verbindung zum Tunnelserver in Ihrer Firewall freischalten müssen, beachten Sie bitte die hier aufgeführten Informationen zu IP-Netzen und Protokollen.

Schritt 1: Paket installieren

Die folgenden Befehle benötigen teilweise Root-Rechte. Diese können Sie entweder erlangen, indem Sie sich als root anmelden oder "sudo" verwenden.

Zunächst wird das Paket "pptp-linux" benötigt:

apt-get install pptp-linux

Nun gibt es das Verzeichnis /etc/ppp. Hier sind die wichtigsten Config-Files für den PPTP-Tunnel:

  • Verzeichnis "peers": Die wichtigsten Zugangsdaten und Einstellungen je Tunnel
  • Verzeichnis "ip-up.d": Scripte, die beim Tunnelaufbau ausgeführt werden
  • Verzeichnis "ip-down.d": Wird beim Tunnelabbau (zusammenbruch) ausgeführt
  • Datei "chap-secrets": Zugangsdaten für die Tunnelverbindungen

Schritt 2: Grundkonfiguration - peers

Legen Sie mit einem Texteditor im Verzeichnnis /etc/ppp/peers die Datei "portunity" an – in unserem Beispiel verwenden wir vim, Sie können aber jeden anderen Texteditor verwenden.

vim /etc/ppp/peers/portunity

Inhalt: Bitte beachten Sie Wie lauten die Einwahlserver für meinen VPN-Tunnel für die Serveradresse, hier mit Platzhalter "pptp.tpX.tunneleinwahl.de" dargestellt

 ### Verbindungsziel - Portunity-Server
 pty "pptp pptp.tpX.tunneleinwahl.de --nolaunchpppd --nobuffer --timeout 10"
 
 ### PPTP-Loginname, wird im Kundencenter im Tarif angezeigt
 name tunnelXXXXX
 
 ### Nach einer Trennung automatisch neu aufbauen
 persist
 
 ### MTU muss kleiner 1500 sein, da das PPTP-Protokoll selbst ja auch Platz im Paket benötigt.
 mtu 1400
 
 ### Wird an die ip-up / ip-down-Scripte übergeben zur eindeutigen Erkennung
 ipparam portunity
 
 # Terminate after n consecutive failed connection attempts.
 # # A value of 0 means no limit. The default value is 10.
 maxfail 0 
 
 # Soll der komplette Traffic durch den Tunnel geschickt werden? Default-Route!
 # HINWEIS: Gibt es bereits eine Route im System kann diese Option diese Route
 # leider nicht überschreiben, siehe dazu bitte weiter unten
 defaultroute 
 
 #### Diverses
 remotename PPTP
 lock
 noauth
 refuse-eap
 nobsdcomp
 nodeflate
 
 ### IPv6 ermöglichen
 +ipv6
 
 #end


Nun muss das Passwort für den Tunnel noch in der Datei "chap-secrets" im Verzeichnis "/etc/ppp" hinterlegt werden.

vim /etc/ppp/chap-secrets

Inhalt:

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
tunnelXXXXX   PPTP    PASSWORT                *
#end

Anstelle "tunnelXXXXX" geben Sie bitte wieder Ihren PPTP-Loginnamen ein und anstelle von "PASSWORT" Ihr PPTP-Passwort, welches Sie vergeben haben – dies ist nicht Ihr Kundencenter-Passwort. Die Bezeichnung PPTP unter "server" muss genauso wie im Script nach "remotename" angegeben werden; Groß-/Kleinbuchstaben werden hier unterschieden.

Sie sollten nun noch festlegen, dass nur der Benutzer "root" Leserechte auf die Datei hat, damit niemand Ihr Passwort auslesen kann. Dies geht mit

chmod 600 /etc/ppp/chap-secrets


Schritt 3: Erster Test des Tunnels

Tunnel aktivieren:

pon portunity

Prüfen, ob das PPP-Device erstellt wurde: 

:~# ip addr show

4: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1400 qdisc pfifo_fast state UNKNOWN qlen 3
    link/ppp
    inet 188.246.4.X peer 188.246.4.1/32 scope global ppp0


Schritt 4: Routen

Default-Route setzen? Wenn Sie den kompletten Traffic durch den Tunnel schicken möchten, können Sie eine Defaultroute in den Tunnel setzen. Achten Sie nur darauf, das Ihr Server dann auch nur noch aus dem lokalen Netzsegment und durch den Tunnel erreichbar ist!
Eine Alternative ist PBR (Policy Based Routing), welches Sie anstelle der Defaultroute konfigurieren können.

Route manuell setzen

Die Default-Route kann wie folgt manuell gesetzt werden:

ip -4 route add default dev ppp0

Prüfen Sie bitte mit ip link show, ob der Portunity-Tunnel aktuell tatsächlich "ppp0" heißt. Wird der Tunnel abgebaut, wird die Route automatisch gelöscht!

Route "bootfest" machen

Legen Sie mit einem Texteditor im Verzeichnnis "/etc/ppp/ip-up.d/" die Datei "portunity" an. Diese Datei wird nach erfolgreichem Tunnelaufbau automatisch ausgeführt.

vim /etc/ppp/ip-up.d/portunity

Inhalt:

#!/bin/bash
#
# Hilfe-Text:
# ---------------------------------------------------------------
# This script is called with the following arguments:
# Arg Name Example
# $1 Interface name ppp0
# $2 The tty
# $3 The link speed
# $4 Local IP address
# $5 Peer IP address
# $6 Optional "ipparam" value foo
# ---------------------------------------------------------------
 
if [ "$1" = "lo" ]; then
exit 0
fi
 
#if [ "$1" = "ppp0" ]; then
if [ "$6" = "portunity" ]; then
 
echo "`date +%b" "%e" "%H":"%M":"%S` Portunity: PPTP - ipparam: $6 Interface goes up ($1). "\
   "Now adding routing..." >> /var/log/messages
ip -4 route add default dev $1
fi
 
exit 0
# ende der Datei

Die Datei muss natürlich ausführbar sein:

chmod 750 /etc/ppp/ip-up.d/portunity

Bauen Sie nun den Tunnel einmal neu auf, damit die Route gesetzt wird:

poff portunity; pon portunity

Nun können wir testen:

curl "http://meineipv6.de/mro.php?format=plaintext"


Wird die IP-Adresse des PPP-Interface angezeigt, ist alles korrekt konfiguriert.
Wenn dort nicht die IP-Adresse erscheint, welche Ihrem Tunnel zugeordnet ist, läuft der Traffic nicht durch den Tunnel.

Tunnel abschalten:

poff portunity


Abschließende Hinweise

Diese Anleitung gilt ausschließlich für die Verbindung via IPv4. Mit nur wenigen weiteren Handgriffen kann aber auch IPv6 eingebunden werden, siehe hierzu den Artikel "PPTP-Tunnel (IPv6) unter Debian-Linux einrichten".

Wegen der Komplexität gehen wir in diesem Artikel nicht auf Dinge ein wie:

  • IP-Netz routen
  • Dienste an die neue statische IP binden
  • automatischer Start des PPTP-Tunnels beim Systemstart
  • PBR (Policy Based Routing)
Persönliche Werkzeuge