PPTP-Tunnel (IPv4) unter Debian-Linux einrichten (Anleitung)
Aus Portunity Wiki
(Der Versionsvergleich bezieht 29 dazwischenliegende Versionen mit ein.) | |||
Zeile 1: | Zeile 1: | ||
- | Diese Anleitung zeigt Ihnen in wenigen Schritten, wie Sie unter Linux (hier: Debian | + | Diese Anleitung zeigt Ihnen in wenigen Schritten, wie Sie unter Linux (hier: Debian) einen PPTP-Tunnel mit einer statischen IP-Adresse (IPv4) einrichten. |
+ | |||
+ | |||
+ | == Statische Routen und Firewall-Freigaben == | ||
+ | Falls Sie statische Routen setzen oder die Verbindung zum Tunnelserver in Ihrer Firewall freischalten müssen, beachten Sie bitte [[Firewall-Freigaben und statische Routen für Tunnel-Aufbau|die hier aufgeführten Informationen zu IP-Netzen und Protokollen]]. | ||
= Schritt 1: Paket installieren = | = 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: | ||
<source lang="command">apt-get install pptp-linux</source> | <source lang="command">apt-get install pptp-linux</source> | ||
- | Nun gibt es das Verzeichnis | + | Nun gibt es das Verzeichnis <code>/etc/ppp</code>. Hier sind die wichtigsten Config-Files für den PPTP-Tunnel: |
- | *Verzeichnis | + | *Verzeichnis "<code>peers</code>": Die wichtigsten Zugangsdaten und Einstellungen je Tunnel |
- | *Verzeichnis | + | *Verzeichnis "<code>ip-up.d</code>": Scripte, die beim Tunnelaufbau ausgeführt werden |
- | *Verzeichnis | + | *Verzeichnis "<code>ip-down.d</code>": Wird beim Tunnelabbau (zusammenbruch) ausgeführt |
- | *Datei | + | *Datei "<code>chap-secrets</code>": Zugangsdaten für die Tunnelverbindungen |
= Schritt 2: Grundkonfiguration - peers = | = Schritt 2: Grundkonfiguration - peers = | ||
- | Legen Sie mit | + | Legen Sie mit einem Texteditor im Verzeichnnis <code>/etc/ppp/peers</code> die Datei "<code>portunity</code>" an – in unserem Beispiel verwenden wir <code>vim</code>, Sie können aber jeden anderen Texteditor verwenden. |
- | <source lang="command"> | + | <source lang="command">vim /etc/ppp/peers/portunity</source> |
- | Inhalt: | + | 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'' | |
- | + | <pre> | |
- | pty "pptp pptp. | + | ### Verbindungsziel - Portunity-Server |
- | + | pty "pptp pptp.tpX.tunneleinwahl.de --nolaunchpppd --nobuffer --timeout 10" | |
- | ### PPTP - Loginname | + | |
- | name | + | ### PPTP-Loginname, wird im Kundencenter im Tarif angezeigt |
- | + | name tunnelXXXXX | |
- | ### Nach einer Trennung automatisch neu aufbauen | + | |
- | persist | + | ### Nach einer Trennung automatisch neu aufbauen |
- | + | persist | |
- | ### MTU muss kleiner 1500 sein, da das PPTP-Protokoll | + | |
- | mtu 1400 | + | ### 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 | + | ### 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. | + | # Terminate after n consecutive failed connection attempts. |
- | maxfail 0 | + | # # 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 | + | # Soll der komplette Traffic durch den Tunnel geschickt werden? Default-Route! |
- | # leider nicht überschreiben, siehe dazu bitte weiter unten | + | # HINWEIS: Gibt es bereits eine Route im System kann diese Option diese Route |
- | defaultroute | + | # leider nicht überschreiben, siehe dazu bitte weiter unten |
- | + | defaultroute | |
- | #### Diverses | + | |
- | remotename PPTP | + | #### Diverses |
- | lock | + | remotename PPTP |
- | noauth | + | lock |
- | refuse-eap | + | noauth |
- | nobsdcomp | + | refuse-eap |
- | nodeflate | + | nobsdcomp |
- | + | nodeflate | |
- | #end</ | + | |
+ | ### IPv6 ermöglichen | ||
+ | +ipv6 | ||
+ | |||
+ | #end | ||
+ | </pre> | ||
- | |||
- | |||
- | Nun muss das Passwort für den Tunnel noch in der Datei "chap-secrets im Verzeichnis "/etc/ppp" hinterlegt werden. | + | Nun muss das Passwort für den Tunnel noch in der Datei "<code>chap-secrets</code>" im Verzeichnis "<code>/etc/ppp</code>" hinterlegt werden. |
- | <source lang="command"> | + | <source lang="command">vim /etc/ppp/chap-secrets</source> |
Inhalt: | Inhalt: | ||
<source lang="text"># Secrets for authentication using CHAP | <source lang="text"># Secrets for authentication using CHAP | ||
- | # client server secret IP addresses | + | # client server secret IP addresses |
- | + | tunnelXXXXX PPTP PASSWORT * | |
- | + | ||
#end</source> | #end</source> | ||
- | Anstelle "''' | + | 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 "<code>server</code>" muss genauso wie im Script nach "<code>remotename</code>" angegeben werden; Groß-/Kleinbuchstaben werden hier unterschieden. |
- | Sie sollten nun noch festlegen, | + | Sie sollten nun noch festlegen, dass nur der Benutzer "root" Leserechte auf die Datei hat, damit niemand Ihr Passwort auslesen kann. Dies geht mit |
<source lang="command">chmod 600 /etc/ppp/chap-secrets</source> | <source lang="command">chmod 600 /etc/ppp/chap-secrets</source> | ||
- | |||
= Schritt 3: Erster Test des Tunnels = | = Schritt 3: Erster Test des Tunnels = | ||
Zeile 86: | Zeile 93: | ||
<source lang="command">pon portunity</source> | <source lang="command">pon portunity</source> | ||
- | Prüfen, ob das PPP - Device | + | Prüfen, ob das PPP-Device erstellt wurde: |
- | + | <pre> | |
+ | :~# 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 | ||
+ | |||
+ | </pre> | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
= Schritt 4: Routen = | = Schritt 4: Routen = | ||
- | Default Route setzen? Wenn Sie den kompletten Traffic durch den Tunnel schicken | + | 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!<br> |
+ | Eine Alternative ist [[PBR (Policy Based Routing)]], welches Sie anstelle der Defaultroute konfigurieren können. | ||
== Route manuell setzen == | == Route manuell setzen == | ||
Zeile 106: | Zeile 114: | ||
Die Default-Route kann wie folgt manuell gesetzt werden: | Die Default-Route kann wie folgt manuell gesetzt werden: | ||
- | <source lang="command">route add | + | <source lang="command">ip -4 route add default dev ppp0</source> |
- | Prüfen Sie bitte mit | + | Prüfen Sie bitte mit <code>ip link show</code>, 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 | + | Legen Sie mit einem Texteditor im Verzeichnnis "<code>/etc/ppp/ip-up.d/</code>" die Datei "portunity" an. Diese Datei wird nach erfolgreichem Tunnelaufbau automatisch ausgeführt. |
- | <source lang="command"> | + | <source lang="command">vim /etc/ppp/ip-up.d/portunity</source> |
Inhalt: | Inhalt: | ||
- | <source lang="bash">#!/bin/ | + | <source lang="bash">#!/bin/bash |
# | # | ||
- | # Hilfe - Text: | + | # Hilfe-Text: |
# --------------------------------------------------------------- | # --------------------------------------------------------------- | ||
# This script is called with the following arguments: | # This script is called with the following arguments: | ||
# Arg Name Example | # Arg Name Example | ||
# $1 Interface name ppp0 | # $1 Interface name ppp0 | ||
- | # $2 The tty | + | # $2 The tty |
- | # $3 The link speed | + | # $3 The link speed |
- | # $4 Local IP | + | # $4 Local IP address |
- | # $5 Peer IP | + | # $5 Peer IP address |
- | # $6 Optional | + | # $6 Optional "ipparam" value foo |
# --------------------------------------------------------------- | # --------------------------------------------------------------- | ||
- | + | if [ "$1" = "lo" ]; then | |
- | if [ "$1" | + | |
exit 0 | exit 0 | ||
fi | fi | ||
#if [ "$1" = "ppp0" ]; then | #if [ "$1" = "ppp0" ]; then | ||
- | if [ "$6" | + | if [ "$6" = "portunity" ]; then |
- | echo "`date +%b" "%e" "%H":"%M":"%S` Portunity: PPTP - ipparam: $6 Interface | + | echo "`date +%b" "%e" "%H":"%M":"%S` Portunity: PPTP - ipparam: $6 Interface goes up ($1). "\ |
- | route add | + | "Now adding routing..." >> /var/log/messages |
+ | ip -4 route add default dev $1 | ||
fi | fi | ||
exit 0 | exit 0 | ||
- | # ende der Datei</source | + | # ende der Datei</source> |
Die Datei muss natürlich ausführbar sein: | Die Datei muss natürlich ausführbar sein: | ||
- | <source lang="command">chmod 750 portunity</source> | + | <source lang="command">chmod 750 /etc/ppp/ip-up.d/portunity</source> |
- | + | Bauen Sie nun den Tunnel einmal neu auf, damit die Route gesetzt wird: | |
- | <source lang="command">poff portunity | + | <source lang="command">poff portunity; pon portunity</source> |
- | + | ||
- | pon portunity</source> | + | |
Nun können wir testen: | Nun können wir testen: | ||
- | <source lang="command"> | + | <source lang="command">curl "http://meineipv6.de/mro.php?format=plaintext"</source> |
- | |||
- | + | Wird die IP-Adresse des PPP-Interface angezeigt, ist alles korrekt konfiguriert.<br> | |
- | + | Wenn dort nicht die IP-Adresse erscheint, welche Ihrem Tunnel zugeordnet ist, läuft der Traffic nicht durch den Tunnel.<br> | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | Tunnel abschalten: | |
- | + | <source lang="command">poff portunity</source> | |
- | |||
- | = | + | = 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 (Anleitung)|PPTP-Tunnel (IPv6) unter Debian-Linux einrichten]]". | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | Wegen der Komplexität gehen wir in diesem Artikel nicht | + | Wegen der Komplexität gehen wir in diesem Artikel nicht auf Dinge ein wie: |
- | *IP-Netz routen | + | * IP-Netz routen |
- | *Dienste an die neue statische IP binden | + | * Dienste an die neue statische IP binden |
- | * | + | * automatischer Start des PPTP-Tunnels beim Systemstart |
- | *PBR (Policy Based Routing) | + | * [[PBR (Policy Based Routing)]] |
- | |||
- | [[Category:Access]][[Category: | + | [[Category:Access_Anleitungen]][[Category:Access]][[Category:PPTP_(Übersicht)]][[Category:VPN-Tunnel (Tarif)]] |
Aktuelle Version vom 16:17, 1. Jun. 2021
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)