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

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. Ein kleines Was ist was:

  • Verzeichnis: "peers" => Die wichtigsten Zugangsdaten und Einstellungen je Tunnel
  • Verzeichnis: "ip-up.d" => Wird beim Tunnelaufbau ausgeführt (IPv4)
  • Verzeichnis: "ip-down.d" => Wird beim Tunnelabbau (zusammenbruch) ausgeführt (IPv4)
  • Datei: "chap-secrets" => Tunnelpasswörter

Schritt 2: Grundkonfiguration - peers

Legen Sie mit Ihrem Lieblingseditor im Verzeichnnis /etc/ppp/peers die Datei "portunity" an - in unserem Beispiel vim

vi /etc/ppp/peers/portunity

Nun einmal "i" (kleines I für insert) drücken, um in den Einfügemodus zu wechseln.

Inhalt:

### Verbindungsziel - Portunity-Server
pty "pptp XXXX.ffm.portunity.de --nolaunchpppd --nobuffer --timeout 10"
### PPTP - Loginname
name tunnelXXXXX
### Nach einer Trennung automatisch neu aufbauen
persist
### MTU muss kleiner 1500 sein, da das PPTP-Protokoll ein TCP Paket vergrössert
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
#### Diese Option kann auf älteren Linux Systemen dazu führen dass der Tunnel   nicht aufgebaut wird.
#    Dann bitte einfach auskommentieren oder das + durch ein - ersetzen um IPv6 zu Deaktivieren. => #+ipv6
+ipv6
#end


Statt "XXXX.ffm.portunity.de" geben Sie bitte ihre VPN Gateway Adresse aus dem Kundencenter an und anstelle von "tunnelXXXXX" geben Sie bitte Ihren PPTP-Loginnamen ein.

Mit "ESC ESC :wq ENTER" speichern und beenden Sie den vi-Editor.

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

vi /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. Nicht Ihr ISP-Suite Passwort! Die Bezeichnung PPTP unter server muss genauso wie im Skript nach remotename angegeben werden; Groß-/Kleinbuchstaben werden hier unterschieden!

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

chmod 600 /etc/ppp/chap-secrets

Besonderheit: Wir kennen natürlich nicht Ihren Rechner / Server, aber wir gehen davon aus, dass Sie eine Firewall laufen haben. Die Firewall muss das Protokoll "GRE" (Protokollnummer 47) und die Kommunikation zu unseren PPTP-Servern [Port 1723/TCP] zulassen!

Schritt 3: Erster Test des Tunnels

Tunnel aktivieren:

pon portunity
Prüfen, ob das PPP-Device erstellt wurde: 
ifconfig
 
 eth0 ....
 
 ppp0 Protokoll:Punkt-zu-Punkt Verbindung
 inet Adresse:188.246.4.X P-z-P:188.246.4.1 Maske:255.255.255.255
 UP PUNKTZUPUNKT RUNNING NOARP MULTICAST MTU:1400 Metric:1
 RX packets:168585 errors:0 dropped:0 overruns:0 frame:0
 TX packets:200554 errors:0 dropped:0 overruns:0 carrier:0
 Kollisionen:0 Sendewarteschlangenlänge:3
 RX bytes:17999794 (17.1 MiB) TX bytes:24537734 (23.4 MiB)
Es handelt sich um eine Point-2-Point Verbindung. Das Gateway auf Portunity Seite hat hier die: P-z-P:188.246.4.1

Schritt 4: Routen

Default Route setzen? Wenn Sie den kompletten Traffic durch den Tunnel schicken wollen, dann 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!

Route manuell setzen

Die Default-Route kann wie folgt manuell gesetzt werden:

ip -4 route add 0.0.0.0/0 dev ppp0

Prüfen Sie bitte mit ifconfig oder ip link show, ob der portunity-Tunnel aktuell "ppp0" heißt. Die Nummer kann sich schon mal ändern! z.B. ppp1. Wird der Tunnel abgebaut, wird die route automatisch gelöscht!

Route "bootfest" machen

Legen Sie mit Ihrem Lieblingseditor 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 0.0.0.0/0 dev $1
fi
 
exit 0
# ende der Datei

Die Datei muss natürlich ausführbar sein:

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

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

poff portunity
 
pon portunity

Nun können wir testen:

w3m https://www.portunity.de/ip


Wird die IP-Adresse des PPP-Interfaces 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.

Ihre IP-Adresse lautet: 188.246.4.x
Hostname: meinptr.meinedomain.de

Tunnel abschalten:

poff portunity

Wenn sich der Tunnel nicht aufbaut, dann schauen Sie bitte im entsprechenden FAQ-Artikel nach: Der PPTP-Tunnel startet nicht unter Debian

Schritt 5: Tunnel bootfest machen

