L2TP-Tunnel (IPv4 und/oder IPv6) 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 Wheezy) einen L2TP - Tunnel mit einer statischen IP-Adresse (IPv4 und/oder IPv6) einrichten.

Inhaltsverzeichnis

Schritt 1: Paket installieren

Loggen Sie sich als "root" an Ihrem Server / Gateway ein und installieren Sie folgendes Debian Paket: "xl2tpd".

apt-get install xl2tpd chkconfig

Schritt 2: Grundkonfiguration - XL2TPD

Öffnen Sie mit Ihrem Lieblingseditor im Verzeichnnis "/etc/xl2tpd" die Datei "xl2tpd.conf" und fügen folgendes am ende der Datei an. Tauschen Sie dabei bitte den Loginnamen tunnelYYYYY durch den im gebuchten Tarif angezeigten Produkt-Loginnamen aus (z.B. vpn-pty/44444).

Hier machen wir dies mit dem Editor Vi - Anleitung zum vi

vi /etc/xl2tpd/xl2tpd.conf

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

[lac L2TPPTYClient]
lns = l2tp.ffm.portunity.de
require chap = yes
refuse pap = yes
require authentication = yes
 
; Tunnel Loginnamen (Können Sie in im Kundencenter einsehen)
name = tunnelYYYYY
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd.ptyclient
length bit = yes

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

  • Nun müssen Sie noch den pppd Konfigurieren
vi /etc/ppp/options.l2tpd.ptyclient
### 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
 
#### Diverses
remotename PPTP
lock
noauth
refuse-eap
nobsdcomp
nodeflate
nomppe
 
 
#### Diese Option kann auf älteren Linux Systemen dazu führen das der Tunnel
#    nicht aufgebaut wird. Dann bitte einfach auskommentieren oder das + durch
#    ein - ersetzen um IPv6 zu Deaktivieren. => #+ipv6
+ipv6
#end
 


  • Jetzt müssen noch die Zugangsdaten in der hinterlegen.
vi /etc/ppp/chap-secrets
  • Fügen Sie dazu bitte folgendes an der Datein an. Ersetzen dabei aber LOGINNAMEN und PASSWORT durch den Ihnen bekannten Loginnamen tunnelYYYYY und Ihr Passwort.
 # Secrets for authentication using CHAP
 # client        server  secret                  IP addresses
 LOGINNAMEN      PPTP    PASSWORT                *
 

Schritt 3: Routen setzen

Damit die Pakete auch durch den Tunnel gehen müssen nach dem Start noch einige Routen gesetzt werden. Dies machen Sie in dem Sie die beiden Dateien /etc/ppp/ip-up.d/portunity und /etc/ppp/ip-down.d/portunity wie folgt anlegen und mit folgenden Inhalt füllen.

Das Start Script

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

Wenn Sie einen "IPv6 Only Tarif" haben müssen Sie den IPv4 Teil weglassen oder auskommentieren (Zwischen "#IPv4 Start" und "#IPv4 end" jede Zeile mit einem "#" beginnen lassen)

#!/bin/bash
#
# Hilfe - Text:
# ---------------------------------------------------------------
# This script is called with the following arguments:
# Arg Name Example
# $1 Interface name ppp0
# $2 The tty ttyS1
# $3 The link speed 38400
# $4 Local IP number 12.34.56.78
# $5 Peer IP number 12.34.56.99
# $6 Optional ``ipparam'' value foo
# ---------------------------------------------------------------
 
# don't bother to restart postfix when lo is configured.
if [ "$1" = "lo" ]; then
exit 0
fi
 
