Vor kurzem habe ich davon berichtet, wie ich meine Daten zwischen meinem Arbeitsplatz und meinem Heim-PC über BitTorrent Sync synchron halten möchte. Ein Detail hatte ich dabei leider nicht bedacht: In meinem Betrieb sind die Ports für BitTorrent natürlich geblockt.
Da ich keine kleine Debian-VM (Virtual RootServer) besitze, wollte ich mal versuchen ob ich mittels eines kleinen WorkArounds doch eine Synchronisation hinbekomme: Ich baue einen PPTP-Tunnel zu meinem RootServer auf, der als “ExitNode” ins Internet fungiert.
Die Einrichtung des PPTP-Dienstes auf Debian geht innerhalb von 5 Minuten über die Bühne und hat bei mir in zwei Fällen auf Anhieb funktioniert. Erwähnen sollte man jedoch, dass PPTP mittlerweile geknackt ist, und es für kritische Daten nicht verwendet werden sollte.
Da das bei mir nicht wirklich der Fall ist, und es eine einfache und schnelle Lösung sein soll, die mit Bordmitteln auch mal von einem anderen Standort oder einem Internet-Café funktionieren soll, habe ich mich für PPTP entschieden.
PPTPD auf Debian installieren
Zuerst muss der PPTPD(aemon) installiert werden:
1 2 3 4 |
# PPTPD installieren apt-get install pptpd # PPTPD in den jeweiligen Runleveln eintragen, damit es beim Start geladen wird update-rc.d pptpd defaults |
VPN einrichten und DNS anpassen
Die folgende Datei editieren. Ich bevorzuge hier vi:
1 |
vi /etc/pptpd.conf |
Und am Ende die folgenden Zeilen hinzufügen:
1 2 |
localip 10.10.10.1 remoteip 10.10.10.2-254 |
Grundsätzlich kann hier jeder private IP-Adressbereich angegeben werden. Man muss jedoch darauf achten, dass das Netz bzw. die IP-Adressen nicht bereits im lokalen Netzwerk Geräten zugeordnet sind / in Nutzung sind.
Darauf geben wir an, über welche DNS-Namensserver die Auflösung durchgeführt werden soll, wenn Clients per VPN verbunden sind:
1 |
vi /etc/ppp/pptpd-options |
Und fügen am Ende folgende Zeilen ein:
1 2 |
ms-dns 213.73.91.35 ms-dns 85.214.20.141 |
Ich nutze hier einen DNS-Server vom Chaos Computer Club und FoeBud.
Benutzer und Kennwörter einrichten
Öffnet folgende Datei zum Bearbeiten:
1 |
vi /etc/ppp/chap-secrets |
Und fügt Benutzer/Kennwörter in folgendem Format ein:
1 2 3 4 |
benutzername * passwort * # Beispiel max * MusTer3Man! * |
Nach der Änderung der Benutzeraccounts muss der PPTP-Dienst neu gestartet werden:
1 |
/etc/init.d/pptpd restart |
Weiterleitung der Pakete und IPTable-Regeln
Damit alle Daten über die VPN-Leitung am Root-Server auch ins Internet weitergeleitet werden ist eine Änderung in der sysctl.conf nötig:
1 |
vi /etc/sysctl.conf |
Entfernt die beiden führenden // vor folgender Zeile um den Eintrag zu aktivieren:
1 |
net.ipv4.ip_forward=1 |
Speichert die Datei ab und führt ein “sysctl -p” aus um die Änderungen zu übernehmen.
Die folgenden iptable-Regeln erlauben den Zugriff über Port 1723, GRE und die Nutzung von NAT:
1 2 3 |
iptables -I INPUT -p tcp --dport 1723 -m state --state NEW -j ACCEPT iptables -I INPUT -p gre -j ACCEPT iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE |
Passt in der folgenden Regel das Interface eth0 an, sofern es sich von eurem primären Netzwerkinterface am RootServer unterscheidet. Zudem müsst ihr das IP-Netz ändern, solltet ihr bei der Konfiguration des PPTPD ein anderes angegeben haben:
1 |
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -s 10.10.10.0/24 -j TCPMSS --clamp-mss-to-pmtu |
Standardmäßig werden die IPTable-Regeln beim nächsten Start von Debian verworfen. Damit das nicht passiert, müssen wir die Regeln in einer Datei speichern:
1 |
iptables-save > /etc/iptables.rules |
Daraufhin muss folgende Datei mittels vi erstellt…
1 |
vi /etc/network/if-pre-up.d/firewall |
…und mit folgendem Inhalt befüllt werden:
1 2 |
#!/bin/bash /sbin/iptables-restore < /etc/iptables.rules |
Speichert die Datei ab und macht sie ausführbar:
1 |
chmod +x /etc/network/if-pre-up.d/firewall |
Nach einem Neustart wird mittels iptables-restore die gespeicherten Firewall-Regeln wieder importiert.
Nach einem Neustart könnt ihr eure erste VPN-Verbindung in den Netzwerkverbindungen/Netzwerk- und Freigabecenter von Windows erstellen und testen!