L2TP-Tunnel (IPv4 und/oder IPv6) unter Debian-Linux einrichten (Anleitung)
Aus Portunity Wiki
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. tunnel44444).
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] ; Remote Gateway IP lns = Wie lautet meine VPN Gatway Adresse require chap = yes refuse pap = yes require authentication = yes ; Tunnel Loginnamen (Können Sie in im Kundencenter einsehen) name = [tunnelYYYYY oder vpnXXXXX] 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 folgenden Datei hinterlegt werden:
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 *
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: 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