if test "$6" = "portunity" -o "$6" = "188.246.0.50"; then
   echo "`date +%b" "%e" "%H":"%M":"%S` Portunity: PPTP - ipparam: $6 Interface goeas up ($1). "\
      "Now adding routing..." >> /var/log/messages
       PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
 
       ##################
       ### IPv4 Start
 
       DEFAULTROUTE="`ip ro l | grep default | head -n 1 | sed 's/default//' | sed 's/proto static//' | cat -`"
 
       # Die Route zum Tunnelserver von Portunity über das "alte" Default
       # Gateway setzen
       ip ro add 188.246.0.50/32 $DEFAULTROUTE
 
       # Die alte Default Route löschen und mit einer höheren Metric einfügen
       # Zusätzlich eine zweite Default Route mit niedrigerer Metric durch den
       # Tunnel Setzen => Sollte der L2TP Tunnel zusammen brechen werden die
       # Routen durch den Tunnel automatisch gelöscht und es greift automatisch 
       # wieder die "alte" Default Route!
       ip ro del default
       ip ro add default $DEFAULTROUTE metric 1000
       ip ro add default dev $1 metric 10
 
       ### IPv4 end
       ##################
 
       ##################
       ### IPv6 Start
 
       ip -6 ro add default dev $1
 
       ### IPv6 end
       ##################
 
fi
 
exit 0
# ende der Datei

Das Stop Script

vi /etc/ppp/ip-down.d/portunity
#!/bin/bash
#
# Hilfe - Text:
# ---------------------------------------------------------------
# This script is called with the following arguments:
# Arg Name Example
# $1 Interface name ppp0
# $2 The tty ttyS1
# $3 The link speed 38400
# $4 Local IP number 12.34.56.78
# $5 Peer IP number 12.34.56.99
# $6 Optional ``ipparam'' value foo
# ---------------------------------------------------------------
 
# don't bother to restart postfix when lo is configured.
if [ "$1" = "lo" ]; then
exit 0
fi
 
if test "$6" = "portunity" -o "$6" = "188.246.0.50"; then
   echo "`date +%b" "%e" "%H":"%M":"%S` Portunity: PPTP - ipparam: $6 Interface goeas up ($1). "\
       PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
       # Löschen der Festen Route zum Tunnel Server um keinen Müll im Routing 
       # zu hinterlassen
       ip ro del 188.246.0.50/32
fi
 
exit 0
# ende der Datei

Damit die beiden Dateien beim Starten und Stoppen des Tunnels auch ausgeführt werden, müssen diese noch ausführbar gemacht werden.

chmod 755 /etc/ppp/ip-up.d/portunity
chmod 755 /etc/ppp/ip-down.d/portunity

Anschließend müssen Sie den L2TP Dienst einmal durchstarten um die Änderungen zu übernehmen.

/etc/init.d/xl2tpd restart

Damit auch IPv6 genutzt werden sollten Sie das Ihnen zugewiesene Netz am besten an eth0 binden. Alle In Ihrem Netzwerk befindlichen Rechner können dann den Tunnel Client als Default Gateway für IPv6 nutzen. (Vorausgesetzt Ihre Firewall lässt dies zu!)

Fügen Sie dazu bitte am ende der Datei /etc/network/interfaces folgendes hinzu und ersetzen ggf. eth0 durch das gewünschte Interface bei Ihnen. Zusätzlich Tragen Sie bitte das IPv6 Netz welches Ihnen zugewiesen wurde ein (Dieses können Sie ebenfalls in unserem Kundencenter im gebuchten Tarif einsehen).

vi /etc/network/interfaces
...
auto eth0
iface eth0 inet6 static
   address IPv6-ADRESSE
   netmask NETZMASKE

Nun müssen Sie die Änderungen noch aktivieren. Dies machen Sie am besten in dem Sie das Netzwerk oder alternativ den gesamten Rechner/Server einmal durchstarten.

  • Netzwerk Restarten
/etc/init.d/networking restart
  • Rechner/Server Durchstarten
reboot

Schritt 4: Verbindung aufbauen/Trennen

Den L2TP Tunnel können Sie anschließend mit folgenden befehlen auf- bzw. abbauen.

  • Aufbauen:
echo "c L2TPPTYClient" > /var/run/xl2tpd/l2tp-control
  • Trennen:
echo "d L2TPPTYClient" > /var/run/xl2tpd/l2tp-control