Den Tunnel komplett bootfest machen. Hierzu müssen wir 2 kleine Scripte anlegen und diese dann inter interfaces Datei eintragen. Dafurch wird der Tunnel immer aufgebaut, nachdem die Netzwerkkarte hochgefahren ist und abgebaut, bevor die Netzwerkkarte herunter fährt.

Anlegen der beiden Scripte:

START - Script

Für das Start-Script legen wir eine "up"-Datei an:

vim /etc/ppp/portunity-pptp-up.sh

Inhalt:

#!/bin/bash
####
# Startet den Portunity: PPP-Tunnel
#
 
# Noch mal 2 Sekunden warten
sleep 2
 
# Meldung bringen und Tunnel starten
echo "`date +%b" "%e" "%H":"%M":"%S` Portunity - PPTP: Netzwork startet," \
    " starting PPTP Tunnel to Portunity..." >> /var/log/messages
/usr/bin/pon portunity
 
#### IMMER mit ERFOLG enden, sonst fährt er das eth_x nicht hoch!
exit 0
# ende der Datei

Die Datei muss natürlich ausführbar sein:

chmod 750 /etc/ppp/portunity-pptp-up.sh

STOP - Script

Und für das Stop-Script legen wir eine "down"-Datei an:

vim /etc/ppp/portunity-pptp-down.sh

Inhalt:

#!/bin/bash
####
# Stoppt den Portunity: PPP - Tunnel
#
 
# Meldung bringen und Tunnel starten
echo "`date +%b" "%e" "%H":"%M":"%S` Portunity - PPTP: Netzwork shutted down, " \
     " stopping PPTP Tunnel to Portunity!" >> /var/log/messages
/usr/bin/poff portunity
 
# Noch 1 Sekunde warten
sleep 1
 
#### IMMER mit ERFOLG enden, sonst fährt er das eth_x nicht hoch!
exit 0
# ende der Datei
Die Datei muss natürlich ebenfalls ausführbar sein:
chmod 750 /etc/ppp/portunity-pptp-down.sh

Aktivieren der Scripte

Pürfen Sie zu erst, über welche Netzwerkkarte der Tunnel aufgebaut wird. Also welche Netzwerkkarte mit dem Internet verbinden ist. Meist "eth0" oder "enp3s0", wenn nur eine Karte vorhanden resp. aktiviert ist.

vim /etc/network/interfaces

Inhalt:

# ... Auszug der Datei ....
 
iface eth0 inet static
address 192.168.10.xxx # Nur als Beispiel
netmask 255.255.255.xxx # Nur als Beispiel
gateway 192.168.10.xxx # Nur als Beispiel
post-up /etc/ppp/portunity-pptp-up.sh
pre-down /etc/ppp/portunity-pptp-down.sh
 
# ... Auszug ende ...

Wichtige Hinweise:

  • Seien Sie bitte sehr umsichtig beim Bearbeiten dieser Datei
  • erstellen Sie sich zuvor besser eine Sicherungskopie "cp -p /etc/network/interfaces /etc/network/interfaces-backup"
  • Die IP-Adressen sind Beispiele. Sie werden vermutlich andere haben. Diese nicht ändern!
  • Bei Fehlern fährt Ihr Rechner möglicherweise keine Netzwerkverbindungen mehr hoch!

Debug-Hilfe

Der PPTP-Tunnel startet nicht unter Debian - was kann ich machen?

Wenn der Tunnel nicht mit:

pon portunity
startet, dann können Sie den Start im Debug-Modus versuchen. Damit springt das Programm nicht in den Hintergrund, sondern es bleib oben und gtibt alles direkt auf der Console aus.
pon portunity debug dump logfd 2 nodetach

Musterausgabe:

gate-firma:/# pon portunity debug dump logfd 2 nodetach
pppd options in effect:
debug           # (from command line)
nodetach                # (from command line)
persist         # (from /etc/ppp/peers/portunity)
logfd 2         # (from command line)
maxfail 0               # (from /etc/ppp/peers/portunity)
dump            # (from command line)
noauth          # (from /etc/ppp/peers/portunity)
refuse-eap              # (from /etc/ppp/peers/portunity)
name tunnelXXXXX              # (from /etc/ppp/peers/portunity)
remotename PPTP         # (from /etc/ppp/peers/portunity)
                # (from /etc/ppp/peers/portunity)
pty pptp pptp.ffm.portunity.de --nolaunchpppd           # (from /etc/ppp/peers/portunity)
crtscts         # (from /etc/ppp/options)
                # (from /etc/ppp/options)
