Diese Anleitung führt Sie durch die Schritte zum Einrichten eines OpenVPN-Servers auf einem Ubuntu-Host, mit dem Sie von einem entfernten Standort aus sicher auf Ihr Heim-/Büronetzwerk zugreifen und optional Ihren gesamten Netzwerkverkehr darüber senden können, damit Sie auf das Internet zugreifen können auch sicher.
Bevor Sie diese Anleitung verwenden, empfehlen wir Ihnen dringend, unseren Artikel „Einführung in den Betrieb eines OpenVPN-Servers“ zu lesen.
Vorbereitung
Für diese Anleitung gehen wir von Folgendem aus:
- Sie haben bereits die neueste Version von Ubuntu installiert (20.04 zum Zeitpunkt des Schreibens)
- Sie haben root Zugriff auf diese Installation
- Diese Installation von Ubuntu ist eine Neuinstallation
- Kennen Sie den Namen Ihrer Netzwerkschnittstellen (Anweisungen gleich unten)
- Sie haben Zugriff auf den Server über Terminal oder SSH
- Sie können Dateien mit SCP oder einem ähnlichen Protokoll auf den und vom Server kopieren
- Sie haben bereits eine Kopie von Viscosity auf Ihrem Client-Gerät installiert
Wenn Sie eine Kopie von Ubuntu herunterladen und installieren müssen, finden Sie Informationen unter http://www.ubuntu.com/download. Wir werden nicht auf die Details zum Einrichten einer Ubuntu-Instanz eingehen, viele Anleitungen sind online zu finden. Wenn Sie eine andere Version von Ubuntu verwenden, ist es sehr wahrscheinlich, dass viele oder sogar alle der in diesem Handbuch beschriebenen Schritte weiterhin gelten. Wenn Sie einen OpenVPN-Server auf einem anderen Betriebssystem einrichten möchten, lesen Sie bitte unsere anderen Anleitungen.
Wenn Sie noch keine Kopie von Viscosity auf Ihrem Client installiert haben, lesen Sie bitte diese Einrichtungsanleitung zur Installation von Viscosity (Mac | Windows).
Wenn Sie neu bei SSH oder SCP sind, haben wir einige Anweisungen in unserem Einführungsleitfaden.
Um den Namen Ihrer primären Netzwerkschnittstelle (WAN-Zugriff) zu erhalten, führen Sie Folgendes auf Ihrem Ubuntu-Server aus:
ip route | grep default | awk '{print $NF}'
Wenn Sie über eine zweite Netzwerkschnittstelle für den Zugriff auf Computer in Ihrem lokalen Netzwerk verfügen, benötigen Sie beim Einrichten der Firewall und des Routings auch deren Namen.
Unterstützung
Leider können wir keinen direkten Support für die Einrichtung eines eigenen OpenVPN-Servers leisten. Wir stellen diesen Leitfaden höflich zur Verfügung, um Ihnen den Einstieg zu erleichtern und Ihre Kopie von Viscosity optimal zu nutzen. Wir haben die Schritte in diesem Handbuch gründlich getestet, um sicherzustellen, dass Sie, wenn Sie die unten aufgeführten Anweisungen befolgen, auf dem besten Weg sind, die Vorteile des Betriebs Ihres eigenen OpenVPN-Servers zu genießen.
Für weitere Informationen oder Hilfe zu Ubuntu gibt es eine Reihe von Community-Ressourcen unter https://www.ubuntu.com/community
Erste Schritte
Aktualisieren Sie zuerst Ihren Server:
sudo apt-get update
sudo apt-get -y upgrade
Möglicherweise werden Sie darüber informiert, dass Sie nach Abschluss der Paketaktualisierungen neu starten müssen. Wenn ja, fahren Sie fort und starten Sie neu, melden Sie sich dann wieder an und fahren Sie fort.
Um einen OpenVPN-Server einzurichten, müssen wir OpenVPN installieren. Führen Sie die folgenden Befehle aus und warten Sie, bis jeder abgeschlossen ist, um das OpenVPNs-Repository zu apt hinzuzufügen, damit OpenVPN automatisch installiert und aktualisiert wird, und installieren Sie dann OpenVPN:
sudo wget -O - https://swupdate.openvpn.net/repos/repo-public.gpg | sudo apt-key add -
echo "deb http://build.openvpn.net/debian/openvpn/stable focal main" | sudo tee /etc/apt/sources.list.d/openvpn-aptrepo.list
Hinweis:Wenn Sie eine ältere Ubuntu-Distribution verwenden, ersetzen Sie „focal“ im obigen Befehl durch „xenial“ bei Ubuntu 16.04 oder „bionic“ bei Ubuntu 18.04.
sudo apt-get update
sudo apt-get -y install openvpn
Generieren von Konfigurationen, Zertifikaten und Schlüsseln
Im nächsten Schritt generieren Sie Ihre Konfigurationen für den Server und Ihre Clients sowie die dazugehörigen Zertifikate. Sie können dies ganz einfach tun, indem Sie dem Leitfaden zum Erstellen von Zertifikaten und Schlüsseln folgen. Sie können entweder dem Abschnitt für Ubuntu folgen und Ihre Client-Konfigurationen vom Server kopieren (wir empfehlen dies) oder alles auf Ihrem PC oder Mac generieren und den Server kopieren Ordner, der auf Ihrem Ubuntu-Server generiert wird.
Wenn Sie den Standard-DNS-Server (10.8.0.1) verwenden, müssen Sie selbst einen DNS-Server einrichten. Anweisungen finden Sie am Ende dieses Artikels. Wir empfehlen stattdessen die Verwendung eines vorhandenen DNS-Servers, am einfachsten ist ein öffentlich verfügbarer DNS-Server wie der von Google (8.8.8.8 und 8.8.4.4).
Nachdem Sie Ihre Konfigurationen generiert haben, müssen Sie die Serverkonfiguration auf Ihren Server übertragen oder Ihre Clientkonfigurationen von Ihrem Server übertragen. Wenn Sie lokalen Zugriff haben, ist ein USB-Laufwerk am einfachsten. Falls nicht, finden Sie in unserem Einführungshandbuch Hilfestellungen zum Übertragen von Dateien mit SCP.
IP-Weiterleitung
Um unsere Anfragen durch das VPN weiterzuleiten, möchten wir, dass sich der OpenVPN-Server wie ein Router verhält. Daher müssen wir die IP-Weiterleitung aktivieren. Im Terminal können wir die IP-Weiterleitung auf dem Ubuntu-Server aktivieren, indem wir Folgendes eingeben:
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
Bei jedem Neustart des Servers wird dieser Befehl jedoch rückgängig gemacht. Um sicherzustellen, dass dies nicht passiert, müssen wir die Datei sysctl.conf mit nano ändern. Geben Sie ein:
sudo nano /etc/sysctl.conf
Scrollen Sie nach unten zum Abschnitt:
# Uncomment the next line to enable packet forwarding for IPv4 #net.ipv4.ip_forward=1
Löschen Sie das ‚#‘-Zeichen am Anfang der Zeile, sodass es jetzt zu:
net.ipv4.ip_forward=1wird
Wenn Sie fertig sind, drücken Sie ctrl
+ x
Nano beenden. Speichern Sie die Änderungen, wenn Sie dazu aufgefordert werden.
Um sicherzustellen, dass Hosts im Heim-/Büronetzwerk den VPN-Server finden können, müssen wir den Server dazu bringen, auf alle ARP-Anfragen zu antworten:
echo 1 | sudo tee /proc/sys/net/ipv4/conf/ens33/proxy_arp
wobei ens33 ist die Netzwerkschnittstelle des Heim-/Büronetzwerks, wenn Sie zwei Netzwerkschnittstellen haben, oder andernfalls Ihre primäre Netzwerkschnittstelle (WAN) (weitere Informationen finden Sie im Abschnitt „Vorbereitung“).
Firewall-Regeln
Wir werden die Uncomplicated Firewall (ufw) verwenden, die standardmäßig auf Ubuntu installiert ist, um zu steuern, wie der Datenverkehr durch den OpenVPN-Server geleitet wird. Wenn Ihr Ubuntu-Server von außen erreichbar ist (direkte Verbindung zum Internet mit eigener IP-Adresse, ohne Router), dann sollten Sie mit ufw den von uns oben eingerichteten OpenVPN-Port (1194) zulassen. Andernfalls werden wir ufw so einstellen, dass der gesamte Datenverkehr zugelassen wird, und die Einstellungen für das Routing konfigurieren.
Wenn Ihr Ubuntu-Server KEIN ufw zum Schutz benötigt (d.h. es befindet sich hinter einem Router oder hat eine andere Firewall eingerichtet), müssen Sie die Standardeingaberegel so einstellen, dass der gesamte Datenverkehr standardmäßig durch ufw geleitet wird. Dazu müssen wir die Konfigurationsdatei ändern.
- Öffnen Sie diese Datei in nano:
-
sudo nano /etc/default/ufw
-
- Scrollen Sie nach unten zum Abschnitt:
-
# Set the default input policy to ACCEPT, DROP, or REJECT. Please note that if
# you change this you will most likely want to adjust your rules.
DEFAULT_INPUT_POLICY="DROP"
-
- Da unser Server diese Firewall nicht zum Schutz verwendet, ändern Sie diese von "DROP" auf "ACCEPT"
- Scrollen Sie nach unten zum Abschnitt:
-
# Set the default forward policy to ACCEPT, DROP or REJECT. Please note that
# if you change this you will most likely want to adjust your rules
DEFAULT_FORWARD_POLICY="DROP"
-
- Ändern Sie die Weiterleitungsrichtlinie von "DROP" in "ACCEPT"
- Drücken Sie
ctrl
+x
Nano beenden. Speichern Sie die Änderungen, wenn Sie dazu aufgefordert werden.
Wenn Ihr Ubuntu-Server ufw benötigt, um ihn zu schützen , müssen Sie ihm mitteilen, welche Ports zugelassen werden sollen, da er die standardmäßigen Eingabe- und Weiterleitungsrichtlinien von DROP hat. Wenn Sie den OpenVPN-Server von einem entfernten Standort aus ausführen, müssen Sie eine SSH-Verbindung herstellen, um Einstellungen zu ändern. Daher müssen wir der Firewall mitteilen, dass sie SSH-Verkehr zulassen soll.
- Geben Sie Folgendes in das Terminal ein:
-
sudo ufw allow ssh
-
- Der VPN-Datenverkehr, den wir an den OpenVPN-Server senden, erfolgt über UDP auf Port 1194, geben Sie also in das Terminal ein:
-
sudo ufw allow 1194/udp
-
Wenn Sie andere Dienste auf Ihrem Ubuntu-Server ausführen, müssen Sie sicherstellen, dass Sie deren Datenverkehr auch über ufw zulassen. Stellen Sie sicher, dass Sie alle Zulassungsregeln für alle anderen Ports hinzufügen, auf denen Ihr Ubuntu-Server lauscht (z. B. ein Plex-Medienserver oder vielleicht Ihr eigener E-Mail-Server).
Weiter, unabhängig von Ihrer Netzwerkkonfiguration , müssen Sie die Routing-Regeln für ufw einrichten.
- Öffnen Sie die ufw-Konfigurationsdatei in nano:
-
sudo nano /etc/ufw/before.rules
-
- Bewegen Sie den Cursor unter den Abschnitt:
-
#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
# ufw-before-input
# ufw-before-output
# ufw-before-forward
-
- Folgendes einfügen:
-
# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Uncomment the next POSTROUTING line and replace ens33 with the name
# of your Local Network Interface if you have a second network interface
# for accessing machines on your local network
# Allow OpenVPN client to communicate with local home network
#-A POSTROUTING -s 10.8.0.0/24 -d 192.168.0.0/24 -o ens32 -j MASQUERADE
# Allow traffic from OpenVPN client to your WAN and/or LAN via ens33
-A POSTROUTING -s 10.8.0.0/24 -o ens33 -j MASQUERADE
COMMIT
# END OPENVPN RULES- Ersetzen Sie ens33 mit dem Namen Ihrer primären Netzwerkschnittstelle, falls dieser anders ist (weitere Informationen finden Sie im Abschnitt „Vorbereitung“)
-
- Bewegen Sie den Cursor unter den Abschnitt:
-
# Don't delete these required lines, otherwise there will be errors
*filter
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-not-local - [0:0]
# End required lines
-
- Fügen Sie Folgendes ein:
-
#Accept all traffic to and from VPN
-A ufw-before-input -i tun+ -j ACCEPT
-A ufw-before-output -i tun+ -j ACCEPT
# Forward traffic to and from the VPN
-A ufw-before-forward -s 10.8.0.0/24 -j ACCEPT
-A ufw-before-forward -d 10.8.0.0/24 -j ACCEPT
-
- Drücken Sie
ctrl
+x
Nano beenden. Speichern Sie die Änderungen, wenn Sie dazu aufgefordert werden.
Ufw kann jetzt aktiviert werden.
- Geben Sie im Terminal Folgendes ein:
-
sudo ufw enable
-
- Wenn Sie per SSH in diese Ubuntu-Instanz eingebunden sind, wird die folgende Eingabeaufforderung angezeigt:
-
Command may disrupt existing ssh connections. Proceed with operation (y|n)?
- Darauf sollten Sie mit
y
antworten .
-
Die folgende Ausgabe wird dann angezeigt (unabhängig von SSH oder nicht)
Firewall is active and enabled on system startup
Starten des OpenVPN-Servers
An dieser Stelle sind die Grundlagen abgeschlossen. Ihre Serverkonfiguration und Dateien sollten sich auf Ihrem Server befinden, entweder auf dem Server generiert oder von dort kopiert, wo Sie sie generiert haben.
Kopieren Sie zunächst die Serverkonfigurationsdateien in das OpenVPN-Verzeichnis:
sudo cp /path/to/configs/server/* /etc/openvpn/
Starten Sie nun Ihren Server und aktivieren Sie ihn auch nach einem Neustart.
sudo systemctl enable [email protected]
sudo systemctl start [email protected]
Um den Serverstatus zu prüfen, geben Sie ein:
sudo systemctl status [email protected]
Darauf sollte er antworten mit:
Active: active (running) since Thu 2017-06-01 17:06:29 PDT; 4s ago
Wenn der Server nicht als aktiv (läuft) aufgeführt ist, sollten Sie eine Protokollausgabe sehen, die anzeigt, was schief gelaufen ist.
Ihr OpenVPN-Server ist jetzt betriebsbereit und bereit für die Verbindung.
Router-Setup
Wenn Ihr Ubuntu-Server direkt erreichbar ist , dann können Sie diesen Abschnitt überspringen . Es muss kein Router konfiguriert werden.
Wenn sich Ihr Ubuntu-Server jedoch hinter einem Router befindet (z. B. in Ihrem Heim-WLAN), müssen Sie Ihren Router so konfigurieren, dass er VPN-Verkehr zulässt. Weitere Informationen finden Sie in unserem Artikel Einführung in den Betrieb eines OpenVPN-Servers.
Einrichten der Viskosität
Der letzte Schritt ist die Einstellung der Viskosität. Dank openvpn-generate ist dies so einfach wie das Importieren und Verbinden.
Importieren
Kopieren Sie Ihre *.visz-Datei, die Sie mit openvpn-generate erstellt haben, auf Ihren Mac oder Windows-Computer, auf dem Viscosity installiert ist, und doppelklicken Sie auf die Datei. Sie sollten eine Eingabeaufforderung sehen, dass die Konfiguration erfolgreich importiert wurde.
Herstellen und Verwenden Ihrer VPN-Verbindung
Sie können jetzt eine Verbindung herstellen. Klicken Sie auf das Viskositätssymbol in der macOS-Menüleiste oder der Windows-Taskleiste, um das Viskositätsmenü zu öffnen, wählen Sie die importierte Verbindung aus und Viscosity stellt eine Verbindung her.
Um zu überprüfen, ob das VPN betriebsbereit ist, können Sie das Fenster „Details“ im Menü „Viskosität“ öffnen. Dadurch können Sie Verbindungsdetails, Datenverkehr und das OpenVPN-Protokoll anzeigen.
Das war's, Sie haben Ihren eigenen OpenVPN-Server eingerichtet. Herzlichen Glückwunsch, Sie können jetzt die Vorteile des Betriebs Ihres eigenen OpenVPN-Servers genießen!
Basis-DNS-Server
Wenn Sie sich dafür entscheiden, Ihren eigenen DNS-Server für Clients auszuführen, finden Sie im Folgenden ein Beispiel für die Einrichtung von dnsmasq. Installieren Sie dnsmasq mit dem folgenden Befehl:
sudo apt-get install -y dnsmasq
Sie müssen zunächst die von NetworkManager standardmäßig bereitgestellte dnsmasq-Instanz deaktivieren. Diese Standardinstanz ist eingeschränkt und erlaubt uns nicht, DNS-Anforderungen über das VPN abzuhören.
- Öffnen Sie die NetworkManager-Konfiguration:
-
nano /etc/NetworkManager/NetworkManager.conf
-
- Kommentieren Sie die Zeile aus, die dnsmasq aktiviert, indem Sie am Anfang der Zeile ein '#'-Zeichen hinzufügen:
-
dns=dnsmasq
-
- Drücken Sie
ctrl
+x
Nano beenden. Speichern Sie die Änderungen, wenn Sie dazu aufgefordert werden.
Als nächstes müssen wir einige der Standardkonfigurationen ändern.
- Erstellen Sie ein Backup der ursprünglichen dnsmasq-Konfiguration:
-
cp /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
-
- Stellen Sie den DNS-Server so ein, dass er Anfragen vom Ubuntu-Server (127.0.0.1) und vom VPN (10.8.0.1) abhört:
-
echo -e "listen-address=127.0.0.1, 10.8.0.1\nbind-interfaces" > /etc/dnsmasq.conf
-
- Verhindern Sie, dass unsere DNS-Anfragen die Root-DNS-Server mit fehlerhaften Anfragen überschwemmen:
-
echo -e "domain-needed\nbogus-priv" >> /etc/dnsmasq.conf
-
- Verwenden Sie die DNS-Server von Google, um Anfragen aufzulösen (Sie können den DNS-Auflösungsdienst Ihrer Wahl verwenden):
-
echo -e "server=8.8.8.8\nserver=8.8.4.4" >> /etc/dnsmasq.conf
-
- Starten Sie den dnsmasq-Dienst neu, um unsere Änderungen zu aktivieren:
-
service dnsmasq restart
-
Geben Sie Folgendes ein, um zu überprüfen, ob der DNS-Server die angeforderten Adressen abhört:
netstat -anup
Sie sollten eine Liste mit Adressen sehen, einschließlich 127.0.0.1 und 10.8.0.1:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name ... udp 0 0 127.0.0.1:53 0.0.0.0:* 54892/dnsmasq udp 0 0 10.8.0.1:53 0.0.0.0:* 54892/dnsmasq ...
Zuletzt müssen wir sicherstellen, dass dnsmasq nach OpenVPN beim Systemstart gestartet wird. Standardmäßig wird dnsmasq vor OpenVPN ausgeführt, wodurch verhindert wird, dass der DNS-Server für das VPN eingerichtet wird, da das VPN noch nicht existiert.
- Erstellen Sie eine Sicherungskopie der Originaldatei:
-
cp /etc/rc.local /etc/rc.local.bak
-
- Geben Sie Folgendes ein:
-
echo -e "service dnsmasq restart\nexit 0" >> /etc/rc.local
-
- Machen Sie dieses Skript ausführbar:
-
chmod +x /etc/rc.local
-
Wir sind jetzt mit der Einrichtung des DNS-Servers fertig.