nach kurzer Zeit sollte mit ifconfig ein pppX device erscheinen

ifconfig
...
ppp0      Link encap:Point-to-Point Protocol
          inet addr:188.246.4.100  P-t-P:188.246.4.1  Mask:255.255.255.255
          inet6 addr: fe80::70f4:114a:e244:9f1c/10 Scope:Link
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1400  Metric:1
          RX packets:1625 errors:0 dropped:0 overruns:0 frame:0
          TX packets:223 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:121353 (118.5 KiB)  TX bytes:37638 (36.7 KiB)
...

Und ein Traceroute sollte als ersten Hop den pptp.ffm.portunity.de zeigen!

traceroute -I www.portunity.de
 1  pptp.ffm.portunity.de (188.246.4.1)  42.828 ms  42.467 ms  45.666 ms
 2  router1.ffm.portunity.de (188.246.0.2)  45.135 ms  45.108 ms  48.500 ms
 3  81.92.4.41 (81.92.4.41)  58.700 ms  58.328 ms  57.947 ms
 4  gw1.wtal.portunity.de (195.8.241.100)  54.389 ms  62.004 ms  61.622 ms
 5  www.portunity.de (217.144.129.136)  61.225 ms  61.385 ms  61.011 ms

Für IPv6 Lautet der Befehl

traceroute6 -I www.portunity.de
 1  openvpn-gw.ffm.portunity.de (2a02:a00:e00f:ffff::1)  46.290 ms  46.435 ms  50.166 ms
 2  ipv6-gw2-ffm.portunity.de (2a02:a00:f::2)  50.364 ms  54.125 ms  54.309 ms
 3  2a01:170:0:1:1::11 (2a01:170:0:1:1::11)  64.817 ms  62.470 ms  68.750 ms
 4  2a01:170:0:2:3::2 (2a01:170:0:2:3::2)  68.382 ms  73.683 ms  73.870 ms
 5  www.portunity.de (2a02:a00::1:0:0:2)  77.487 ms  77.654 ms  80.521 ms

Schritt 5: Bootfest machen

Damit der L2TP Tunnel bei jedem Start automatisch startet, legen Sie am besten ein Startscript dafür an.

vi /etc/init.d/pty-l2tp-tunnel
#!/bin/bash
############################################################################
############################################################################
###  - portunity-l2tp-tunnel                                             ###
### -------------------------------------------------------------------- ###
### Boot - Startscript für ein Daemon.                                   ###
###                                                                      ###
### -------------------------------------------------------------------- ###
### Anpassungen:                                                         ###
###                                                                      ###
###                                                                      ###
###                                                                      ###
###                                                                      ###
############################################################################
 
### BEGIN INIT INFO
# Provides:        portunity-l2tp-tunnel
# Required-Start:  $network $remote_fs $syslog xl2tpd
# Required-Stop:   $network $remote_fs $syslog xl2tpd
# Should-Start:
# Should-Stop:
# Default-Start:   2 3 4 5
# Default-Stop:    0 1 6
# Short-Description:    Startet den L2TP Tunnel.
# Description:          Startet den L2TP Tunnel
#                       By Portunity GmbH
### END INIT INFO
 
 
PATH=/bin:/usr/bin:/sbin:/usr/sbin
 
case "$1" in
     start)
          echo "c L2TPPTYClient" > /var/run/xl2tpd/l2tp-control
     ;;
 
     stop)
          echo "d L2TPPTYClient" > /var/run/xl2tpd/l2tp-control
     ;;
 
     restart)
          $0 stop
          sleep 1
          $0 start
     ;;
 
     *)
          echo "Usage: /etc/init.d/$NAME {start|stop|restart}"
          exit 1
     ;;
esac
 
 
exit 0
chmod 755 /etc/init.d/pty-l2tp-tunnel

Nun müssen Sie noch dafür Sorgen dass das Script beim Start auch automatisch mit gestartet wird. Dies machen Sie am besten mit chkconfig.

chkconfig pty-l2tp-tunnel 2345
Persönliche Werkzeuge