GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> OpenVPN

Einrichten eines OpenVPN-Servers mit Ubuntu und Viscosity

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=1
wird

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.

  1. Öffnen Sie diese Datei in nano:
    sudo nano /etc/default/ufw
  2. 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"
  3. Da unser Server diese Firewall nicht zum Schutz verwendet, ändern Sie diese von "DROP" auf "ACCEPT"
  4. 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"
  5. Ändern Sie die Weiterleitungsrichtlinie von "DROP" in "ACCEPT"
  6. 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.

  1. Geben Sie Folgendes in das Terminal ein:
    sudo ufw allow ssh
  2. 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.

  1. Öffnen Sie die ufw-Konfigurationsdatei in nano:
    sudo nano /etc/ufw/before.rules
  2. 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
  3. 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“)
  4. 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
  5. 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
  6. Drücken Sie ctrl + x Nano beenden. Speichern Sie die Änderungen, wenn Sie dazu aufgefordert werden.

Ufw kann jetzt aktiviert werden.

  1. Geben Sie im Terminal Folgendes ein:
    sudo ufw enable
  2. 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.

  1. Öffnen Sie die NetworkManager-Konfiguration:
    nano /etc/NetworkManager/NetworkManager.conf
  2. Kommentieren Sie die Zeile aus, die dnsmasq aktiviert, indem Sie am Anfang der Zeile ein '#'-Zeichen hinzufügen:
    dns=dnsmasq
  3. 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.

  1. Erstellen Sie ein Backup der ursprünglichen dnsmasq-Konfiguration:
    cp /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
  2. 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
  3. Verhindern Sie, dass unsere DNS-Anfragen die Root-DNS-Server mit fehlerhaften Anfragen überschwemmen:
    echo -e "domain-needed\nbogus-priv" >> /etc/dnsmasq.conf
  4. 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
  5. 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.

  1. Erstellen Sie eine Sicherungskopie der Originaldatei:
    cp /etc/rc.local /etc/rc.local.bak
  2. Geben Sie Folgendes ein:
    echo -e "service dnsmasq restart\nexit 0" >> /etc/rc.local
  3. Machen Sie dieses Skript ausführbar:
    chmod +x /etc/rc.local

Wir sind jetzt mit der Einrichtung des DNS-Servers fertig.


OpenVPN
  1. Installation und Einrichtung von Plex Media Server auf Ubuntu

  2. So richten Sie einen OpenVPN-Server unter Ubuntu 22.04 ein und konfigurieren ihn

  3. Amavis und ClamAV auf dem Ubuntu-Mailserver einrichten

  4. Einrichten eines Verschleierungsservers mit Obfsproxy und Viscosity

  5. OpenVPN-Server unter Ubuntu 20.04 installieren und einrichten

Einrichten eines OpenVPN-Servers mit Sophos UTM und Viscosity

Einrichten eines OpenVPN-Servers mit Sophos XG und Viscosity

Einrichten eines OpenVPN-Servers mit Synology und Viscosity

Einrichten eines OpenVPN-Servers mit Tomato-Router und Viscosity

Einrichten eines OpenVPN-Servers mit Ubiquiti EdgeRouter (EdgeOS) und Viscosity

Einrichten eines OpenVPN-Servers mit VyOS und Viscosity