asyncmap 0              # (from /etc/ppp/options)
mtu 1400                # (from /etc/ppp/peers/portunity)
lcp-echo-failure 4              # (from /etc/ppp/options)
lcp-echo-interval 30            # (from /etc/ppp/options)
hide-password           # (from /etc/ppp/options)
ipparam portunity               # (from /etc/ppp/peers/portunity)
proxyarp                # (from /etc/ppp/options)
nobsdcomp               # (from /etc/ppp/peers/portunity)
nodeflate               # (from /etc/ppp/peers/portunity)
noipx           # (from /etc/ppp/options)
using channel 44
Using interface ppp0
Connect: ppp0 <--> /dev/pts/6
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xcad60176> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x1 <asyncmap 0x0> <auth eap> <magic 0x92d64869> <pcomp> <accomp>]
sent [LCP ConfNak id=0x1 <auth chap MD5>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0xcad60176> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x2 <asyncmap 0x0> <auth chap MD5> <magic 0x92d64869> <pcomp> <accomp>]
sent [LCP ConfAck id=0x2 <asyncmap 0x0> <auth chap MD5> <magic 0x92d64869> <pcomp> <accomp>]
sent [LCP EchoReq id=0x0 magic=0xcad60176]
rcvd [LCP EchoReq id=0x0 magic=0x92d64869]
sent [LCP EchoRep id=0x0 magic=0xcad60176]
rcvd [CHAP Challenge id=0x22 <fda0cddf723f723fd144ebad8fcf6d6a249dd9f99737f1>, name = "pptpd"]
sent [CHAP Response id=0x22 <e5d7907295f40bb49f272291dbdccde3>, name = "tunnelXXXXX"]
rcvd [LCP EchoRep id=0x0 magic=0x92d64869]
rcvd [CHAP Success id=0x22 ""]
CHAP authentication succeeded
CHAP authentication succeeded
sent [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 188.246.8.X>]
rcvd [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15>]
sent [CCP ConfReq id=0x1]
sent [CCP ConfRej id=0x1 <deflate 15> <deflate(old#) 15>]
rcvd [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 188.246.4.X>]
sent [IPCP ConfAck id=0x1 <compress VJ 0f 01> <addr 188.246.4.X>]
rcvd [IPCP ConfNak id=0x1 <addr 188.246.4.X>]
sent [IPCP ConfReq id=0x2 <compress VJ 0f 01> <addr 188.246.4.X>]
rcvd [CCP ConfAck id=0x1]
rcvd [CCP ConfReq id=0x2]
sent [CCP ConfAck id=0x2]
rcvd [IPCP ConfAck id=0x2 <compress VJ 0f 01> <addr 188.246.4.X>]
Cannot determine ethernet address for proxy ARP
local  IP address 188.246.4.X
remote IP address 188.246.4.X
Script /etc/ppp/ip-up started (pid 22886)
Script /etc/ppp/ip-up finished (pid 22886), status = 0x0
Hier steht der Tunnel stabil. Wenn sich das Script automatisch beendet, dann steht der Tunnel nicht.
  • ZUM ABBRUCH DES TUNNELS: STRG + C *
Terminating on signal 2
Script pptp pptp.ffm.portunity.de --nolaunchpppd finished (pid 22880), status = 0x0
Modem hangup
Connect time 0.3 minutes.
Sent 13332 bytes, received 4273 bytes.
Script /etc/ppp/ip-down started (pid 22941)
Connection terminated.
Waiting for 1 child processes...
  script /etc/ppp/ip-down, pid 22941
Script /etc/ppp/ip-down finished (pid 22941), status = 0x1

Hinweis: Bei dem Muster hier werden noch ip-up.d bzw. ip-down.d Scripte ausgeführt.

Wenn Sie mit der Meldung nichts anfangen können, so schreiben Sie Portunity bitte erst eine eMail (oder geben ein Support-Ticket oder fragen im Support-Forum nach) auf, damit Portunity etwas sehen kann. Per Telefon ist so etwas kaum möglich. Bitte haben Sie auch Verständnis dafür, das Portunity Ihnen nur bis zu einem gewissen Maß kostenlos helfen können.

Fehler: Keine Defaultroute

Wenn die Defaultroute nicht über die peers/portunity Datei mit dem Parameter "defaultroute" gesetzt werden kann, dann erscheint in der "pon portunity debug ..." Ausgabe ziemlich am Ende folgende Zeile:

not replacing existing default route via 217.144.132.x

Dann müssen Sie ein ip-up Script bemühen oder sich mit Policy-Based-Routing (PBR) unter Linux auseinander setzen.

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 auch Dinge ein wie:

  • IP-Netz routen
  • Dienste an die neue statische IP binden
  • autoamtisches starten des PPTP-Tunnels beim Rechnerstart
  • PBR (Policy Based Routing)

Schauen Sie bitte in die entsprechenden FAQ Artikel, oder falls noch nicht vorhanden sprechen Sie uns bitte an: Supportmöglichkeiten

Persönliche Werkzeuge