Debian VM als VPN-Gateway nutzen

Mit einem VPN-Gateway alle Geräte über eine VPN-Verbindung tunneln. VPN-Anbieter werden immer beliebter und so benutze ich auch einen kommerziellen VPN-Anbieter, um meinen Netzwerkverkehr zu tunneln. Sei es um Datenspeicherungen der Provider zu umgehen oder um eine ausländische IP zu bekommen. Ich benutze seit längerem AirVPN↗ und bin damit mehr als zufrieden. Später werdet ihr sehen wieso.

Um alle Geräte mit dem VPN zu verbinden, macht es Sinn, den Router als VPN-Client laufen zu lassen, sodass alle mit dem Router verbundene Geräte automatisch getunnelt werden. Jedoch habe ich mit einem alten TP-Link TL-WR1043ND↗ nur maximal 8Mb/s und mit einem neueren Asus RT-N65U↗ nur 14Mb/s geschafft. Das ist nicht gerade viel, was dann von einer 100Mbit-Leitung übrig bleibt. Das liegt zum größten Teil an den kleinen Prozessoren in den Routern, immerhin kostet das Ver- und Entschlüsseln einer openVPN-Verbindung Rechenleistung. Die Lösung: Ein alten Computer oder eine Virtuelle Maschine als Gateway.

Debian Server in einer Virtuellen Maschine aufsetzen

Wie man einen Debian-Server aufsetzt, möchte ich hier nicht ausführlich erklären, da das Thema ein anderes ist. Ich werde die Installation aber kurz durchgehen. Zuerst benötigt man ein Debian-Image. Dies kann man sich kostenlos bei debian.de↗ herunterladen. Für unser Vorhaben reicht eine kleine netinst-Iso.  In den meisten Fällen wird die amd64-Version richtig sein. Debian-Installation-fuer-VPN-Gateway-1

Wir wählen „Install“, da wir unser VPN-Gateway so ressourcenschonend wie möglich aufsetzen möchten. Eine grafische Oberfläche brauchen wir dazu nicht. Nun werde ich nur die Debian Installation nur in Stichpunkten durchgehen, da diese auch nicht das Hauptthema dieses Artikels ist. Ausserdem ist sie nicht schwer.

Zuerst wählen wir die Sprache, unser Land und das Tastaturlayout. Als Rechnernamen vergeben wir was aussagekräftiges wie zum Beispiel „Gateway“. Das ist natürlich jedem selber überlassen. Den Domainnamen lassen wir leer. Nun müssen wir das root-Passwort festlegen. Danach einen Benutzernamen und auch für diesen ein Passwort. Zeitzone sollte auch für jeden einleuchtend sein. Als Partitionierungsmethode wählen wir „Geführt – vollständige Festplatte verwenden“. Bei mir läuft das Debian als VM auf einem Hypervisor. Eine 5GB Festplatte reicht völlig aus. Im nächsten Schritt müssen wir die zu partitionierende Festplatte wählen. Dann „Alle Dateien auf eine Partition, für Anfänger empfohlen“. „Partitionierung beenden und Änderungen übernehmen“ wählen. Nachdem wir mit Ja bestätigt haben, dass die Änderungen auf die Festplatte geschrieben werden sollen, installiert sich nun das Grundsystem.

Ist diese abgeschlossen, müssen wir ein Land des Debian-Archiv-Spiegelservers und danach den Spiegelserver selber wählen. Hier sollten man etwas in seiner Nähe wählen. HTTP-Proxy kann in der Regel leer gelassen werden. Dann sollte sich Debian aktuelle Updates holen. Keine Sorge, das dauert nicht so lange wie bei Microsoft! 😉

Nun werden wir gefragt, ob wir an der Paketverwendungserfassung teilnehmen wollen. Da kann man wählen was man möchte, man hat keinen Nachteil wenn man es (nicht) macht.

Bei der zu installierenden Software wählen wir die Debian Desktop Enviroment mittels Leertaste ab. Diese brauchen wir nicht, Druckserver ebenfalls entfernen, dafür aber SSH anhaken, damit wir uns später mittels Putty raufschalten können.

Die Frage, ob der Grub-Bootloader in den Master Boot Record installiert werden soll bejahen wir und wählen im nächsten Schritt das Gerät aus. In der Regel /dev/sda. Nun das Installationsmedium entfernen und neustarten. Nach dem Neustart sollten wir folgendes sehen:

Debian-Login-auf-VPN-Gateway-Server

Damit ist die Grundinstallation unseres Debian-Servers abgeschlossen. Nun können wir alles weitere über PuTTY↗ machen, sprich für können den Server von Monitor und Tastatur erlösen und ihn nach ganz hinten in die Rumpelkammer verbannen. 😉

openVPN-Client als Gateway auf Debian-Server einrichten

PuTTY-Configuration

Es lohnt sich, die IP unseres Gateway-Servers als Saved Session in PuTTY abzuspeichern. Die IP bekommt ihr über den Router heraus. Wenn kein Zugriff auf den Router besteht, dann einmal auf dem Server einloggen und sich mittels „ifconfig“ die Netzwerkkonfigurationen anzeigen zu lassen. Dies erfordert Root-Rechte. Beim erstmaligen Verbinden mit PuTTY erscheint eine Warnmeldung, die mit „Ja“ bestätigt werden muss. Nach Eingabe des Benutzers und des Passworts sollte es in etwa so ausehen:Login-mit-PuTTY-auf-Debian-Server

Mit dem Befehl su bekommen wir nach erfolgreicher Eingabe des root-Passwortes Administratorrechte. Nun müssen wir das openVPN-Paket installieren. Das machen wir mit dem Befehl

apt-get install openvpn

Nun benötigen wir noch unsere OpenVPN-Konfig-Datei. Diese erkennt man an der Dateiendung .ovpn. Die ovpn-Datei bekommen wir bei unserem VPN-Anbieter.

Jetzt müssen wir diese oVPN-Datei auf unseren Server kopieren. Ich verwende dazu WinSCP↗. Falls wir in Putty unseren Server als Verbindungsziel gespeichert haben, können wir uns dieses in WinSCP einfach von Putty importieren.WinSCP-Login-von-Putty-importieren

Als Benutzernamen verwenden wir unseren Debian-Benutzer. Aus Sicherheitsgründen ist der Zugriff mit dem Root-User standardmäßig bei Debian nicht aktiviert.

Wir kopieren nun erstmal unsere OVPN-Datei in unser Home-Verzeichnis des Benutzers und führen den Befehl openvpn Dateiname.opvn aus, um zu testen, ob sich unser Gateway-Server sauber mit dem VPN-Server verbindet. Dafür müssen wir uns im richtigen Verzeichnis befinden, also dort, wo wir unsere ovpn-Datei hinkopiert haben.Verbindungstest-OpenVPN-Gateway-auf-Debian-Server

Nun sollte sich unser Debian-Server mit dem VPN-Server verbunden haben. Das sehen wir daran, wenn folgendes angezeigt wird:

Initialization-Sequence-completed-openvpnWir wollen jetzt jedoch nochmal auf Nummer sicher gehen, dass dem wirklich so ist. Dazu machen wir uns ein zweites Putty-Fenster auf, loggen uns ein und können zum Beispiel folgenden Befehl verwenden, um unsere öffentliche IP-Adresse herauszufinden:

wget http://ipinfo.io/ip -qO –

ipinfo-mit-wget

Für mehr Details sollte man sich wieder mittels su und dem root-Passwort Administratorrechte holen und mittels des Befehls

ifconfig

sehen wir auch, dass ein weiteres Netzwerk-Interface (tun0) angelegt wurde.tun0-Interface-auf-Debian-openvpn-Gateway

Die OpenVPN-Verbindung trennen wir wieder indem wir im PuTTY-Fenster mit dem laufenden openVPN-Prozess Strg + C drücken. Damit wird die Verbindung sauber getrennt.

 

Debain VPN-Client als Gateway einrichten

Nun müssen wir noch bewerkstellingen, dass wir sämtlichen Traffic unserer Clients über den Gateway-Server durch den VPN-Tunnel nach draußen schicken können. Dazu müssen wir unserem Debian Server sagen, dass sämtlicher Datenverkehr von eth0 über tun0 wieder rausgeleitet wird. Dazu benutzen wir iptables.

Einen sehr ausführlichen Artikel darüber findet man hier: Ubuntu Help↗

Um die ganze Sache jedoch abzukürzen, hier der leichtere Weg: 😉

Stellt sicher, dass ihr als root eingeloggt seid. Dann gebt ihr folgende Befehle ein. Nicht wundern, bei der Eingabe bekommt man kein Feedback, also einfach einen nach dem anderen so eingeben. Spätestens jetzt lernt ihr es zu schätzen, dass ihr PuTTY nutzt und copy-pasten könnt!

sh -c ‚echo 1 > /proc/sys/net/ipv4/ip_forward‘

iptables -A FORWARD -o tun0 -i eth0 -s 192.168.1.0/24 -m conntrack –ctstate NEW -j ACCEPT

iptables -A FORWARD -m conntrack –ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A POSTROUTING -t nat -j MASQUERADE

iptables-save | tee /etc/iptables.sav

Das war es auch schon. Nun müssen wir noch in der Konfigurationdatei /etc/sysctl.conf eine kleine Einstellung vornehmen. Öffnet die Datei mit dem Befehl

nano /etc/sysctl.conf

Sucht den Punkt #net.ipv4.ip_forward=1 und entfernt die Raute (#) davor. sysctlconf-aenderung-net-ipv4-ip_forward-1

Mittels Strg + X, J und Enter speichern wir die Datei und schließen Nano. Nun wird es Zeit unser VPN-Gateway mit einem Client zu testen!

Client-Konfiguration für Debian VPN-Gateway

Unter Windows gehen wir dafür in die Systemsteuerungen unter Systemsteuerung\Netzwerk und Internet\Netzwerkverbindungen und wählen auf unserer aktiven Netzwerkschnittstelle mittels Rechtsklick „Eigenschaften“ aus.

windows-Netzwerkverbindungen

Dann klicken wir einmal auf Internetprotokoll Version 4 (TCP/IPv4) aus und klicken auf Eigenschaften.

windows-netzwerkverbindungen-ipv4-aendern

Nun müssen wir die IP-Adressen manuell eintragen. Unter IP-Adresse sollte man die eintragen, die man auch schon vorher vom DHCP-Server zugewiesen bekommen hat. Subnetzmaske bleibt in den meisten Fällen 255.255.255.0 und unter Standardgateway wählen wir die IP unseres Debian-VPN-Gateway-Servers. In meinem Falle 192.168.178.6.

Eigenschaften-von-Internetprotokoll-Version4_TCP_IPv4_IP-manuell-eintragen

Unter DNS habe ich noch Adressen vom opennicproject↗ eingetragen.

Die meisten VPN-Anbieter stellen auch eigene DNS-Server bereit, natürlich kann man auch die bekannten von Google (8.8.8.8 oder 8.8.4.4) nehmen. Mir ist nur der von der Telekom auf die Nerven gegangen, als ich jedes mal bei einem Tippfehler auf der T-Online-Seite gelandet bin.

Damit wir nun nicht ständig die Netzwerkeinstellungen auf sämtlichen Geräten ändern müssen, sobald wir mal ein einem anderen Netzwerk sind, bietet es sich an, einen zweiten Router oder AccessPoint als Zugangspunkt für alle möglichen Clients, wie Smartphones, Notebooks, Tablets, etc. etc zu nutzen. In dem zweiten Router, welcher auch ein alter ausrangierter sein kann, müssen wir nur bei den WAN Einstellungen unseren GatewayServer als Gateway eintragen. Schon kümmert sich unser zweiter Router darum, dass sämtlicher Traffic von sämtlichen Geräten durch den VPN-Tunnel geschleust wird. In meinem Falle nutze ich den Asus RT-N65U↗. Falls ihr euch über WLAN verbindet, sollte ihr sicher gehen, dass dieses nicht euer neuer Flaschenhals ist!

WAN-IP-Einstellung-fuer-VPN-Gateway

Nun zum Resultat der ganzen Geschichte:

Von meiner 100Mbit-Leitung von der Telekom bekomme ich annähernd alles über den Tunnel!

openvpn-gateway-speedtestnet_results

Auch der Ping hat sich nicht groß verschlechtert. Dafür das der Datenverkehr jetzt durch 2 Router, ein Gateway und einen VPN-Server muss hat er sich nur um rund 5 Millisekunden verschlechtert. Die Download und Upload-Raten werden bei wiederholten Tests bestimmt auch noch ein bisschen höher sein. Aber mit 5% Verlust im Vergleich zu direkten VDSL-Leitung kann ich gut leben.

Damit schafft man es so manches Mal unter die Top 10-User-Speed-Listen von AirVPN↗.

Ein Gedanke zu „Debian VM als VPN-Gateway nutzen“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.