GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Richten Sie OpenConnect VPN Server (ocserv) auf Ubuntu 20.04 mit Let’s Encrypt ein

Dieses Tutorial zeigt Ihnen, wie Sie Ihren eigenen VPN-Server betreiben, indem Sie den OpenConnect VPN-Server auf Ubuntu 20.04 installieren. OpenConnect VPN-Server, auch bekannt als ocserv , ist eine Open-Source-Implementierung des Cisco AnyConnect VPN-Protokolls, das in Unternehmen und Universitäten weit verbreitet ist. AnyConnect ist ein SSL-basiertes VPN-Protokoll, das es einzelnen Benutzern ermöglicht, sich mit einem entfernten Netzwerk zu verbinden.

Hinweis :Dieses Tutorial funktioniert auch auf Ubuntu 20.10 und Ubuntu 21.04.

Warum einen eigenen VPN-Server einrichten?

  • Vielleicht sind Sie ein VPN-Dienstleister oder ein Systemadministrator, was Ihnen obliegt, unseren eigenen VPN-Server einzurichten.
  • Sie vertrauen der No-Logging-Richtlinie von VPN-Dienstanbietern nicht, also entscheiden Sie sich für die Selbsthost-Route.
  • Sie können VPN verwenden, um Netzwerksicherheitsrichtlinien zu implementieren. Wenn Sie beispielsweise Ihren eigenen E-Mail-Server betreiben, können Sie Benutzer dazu auffordern, sich nur über die IP-Adresse des VPN-Servers anzumelden, indem Sie eine Whitelist für IP-Adressen in der Firewall erstellen. Dadurch wird Ihr E-Mail-Server gehärtet, um Hacking-Aktivitäten zu verhindern.
  • Vielleicht möchten Sie einfach nur wissen, wie der VPN-Server funktioniert.

Funktionen des OpenConnect VPN-Servers

  • Leicht und schnell. In meinem Test kann ich YouTube 4K-Videos mit OpenConnect VPN ansehen. YouTube ist in meinem Land (China) gesperrt.
  • Läuft auf Linux und den meisten BSD-Servern.
  • Kompatibel mit dem Cisco AnyConnect-Client
  • Es gibt OpenConnect-Client-Software für Linux, MacOS, Windows und OpenWRT. Für Android und iOS können Sie den Cisco AnyConnect Client verwenden.
  • Unterstützt Passwortauthentifizierung und Zertifikatsauthentifizierung
  • Unterstützt RADIUS-Kontoführung.
  • Unterstützt virtuelles Hosting (mehrere Domains).
  • Einfach einzurichten

Besonders gefällt mir, dass es im Vergleich zu anderen VPN-Technologien für den Endnutzer sehr einfach und bequem ist, OpenConnect VPN zu nutzen. Immer wenn ich eine Linux-Distribution auf meinem Computer installiere und Websites schnell entsperren oder meine IP-Adresse verbergen möchte, installiere ich den OpenConnect-Client und verbinde mich mit nur zwei Befehlszeilen mit dem Server:

sudo apt install openconnect

sudo openconnect -b vpn.mydomain.com

Es gibt auch einen OpenConnect VPN-Client für Fedora, RHEL, CentOS, Arch Linux und OpenSUSE. Sie können es einfach mit Ihrem Paketmanager installieren.

sudo dnf install openconnect
sudo yum install openconnect
sudo pacman -S openconnect

Anforderungen

Um diesem Tutorial zu folgen, benötigen Sie einen VPS (Virtual Private Server), der frei auf gesperrte Websites zugreifen kann (außerhalb Ihres Landes oder Internetfiltersystems). Ich empfehle Kamatera VPS, das Folgendes bietet:

  • Kostenlose 30-Tage-Testversion.
  • Beginnt bei 4 $/Monat (1 GB RAM)
  • Hochleistungs-KVM-basiertes VPS
  • 9 Rechenzentren auf der ganzen Welt, darunter USA, Kanada, Großbritannien, Deutschland, Niederlande, Hongkong und Israel.

Befolgen Sie das unten verlinkte Tutorial, um Ihren Linux-VPS-Server bei Kamatera zu erstellen.

  • So erstellen Sie einen Linux-VPS-Server auf Kamatera

Sobald Sie einen VPS haben, auf dem Ubuntu 20.04 ausgeführt wird, befolgen Sie die nachstehenden Anweisungen.

Sie benötigen außerdem einen Domänennamen, um HTTPS für OpenConnect VPN zu aktivieren. Ich habe meinen Domainnamen bei NameCheap registriert, weil der Preis niedrig ist und sie Whois-Datenschutz lebenslang kostenlos anbieten.

Schritt 1:OpenConnect VPN-Server auf Ubuntu 20.04 installieren

Melden Sie sich bei Ihrem Ubuntu 20.04-Server an. Verwenden Sie dann apt um den ocserv zu installieren Paket aus dem Standard-Ubuntu-Repository.

sudo apt update
sudo apt install ocserv

Nach der Installation wird der OpenConnect VPN-Server automatisch gestartet. Sie können den Status überprüfen mit:

systemctl status ocserv

Beispielausgabe:

● ocserv.service - OpenConnect SSL VPN server
     Loaded: loaded (/lib/systemd/system/ocserv.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2020-04-12 19:57:08 HKT; 12s ago
       Docs: man:ocserv(8)
   Main PID: 216409 (ocserv-main)
      Tasks: 2 (limit: 9451)
     Memory: 1.6M
     CGroup: /system.slice/ocserv.service
             ├─216409 ocserv-main
             └─216429 ocserv-sm

Hinweis:Wenn der obige Befehl nicht sofort beendet wird, können Sie die Q-Taste drücken, um die Kontrolle über das Terminal zurückzugewinnen.

Wenn es nicht läuft, können Sie es starten mit:

sudo systemctl start ocserv

Standardmäßig lauscht der OpenConnect VPN-Server auf TCP- und UDP-Port 443. Wenn er vom Webserver verwendet wird, kann der VPN-Server wahrscheinlich nicht gestartet werden. Wir werden später sehen, wie man den Port in der OpenConnect VPN-Konfigurationsdatei ändert.

Wenn auf Ihrem Server eine Firewall läuft, müssen Sie die Ports 80 und 443 öffnen. Wenn Sie beispielsweise UFW verwenden, führen Sie den folgenden Befehl aus.

sudo ufw allow 80,443/tcp

Schritt 2:Let’s Encrypt Client (Certbot) auf Ubuntu 20.04 Server installieren

Der gnutls-bin Paket zusammen mit ocserv installiert bietet Tools zum Erstellen Ihrer eigenen Zertifizierungsstelle und Ihres eigenen Serverzertifikats, aber wir erhalten und installieren das Let’s Encrypt-Zertifikat. Der Vorteil der Verwendung des Let’s Encrypt-Zertifikats besteht darin, dass es kostenlos und einfacher einzurichten ist und von der VPN-Client-Software als vertrauenswürdig eingestuft wird.

Führen Sie die folgenden Befehle aus, um den Let’s Encrypt-Client (certbot) aus dem standardmäßigen Ubuntu-Repository zu installieren.

sudo apt install certbot

Um die Versionsnummer zu prüfen, führen Sie

aus
certbot --version

Beispielausgabe:

certbot 0.40.0

Schritt 3:Erhalten Sie ein vertrauenswürdiges TLS-Zertifikat von Let’s Encrypt

Ich empfehle die Verwendung des standalone oder webroot Plugin zum Abrufen des TLS-Zertifikats für ocserv.

Eigenständiges Plugin

Wenn auf Ihrem Ubuntu 20.04-Server kein Webserver läuft und Sie möchten, dass der OpenConnect VPN-Server Port 443 verwendet, können Sie das eigenständige Plugin verwenden, um ein TLS-Zertifikat von Let’s Encrypt zu erhalten. Führen Sie den folgenden Befehl aus. Vergessen Sie nicht, einen A-Eintrag für Ihren Domainnamen festzulegen.

sudo certbot certonly --standalone --preferred-challenges http --agree-tos --email [email protected] -d vpn.example.com

Wo:

  • certonly :Erhalten Sie ein Zertifikat, aber installieren Sie es nicht.
  • --standalone :Verwenden Sie das eigenständige Plugin, um ein Zertifikat zu erhalten
  • --preferred-challenges http :Führen Sie eine http-01-Abfrage durch, um unsere Domäne zu validieren, die Port 80 verwendet.
  • --agree-tos :Stimmen Sie den Nutzungsbedingungen von Let’s Encrypt zu.
  • --email :Die E-Mail-Adresse wird für die Kontoregistrierung und -wiederherstellung verwendet.
  • -d :Geben Sie Ihren Domänennamen an.

Wie Sie dem folgenden Screenshot entnehmen können, habe ich das Zertifikat erfolgreich erhalten.

Verwendung des Webroot-Plugins

Wenn Ihr Ubuntu 20.04-Server über einen Webserver verfügt, der Port 80 und 443 überwacht, ist es eine gute Idee, das Webroot-Plugin zu verwenden, um ein Zertifikat zu erhalten, da das Webroot-Plugin mit so ziemlich jedem Webserver funktioniert und wir das nicht installieren müssen Zertifikat im Webserver.

Zuerst müssen Sie einen virtuellen Host für vpn.example.com erstellen.

Apache

Wenn Sie Apache verwenden, dann

sudo nano /etc/apache2/sites-available/vpn.example.com.conf

Und fügen Sie die folgenden Zeilen in die Datei ein.

<VirtualHost *:80>        
        ServerName vpn.example.com

        DocumentRoot /var/www/ocserv
</VirtualHost>

Speichern und schließen Sie die Datei. Erstellen Sie dann das Web-Root-Verzeichnis.

sudo mkdir /var/www/ocserv

Legen Sie www-data (Apache-Benutzer) als Eigentümer des Webstammverzeichnisses fest.

sudo chown www-data:www-data /var/www/ocserv -R

Aktivieren Sie diesen virtuellen Host.

sudo a2ensite vpn.example.com

Laden Sie Apache neu, damit die Änderungen wirksam werden.

sudo systemctl reload apache2

Sobald der virtuelle Host erstellt und aktiviert ist, führen Sie den folgenden Befehl aus, um das Let’s Encrypt-Zertifikat mit dem Webroot-Plugin zu erhalten.

sudo certbot certonly --webroot --agree-tos --email [email protected] -d vpn.example.com -w /var/www/ocserv

Nginx

Wenn Sie Nginx verwenden, dann

sudo nano /etc/nginx/conf.d/vpn.example.com.conf

Fügen Sie die folgenden Zeilen in die Datei ein.

server {
      listen 80;
      server_name vpn.example.com;

      root /var/www/ocserv/;

      location ~ /.well-known/acme-challenge {
         allow all;
      }
}

Speichern und schließen Sie die Datei. Erstellen Sie dann das Web-Root-Verzeichnis.

sudo mkdir -p /var/www/ocserv

Legen Sie www-data (Nginx-Benutzer) als Eigentümer des Webstamms fest.

sudo chown www-data:www-data /var/www/ocserv -R

Laden Sie Nginx neu, damit die Änderungen wirksam werden.

sudo systemctl reload nginx

Sobald der virtuelle Host erstellt und aktiviert ist, führen Sie den folgenden Befehl aus, um das Let’s Encrypt-Zertifikat mit dem Webroot-Plugin zu erhalten.

sudo certbot certonly --webroot --agree-tos --email [email protected] -d vpn.example.com -w /var/www/ocserv

Schritt 4:Konfigurationsdatei des OpenConnect VPN-Servers bearbeiten

Bearbeiten Sie die Hauptkonfigurationsdatei von ocserv.

sudo nano /etc/ocserv/ocserv.conf

Zuerst müssen wir die Passwortauthentifizierung konfigurieren. Standardmäßig ist die Passwortauthentifizierung über PAM (Pluggable Authentication Modules) aktiviert, wodurch Sie Ubuntu-Systemkonten verwenden können, um sich von VPN-Clients anzumelden. Dieses Verhalten kann durch Auskommentieren der folgenden Zeile deaktiviert werden.

auth = "pam[gid-min=1000]"

Wenn wir möchten, dass Benutzer separate VPN-Konten anstelle von Systemkonten verwenden, um sich anzumelden, müssen wir die folgende Zeile hinzufügen, um die Passwortauthentifizierung mit einer Passwortdatei zu aktivieren.

auth = "plain[passwd=/etc/ocserv/ocpasswd]"

Nachdem Sie diese Konfigurationsdatei bearbeitet haben, werden wir sehen, wie Sie ocpasswd verwenden Tool zum Generieren von /etc/ocserv/ocpasswd Datei, die eine Liste mit Benutzernamen und verschlüsselten Passwörtern enthält.

Hinweis :Ocserv unterstützt Client-Zertifikat-Authentifizierung, aber Let’s Encrypt stellt kein Client-Zertifikat aus. Sie müssen Ihre eigene Zertifizierungsstelle einrichten, um das Client-Zertifikat auszustellen.

Wenn Sie nicht möchten, dass ocserv TCP- und UDP-Port 443 verwendet, suchen Sie als Nächstes die folgenden zwei Zeilen und ändern Sie die Portnummer. Ansonsten lass sie in Ruhe.

tcp-port = 443
udp-port = 443

Suchen Sie dann die folgenden zwei Zeilen. Wir müssen sie ändern.

server-cert = /etc/ssl/certs/ssl-cert-snakeoil.pem
server-key = /etc/ssl/private/ssl-cert-snakeoil.key

Ersetzen Sie die Standardeinstellung durch den Pfad des Let’s Encrypt-Serverzertifikats und der Serverschlüsseldatei.

server-cert = /etc/letsencrypt/live/vpn.example.com/fullchain.pem
server-key = /etc/letsencrypt/live/vpn.example.com/privkey.pem

Stellen Sie dann die maximale Anzahl von Clients ein. Der Standardwert ist 128. Für unbegrenzt auf Null gesetzt.

max-clients = 128

Legen Sie die Anzahl der Geräte fest, von denen sich ein Benutzer gleichzeitig anmelden kann. Der Standardwert ist 2. Für unbegrenzt auf Null gesetzt.

max-same-clients = 2

Standardmäßig werden Keepalive-Pakete alle 300 Sekunden (5 Minuten) gesendet. Ich bevorzuge eine kurze Zeit (30 Sekunden), um die Wahrscheinlichkeit eines VPN-Verbindungsabbruchs zu verringern.

keepalive = 30

Suchen Sie als Nächstes die folgende Zeile. Ändern Sie false auf true um die MTU-Erkennung zu aktivieren, wodurch die VPN-Leistung optimiert werden kann.

try-mtu-discovery = false

Sie können die Zeit einstellen, die ein Client inaktiv bleiben darf, bevor er über die folgenden zwei Parameter getrennt wird. Wenn Sie es vorziehen, dass der Client unbegrenzt verbunden bleibt, kommentieren Sie diese beiden Parameter aus.

idle-timeout=1200
mobile-idle-timeout=1800

Legen Sie danach die Standarddomäne auf vpn.example.com fest.

default-domain = vpn.example.com

Die IPv4-Netzwerkkonfiguration ist standardmäßig wie folgt. Dies führt zu Problemen, da viele Heimrouter den IPv4-Netzwerkbereich auch auf 192.168.1.0/24 setzen .

ipv4-network = 192.168.1.0
ipv4-netmask = 255.255.255.0

Wir können einen anderen privaten IP-Adressbereich (10.10.10.0/24) verwenden, um eine IP-Adresskollision zu vermeiden, also ändern Sie den Wert von ipv4-network zu

ipv4-network = 10.10.10.0

Entkommentieren Sie nun die folgende Zeile, um alle DNS-Anfragen über das VPN zu tunneln.

tunnel-all-dns = true

Die standardmäßigen DNS-Resolver-Adressen lauten wie folgt, was in Ordnung ist.

dns = 8.8.8.8
dns = 1.1.1.1

Hinweis :Wenn Sie ein VPN-Dienstanbieter sind, empfiehlt es sich, Ihren eigenen DNS-Resolver auf demselben Server auszuführen. Wenn auf demselben Server ein DNS-Resolver ausgeführt wird, geben Sie den DNS als

an
dns = 10.10.10.1

10.10.10.1 ist die IP-Adresse des OpenConnect VPN-Servers im VPN-LAN. Dadurch wird die DNS-Suche für Clients ein wenig beschleunigt, da die Netzwerklatenz zwischen dem VPN-Server und dem DNS-Resolver eliminiert wird.

Kommentieren Sie dann alle Routenparameter aus (fügen Sie ein #-Symbol am Anfang der folgenden Zeilen hinzu), wodurch der Server als Standard-Gateway für die Clients festgelegt wird.

#route = 10.0.0.0/8
#route = 172.16.0.0/12
#route = 192.168.0.0/16
#route = fd00::/8
#route = default

#no-route = 192.168.5.0/255.255.255.0

Speichern und schließen Sie die Datei. Starten Sie dann den VPN-Server neu, damit die Änderungen wirksam werden.

sudo systemctl restart ocserv

Schritt 5:VPN-Konten erstellen

Verwenden Sie nun das Tool ocpasswd, um VPN-Konten zu generieren.

sudo ocpasswd -c /etc/ocserv/ocpasswd username

Sie werden aufgefordert, ein Passwort für den Benutzer festzulegen, und die Informationen werden unter /etc/ocserv/ocpasswd gespeichert Datei. Um das Passwort zurückzusetzen, führen Sie einfach den obigen Befehl erneut aus.

Schritt 6:IP-Weiterleitung aktivieren

Damit der VPN-Server Pakete zwischen VPN-Clients und dem Internet weiterleiten kann, müssen wir die IP-Weiterleitung aktivieren. Bearbeiten Sie sysctl.conf Datei.

sudo nano /etc/sysctl.conf

Fügen Sie am Ende dieser Datei die folgende Zeile hinzu.

net.ipv4.ip_forward = 1

Speichern und schließen Sie die Datei. Wenden Sie dann die Änderungen mit dem folgenden Befehl an. Das -p Option lädt Sysctl-Einstellungen aus /etc/sysctl.conf Datei. Dieser Befehl behält unsere Änderungen über Systemneustarts hinweg bei.

sudo sysctl -p

Schritt 7:IP-Masquerading in der Firewall konfigurieren

Wir müssen IP-Masquerading in der Server-Firewall einrichten, damit der Server zu einem virtuellen Router für VPN-Clients wird. Ich werde UFW verwenden, das ein Frontend für die iptables-Firewall ist. Installieren Sie UFW unter Ubuntu mit:

sudo apt install ufw

Zuerst müssen Sie den SSH-Verkehr zulassen.

sudo ufw allow 22/tcp

Suchen Sie dann den Namen der Hauptnetzwerkschnittstelle Ihres Servers.

ip addr

Wie Sie sehen können, heißt es ens3 auf meinem Ubuntu-Server.

Um IP-Masquerading zu konfigurieren, müssen wir den iptables-Befehl in eine UFW-Konfigurationsdatei einfügen.

sudo nano /etc/ufw/before.rules

Standardmäßig gibt es einige Regeln für den filter Tisch. Fügen Sie am Ende dieser Datei die folgenden Zeilen hinzu. Ersetzen Sie ens3 mit Ihrem eigenen Netzwerkschnittstellennamen.

# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.10.10.0/24 -o ens3 -j MASQUERADE

# End each table with the 'COMMIT' line or these rules won't be processed
COMMIT

Im Nano-Texteditor können Sie zum Ende der Datei gehen, indem Sie Ctrl+W drücken , und drücken Sie dann Ctrl+V .

Die obigen Zeilen werden angehängt (-A ) eine Regel am Ende von POSTROUTING Kette von nat Tisch. Es verbindet Ihr virtuelles privates Netzwerk mit dem Internet. Und verstecken Sie auch Ihr Netzwerk vor der Außenwelt. Das Internet kann also nur die IP Ihres VPN-Servers sehen, aber nicht die IP Ihres VPN-Clients, genau wie Ihr Heimrouter Ihr privates Heimnetzwerk verbirgt.

Standardmäßig verbietet UFW die Paketweiterleitung. Wir können die Weiterleitung für unser privates Netzwerk zulassen. Suchen Sie den ufw-before-forward Kette in dieser Datei und fügen Sie die folgenden 3 Zeilen hinzu, die die Paketweiterleitung akzeptieren, wenn die Quell-IP oder Ziel-IP in 10.10.10.0/24 ist Reichweite.

# allow forwarding for trusted network
-A ufw-before-forward -s 10.10.10.0/24 -j ACCEPT
-A ufw-before-forward -d 10.10.10.0/24 -j ACCEPT

Speichern und schließen Sie die Datei. Aktivieren Sie dann UFW.

sudo ufw enable

Wenn Sie UFW zuvor aktiviert haben, können Sie systemctl verwenden, um UFW neu zu starten.

sudo systemctl restart ufw

Wenn Sie nun die Regeln in der POSTROUTING-Kette der NAT-Tabelle auflisten, indem Sie den folgenden Befehl verwenden:

sudo iptables -t nat -L POSTROUTING

Sie können die Maskerade-Regel sehen.

Es kann einige Zeit dauern, bis UFW die Firewall-Regeln verarbeitet. Wenn die Maskerade-Regel nicht angezeigt wird, starten Sie UFW erneut (sudo systemctl restart ufw ).

Schritt 8:Öffnen Sie Port 443 in der Firewall

Führen Sie den folgenden Befehl aus, um TCP- und UDP-Port 443 zu öffnen. Wenn Sie einen anderen Port für ocserv konfiguriert haben, ändern Sie 443 in Ihren konfigurierten Port.

sudo ufw allow 443/tcp
sudo ufw allow 443/udp

Jetzt ist der OpenConnect VPN-Server bereit, Client-Verbindungen zu akzeptieren.

Wenn Sie einen lokalen DNS-Resolver ausführen

Für diejenigen unter Ihnen, die einen lokalen DNS-Resolver ausführen:Wenn Sie 10.10.10.1 als DNS-Server für VPN-Clients angegeben haben, müssen Sie VPN-Clients erlauben, sich mit der folgenden UFW-Regel mit Port 53 zu verbinden.

sudo ufw insert 1 allow in from 10.10.10.0/24

Sie müssen auch die Konfigurationsdatei des BIND-DNS-Servers bearbeiten (/etc/bind/named.conf.options ), damit VPN-Clients rekursive DNS-Abfragen wie unten senden können.

allow-recursion { 127.0.0.1; 10.10.10.0/24; };

Starten Sie dann BIND neu.

sudo systemctl restart named

So installieren und verwenden Sie den OpenConnect VPN-Client auf Ubuntu 20.04 Desktop

Führen Sie den folgenden Befehl aus, um den OpenConnect VPN-Befehlszeilenclient auf dem Ubuntu-Desktop zu installieren.

sudo apt install openconnect

Sie können sich wie unten über die Befehlszeile mit VPN verbinden. -b Flag lässt es im Hintergrund laufen, nachdem die Verbindung hergestellt wurde.

sudo openconnect -b vpn.example.com:port-number

Sie werden aufgefordert, den VPN-Benutzernamen und das Passwort einzugeben. Wenn die Verbindung erfolgreich hergestellt wurde, sehen Sie die folgende Meldung.

Got CONNECT response: HTTP/1.1 200 CONNECTED
CSTP connected. DPD 90, Keepalive 32400
Connected tun0 as 192.168.1.139, using SSL
Established DTLS connection (using GnuTLS). Ciphersuite (DTLS1.2)-(RSA)-(AES-256-GCM).

Um die Verbindung zu beenden, führen Sie Folgendes aus:

sudo pkill openconnect

Verwenden Sie die folgende Syntax, um den Client nicht interaktiv auszuführen.

echo -n password | sudo openconnect -b vpn.example.com -u username --passwd-on-stdin

Wenn Sie Network Manager zum Verwalten der VPN-Verbindung verwenden möchten, müssen Sie auch diese Pakete installieren.

sudo apt install network-manager-openconnect network-manager-openconnect-gnome

Wenn Sie erfolgreich mit dem VPN-Server verbunden sind, sich Ihre öffentliche IP-Adresse jedoch nicht ändert, liegt das daran, dass die IP-Weiterleitung oder das IP-Masquerading nicht funktioniert. Ich hatte einmal einen Tippfehler in meinem iptables-Befehl (mit einem falschen IP-Adressbereich), der dazu führte, dass mein Computer nicht im Internet surfen konnte.

Wenn Sie auf den folgenden Fehler stoßen, sollten Sie den UDP-Port in ocserv deaktivieren, was später in der Geschwindigkeitsoptimierung erklärt wird Abschnitt.

DTLS handshake failed: Resource temporarily unavailable, try again

Wenn der folgende Fehler auftritt, ist das Passwort Ihres VPN-Kontos wahrscheinlich falsch.

fgets (stdin): Inappropriate ioctl for device

Automatische Verbindung beim Systemstart

Damit sich der OpenConnect VPN-Client beim Booten automatisch mit dem Server verbindet, können wir eine systemd-Diensteinheit erstellen.

sudo nano /etc/systemd/system/openconnect.service

Fügen Sie die folgenden Zeilen in die Datei ein. Ersetzen Sie den roten Text.

[Unit]
  Description=OpenConnect VPN Client
  After=network-online.target systemd-resolved.service
  Wants=network-online.target

[Service]
  Type=simple
  ExecStart=/bin/bash -c '/bin/echo -n password | /usr/sbin/openconnect vpn.example.com -u username --passwd-on-stdin'
  KillSignal=SIGINT
  Restart=always
  RestartSec=2

[Install]
  WantedBy=multi-user.target

Speichern und schließen Sie die Datei. Aktivieren Sie dann diesen Dienst, damit er beim Booten gestartet wird.

sudo systemctl enable openconnect.service

Erläuterung des Dateiinhalts:

  • After=network-online.target systemd-resolved.service und Wants=network-online.target Lassen Sie diesen Dienst laufen, nachdem das Netzwerk hochgefahren ist. Wir wollen den openconnect.service nach dem systemd-resolved.service starten denn dadurch wird sichergestellt, dass die von OpenConnect festgelegte DNS-Serveradresse nicht von systemd-resolved.service überschrieben wird .
  • Tatsächlich kann dieser Dienst noch ausgeführt werden, bevor das Netzwerk hochgefahren ist. Wir fügen Restart=always hinzu und RestartSec=2 um diesen Dienst nach 2 Sekunden neu zu starten, wenn dieser Dienst fehlschlägt.
  • Systemd erkennt keine Pipe-Umleitung, also im ExecStart Direktive setzen wir den Befehl in einfache Anführungszeichen und führen ihn mit der Bash-Shell aus.
  • Da der OpenConnect VPN-Client als systemd-Dienst ausgeführt wird, der im Hintergrund ausgeführt wird, muss -b nicht hinzugefügt werden Flag zum openconnect Befehl.
  • Das KillSignal Direktive weist Systemd an, den SIGINT zu senden Signal, wenn systemctl stop openconnect Befehl ausgegeben wird. Dadurch wird ein sauberes Herunterfahren durchgeführt, indem die Sitzung abgemeldet und die DNS-Servereinstellungen und die Linux-Kernel-Routing-Tabelle wiederhergestellt werden.

Um diesen Systemd-Dienst sofort zu starten, führen Sie

aus
sudo systemctl start openconnect

Um diesen Systemd-Dienst zu stoppen, führen Sie

aus
sudo systemctl stop openconnect

So starten Sie den OpenConnect-Client automatisch neu, wenn Sie aus dem Suspend-Modus zurückkehren

Wenn Ihr Ubuntu-Desktop in den Suspend-Zustand wechselt, würde der OpenConnect-Client die Verbindung zum VPN-Server verlieren. Damit es beim Fortsetzen aus dem Suspend automatisch neu gestartet wird, müssen wir eine weitere systemd-Diensteinheit erstellen.

sudo nano /etc/systemd/system/openconnect-restart.service

Fügen Sie der Datei die folgenden Zeilen hinzu.

[Unit]
Description=Restart OpenConnect client when resuming from suspend
After=suspend.target

[Service]
Type=simple
ExecStart=/bin/systemctl --no-block restart openconnect.service

[Install]
WantedBy=suspend.target

Speichern und schließen Sie die Datei. Aktivieren Sie dann diesen Dienst.

sudo systemctl enable openconnect-restart.service

Automatischer Neustart bei Unterbrechung der VPN-Verbindung

Manchmal brach die VPN-Verbindung aus anderen Gründen ab. Sie können den folgenden Befehl ausführen, um zu überprüfen, ob der VPN-Client die private IP-Adresse des VPN-Servers (10.10.10.1) pingen kann. Wenn der Ping nicht erfolgreich ist, wird der Befehl rechts ausgeführt, um den VPN-Client neu zu starten. || ist der ODER-Operator in Bash. Es führt den Befehl auf der rechten Seite nur aus, wenn der Befehl auf der linken Seite einen Fehler zurückgegeben hat.

ping -c9 10.10.10.1 || systemctl restart openconnect

Der Ping wird 9 Mal ausgeführt, d. h. 9 Sekunden. Sie können eine Endlosschleife verwenden in der Bash-Shell, damit der gesamte Befehl für immer ausgeführt wird. Drücken Sie Ctrl+C um es zu stoppen.

for ((; ; )) do (ping -c9 10.10.10.1 || systemctl restart openconnect) done

Jetzt können wir einen systemd-Dienst für diese Aufgabe erstellen.

sudo nano /etc/systemd/system/openconnect-check.service

Fügen Sie dieser Datei die folgenden Zeilen hinzu. Wir geben an, dass dieser Dienst nach openconnect.service ausgeführt werden soll .

[Unit]
Description=OpenConnect VPN Connectivity Checker
After=openconnect.service

[Service]
Type=simple
ExecStart=/bin/bash -c 'for ((; ; )) do (ping -c9 10.10.10.1 || systemctl restart openconnect) done'

[Install]
WantedBy=multi-user.target

Speichern und schließen Sie die Datei. Starten Sie dann diesen Dienst.

sudo systemctl start openconnect-check

Autostart beim Booten aktivieren.

sudo systemctl enable openconnect-check

Sobald dieser Dienst gestartet ist, wird der Ping-Befehl für immer ausgeführt. Wenn die VPN-Verbindung unterbrochen wird, wird openconnect.service automatisch neu gestartet .

OpenConnect GUI-Client für Windows und macOS

Sie können von der OpenConnect-GUI-Github-Seite heruntergeladen werden.

Geschwindigkeit

OpenConnect VPN ist ziemlich schnell. Ich kann es verwenden, um 4k-Videos auf YouTube anzusehen. Wie Sie sehen können, beträgt meine Verbindungsgeschwindigkeit 63356 Kbps , was übersetzt 61 Mbit/s bedeutet .

Und hier sind die Testergebnisse auf speedtest.net.

Geschwindigkeitsoptimierung

OpenConnect verwendet standardmäßig das TLS-über-UDP-Protokoll (DTLS), um eine höhere Geschwindigkeit zu erreichen, aber UDP kann keine zuverlässige Übertragung bieten. TCP ist langsamer als UDP, kann aber eine zuverlässige Übertragung bieten. Ein Optimierungstipp, den ich Ihnen geben kann, ist, DTLS zu deaktivieren, Standard-TLS (über TCP) zu verwenden und dann TCP BBR zu aktivieren, um die TCP-Geschwindigkeit zu erhöhen.

Um DTLS zu deaktivieren, kommentieren Sie aus (fügen Sie # hinzu Symbol am Anfang) die folgende Zeile in der ocserv-Konfigurationsdatei.

udp-port = 443

Speichern und schließen Sie die Datei. Starten Sie dann den ocserv-Dienst neu.

sudo systemctl restart ocserv.service

Um TCP BBR zu aktivieren, sehen Sie sich bitte das folgende Tutorial an. Beachten Sie, dass Sie DTLS in ocserv deaktivieren müssen, sonst funktioniert TCP BBR nicht.

  • So steigern Sie die Ubuntu-Netzwerkleistung ganz einfach, indem Sie TCP BBR aktivieren

In meinem Test ist Standard-TLS mit aktiviertem TCP BBR doppelt so schnell wie DTLS.

Ein weiterer sehr wichtiger Faktor, der die Geschwindigkeit beeinflusst, ist, wie gut die Verbindung zwischen Ihrem lokalen Computer und dem VPN-Server ist. Wenn Sie im Nahen Osten leben und sich der VPN-Server in den USA befindet, wäre die Geschwindigkeit langsam. Wählen Sie ein Rechenzentrum in der Nähe Ihres Wohnortes.

Überprüfen Sie auch Ihre durchschnittliche CPU-Auslastung. (htop kann mit sudo apt install htop installiert werden ).

htop

Stellen Sie sicher, dass die durchschnittliche CPU-Last unter 1 liegt . Ich hatte einmal eine durchschnittliche CPU-Last von 3 , was zu einer hohen Latenz zwischen VPN-Client und VPN-Server führte.

Let’s Encrypt-Zertifikat automatisch erneuern

Crontab-Datei des Root-Benutzers bearbeiten.

sudo crontab -e

Fügen Sie die folgende Zeile am Ende der Datei hinzu. Der ocserv-Dienst muss neu geladen werden, damit der VPN-Server das neue Zertifikat und die Schlüsseldatei abrufen kann.

@daily certbot renew --quiet && systemctl reload ocserv

Tipps zur Fehlerbehebung

OpenVZ

Beachten Sie, dass Sie bei Verwendung von OpenVZ VPS sicherstellen, dass Sie das virtuelle TUN-Netzwerkgerät in der VPS-Systemsteuerung aktivieren. (Wenn Sie Vultr VPS verwenden, haben Sie ein KVM-basiertes VPS, sodass Sie sich darüber keine Gedanken machen müssen.)

Protokolldatei

Wenn Sie auf ein Problem stoßen, überprüfen Sie das OpenConnect VPN-Serverprotokoll.

sudo journalctl -eu ocserv.service

Ich habe festgestellt, dass die große Firewall von China diese VPN-Verbindung blockiert, wenn ich Port 443 auf einen anderen Port ändere.

Debugging-Modus

Wenn ocserv Ihnen mitteilt, dass /etc/ocserv/ocserv.conf nicht geladen werden kann Datei, können Sie ocserv stoppen.

sudo systemctl stop ocserv

Führen Sie es dann im Vordergrund mit aktiviertem Debugging aus.

sudo /usr/sbin/ocserv --foreground --pid-file /run/ocserv.pid --config /etc/ocserv/ocserv.conf --debug=10

Dann könnte Ihnen die Ausgabe einige Hinweise geben, warum ocserv nicht funktioniert.

Kann nicht im Internet surfen

Wenn Sie erfolgreich mit dem VPN-Server verbunden sind, aber nicht im Internet surfen können, liegt das daran, dass die IP-Weiterleitung oder das IP-Masquerading nicht funktioniert. Ich erinnere mich, dass mein VPS-Anbieter einmal ein Plattform-Upgrade durchgeführt hat, bei dem der Name der Hauptnetzwerkschnittstelle von ens3 geändert wurde zu enp3s0 , also musste ich den Namen in der UFW-Datei aktualisieren (/etc/ufw/before.rules ).

Syntaxfehler

Wenn beim Versuch, eine VPN-Verbindung herzustellen, der folgende Fehler angezeigt wird, liegt dies wahrscheinlich an einem Syntaxfehler in Ihrer ocserv-Konfigurationsdatei. Überprüfen Sie das Journal (sudo journalctl -eu ocserv ), um es herauszufinden.

Got inappropriate HTTP CONNECT response: HTTP/1.1 401 Cookie is not acceptable

Starten Sie Ihren Computer neu

Wenn Sie beim Versuch, eine VPN-Verbindung herzustellen, den folgenden Fehler sehen, handelt es sich wahrscheinlich um ein lokales Computerproblem. Versuchen Sie, Ihren Computer neu zu starten.

Server 'vpn.your-domain.com' requested Basic authentication which is disabled by default

TLS-Verbindung wurde nicht ordnungsgemäß beendet

Wenn Sie beim Versuch, eine VPN-Verbindung herzustellen, den folgenden Fehler auf dem Client sehen,

SSL connection failure: The TLS connection was non-properly terminated.

Sie sollten wahrscheinlich den ocserv neu starten Dienst auf dem VPN-Server.

sudo systemctl restart ocserv

Sie können einen Cron-Job erstellen, um ocserv automatisch neu zu starten einmal täglich um 4 Uhr morgens.

sudo crontab -e

Fügen Sie die folgende Zeile hinzu.

0 4 * * * systemctl restart ocserv

Speichern und schließen Sie die Datei.

Lassen Sie OpenConnect VPN-Server und Webserver gleichzeitig Port 443 verwenden

Bitte lesen Sie den folgenden Artikel:

  • Führen Sie OpenConnect VPN Server und Apache/Nginx auf derselben Box mit HAProxy aus

So deaktivieren Sie TLS 1.0 und TLS 1.1 in ocserv

Das PCI Council hat TLS 1.0 am 30. Juni 2018 als veraltet markiert und Mainstream-Webbrowser werden TLS 1.0 und TLS 1.1 im Jahr 2020 deaktivieren. Wir sollten dasselbe mit dem VPN-Server tun. Bearbeiten Sie die Hauptkonfigurationsdatei.

sudo nano /etc/ocserv/ocserv.conf

Suchen Sie die folgende Zeile:

tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-RSA:-VERS-SSL3.0:-ARCFOUR-128"

Um TLS 1.0 und TLS 1.1 auf dem OpenConnect VPN-Server zu deaktivieren, fügen Sie einfach -VERS-TLS1.0 hinzu und -VERS-TLS1.1 in der Zeile.

tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-RSA:-VERS-SSL3.0:-ARCFOUR-128:-VERS-TLS1.0:-VERS-TLS1.1"

Speichern und schließen Sie die Datei. Starten Sie dann ocserv neu.

sudo systemctl restart ocserv

Jetzt akzeptiert ocserv nur noch TLS 1.3 und TLS 1.2. Weitere Informationen zum Konfigurieren des TLS-Parameters in ocserv finden Sie unter GnuTLS-Prioritätszeichenfolgen.

Um zu überprüfen, ob TLS 1.0 von Ihrem OpenConnect VPN-Server unterstützt wird, führen Sie den folgenden Befehl aus.

openssl s_client -connect vpn.your-domain.com:443 -tls1

Und überprüfen Sie TLS 1.1

openssl s_client -connect vpn.your-domain.com:443 -tls1_1

Wenn Sie die folgende Meldung in der Ausgabe sehen, bedeutet dies, dass die TLS-Version nicht unterstützt wird.

New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported

Konfiguration pro Benutzer oder pro Gruppe

Ocserv erlaubt pro Benutzer und pro Gruppe Konfigurationen. Um diese Funktion zu aktivieren, kommentieren Sie die folgenden zwei Zeilen in /etc/ocserv/ocserv.conf aus Datei.

config-per-user = /etc/ocserv/config-per-user/
config-per-group = /etc/ocserv/config-per-group/

Speichern und schließen Sie die Datei. Erstellen Sie dann das Konfigurationsverzeichnis pro Benutzer und pro Gruppe.

sudo mkdir /etc/ocserv/config-per-user/
sudo mkdir /etc/ocserv/config-per-group/

Als nächstes können Sie eine Datei unter diesen beiden Verzeichnissen erstellen. Erstellen Sie beispielsweise user1 Datei, um eine benutzerdefinierte Konfiguration für user1 zu ermöglichen .

sudo nano /etc/ocserv/config-per-user/user1

Sie können auch die group1 erstellen Datei, um eine benutzerdefinierte Konfiguration für die Gruppe mit dem Namen group1 zu ermöglichen .

sudo nano /etc/ocserv/config-per-group/group1

Sie können etwas wie unten in die Datei einfügen, um Split-Tunneling zu aktivieren.

route = 10.10.10.0/255.255.255.0
tunnel-all-dns = false
dns = 8.8.8.8
dns = 1.1.1.1

Wo:

  • Die erste Zeile bedeutet, dass nach user1 oder Benutzer in group1 Verbinden Sie sich mit diesem VPN-Server, nur Datenverkehr zum 10.10.10.0/24 Netzwerk wird über VPN-Server geroutet. Datenverkehr zu anderen IP-Adressen wird über das ursprüngliche Gateway geleitet.
  • Die zweite Zeile deaktiviert das Tunneln von DNS-Abfragen.
  • Die dritte und vierte Zeile stellen DNS-Server für VPN-Clients ein.

Ich benutze diesen Trick, um meinem anderen VPS (Virtual Private Server) zu erlauben, sich mit diesem VPN-Server zu verbinden, ohne den normalen Datenverkehr zu unterbrechen, sodass das TUN-Gerät (vpns0) meines VPN-Servers immer eingeschaltet ist, was bedeutet, dass mein VPN-Server immer den hat private IP-Adresse 10.10.10.1.

Speichern und schließen Sie die Datei. Starten Sie ocserv neu damit die Änderungen wirksam werden.

sudo systemctl restart ocserv

Beachten Sie, dass Sie, wenn Sie IPv6 in ocserv aktivieren, auch den IPv6-Netzwerkbereich hinzufügen müssen, um Split-Tunneling zu verwenden.

route = 10.10.10.0/255.255.255.0
route = fda9:4efe:7e3b:03ea::/48
tunnel-all-dns = false
dns = 8.8.8.8
dns = 1.1.1.1

Wenn Sie eine IP-Adresse von der Standardroute ausschließen möchten, verwenden Sie no-route .

no-route = 12.34.56.78/32

Das bedeutet, dass der gesamte andere Datenverkehr mit Ausnahme des Datenverkehrs zu IP 12.34.56.78 durch den VPN-Tunnel geleitet wird. route- und no-route-Parameter akzeptieren sowohl die Netzmasken-Notation (10.10.10.0/255.255.255.0) als auch die CIDR-Notation (12.34.56.78/32)

Wenn nach dem Aktivieren von Split-Tunneling der folgende Fehler angezeigt wird, liegt dies wahrscheinlich daran, dass Sie die Netzmaske oder CIDR-Notation nicht verwendet haben.

could not parse proxy protocol header; discarding connection

Split-Tunneling nach Land

Angenommen, Sie möchten nur, dass der Datenverkehr in ausländische Länder vom VPN getunnelt wird. Der Verkehr in Ihr eigenes Land sollte die normale Route verwenden. Sie können die no-route verwenden Direktive in der ocserv-Konfigurationsdatei, um dies zu erreichen.

Zuerst müssen Sie den IP-Bereich für Ihr Land herunterladen, indem Sie auf diese Webseite gehen:https://www.ip2location.com/free/visitor-blocker, wo Sie den IP-Adressbereich im CIDR-Format herunterladen können.

Speichern Sie den IP-Bereich in einer Textdatei ip2location.txt , und führen Sie den folgenden Befehl in Ihrem Linux-Terminal aus, um no-route = hinzuzufügen Direktive an den Anfang jeder Zeile.

sed 's/^/no-route = /' -i ip2localtion.txt

Öffnen Sie nun die Datei in einem Texteditor und kopieren Sie alle darin enthaltenen Zeilen. Wir müssen diese Zeilen in der ocserv-Konfigurationsdatei hinzufügen. Wenn es zu viele Zeilen gibt, können Sie diese Zeilen zur benutzerspezifischen Konfigurationsdatei hinzufügen.

sudo nano /etc/ocserv/config-per-user/user1

Sie können sie auch zur gruppenspezifischen Konfigurationsdatei hinzufügen und dann Benutzer zur Gruppe hinzufügen.

Starten Sie ocserv neu, damit die Änderungen wirksam werden.

sudo systemctl restart ocserv

So aktivieren Sie IPv6 in OpenConnect VPN

Wenn Ihr VPN-Server über eine öffentliche IPv6-Adresse verfügt, können Sie IPv6 in OpenConnect VPN aktivieren. Bearbeiten Sie die ocserv-Konfigurationsdatei.

sudo nano /etc/ocserv/ocserv.conf

Suchen Sie die folgenden zwei Zeilen und kommentieren Sie sie aus.

ipv6-network = fda9:4efe:7e3b:03ea::/48
ipv6-subnet-prefix = 64

Speichern und schließen Sie die Datei. Starten Sie ocserv neu, damit die Änderung wirksam wird.

sudo systemctl restart ocserv

Dann müssen wir die IP-Weiterleitung für IPv6 aktivieren. Bearbeiten Sie sysctl.conf Datei.

sudo nano /etc/sysctl.conf

Fügen Sie am Ende dieser Datei die folgende Zeile hinzu.

net.ipv6.conf.all.forwarding=1

Speichern und schließen Sie die Datei. Wenden Sie dann die Änderungen mit dem folgenden Befehl an.

sudo sysctl -p

Als nächstes müssen wir IPv6-Masquerading in der Server-Firewall einrichten, damit der Server zu einem virtuellen Router für VPN-Clients wird.

sudo nano /etc/ufw/before6.rules

Standardmäßig gibt es einige Regeln für den filter Tisch. Fügen Sie am Ende dieser Datei die folgenden Zeilen hinzu. Ersetzen Sie ens3 mit Ihrem eigenen Netzwerkschnittstellennamen.

# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o ens3 -j MASQUERADE

# End each table with the 'COMMIT' line or these rules won't be processed
COMMIT

Im Nano-Texteditor können Sie zum Ende der Datei gehen, indem Sie Ctrl+W drücken , und drücken Sie dann Ctrl+V .

Standardmäßig verbietet UFW die Paketweiterleitung. Wir können die Weiterleitung für unser privates IPv6-Netzwerk zulassen. Suchen Sie den ufw6-before-forward chain in this file and add the following 3 lines, which will accept packet forwarding if the source IP or destination IP is in the fda9:4efe:7e3b:03ea::/48 Reichweite.

Speichern und schließen Sie die Datei. Restart UFW for the change to take effect.

sudo systemctl restart ufw

Wenn Sie nun die Regeln in der POSTROUTING-Kette der NAT-Tabelle auflisten, indem Sie den folgenden Befehl verwenden:

sudo ip6tables -t nat -L POSTROUTING

Sie können die Maskerade-Regel sehen.

Disconnect the current VPN connection, add an AAAA record for vpn.example.com and re-establish VPN connection. Then go to https://test-ipv6.com/ to check your IPv6 connectivity.

If you run your own BIND DNS resolver on the VPN server, you can add the following line in /etc/ocserv/ocserv.conf file to set the VPN server as the DNS resolver for VPN clients.

dns = fda9:4efe:7e3b::1

Speichern und schließen Sie die Datei. To query DNS names in IPv6, we need to configure BIND to allow IPv6 VPN clients.

sudo nano /etc/bind/named.conf.options

Find the allow-recursion parameter and change it to:

allow-recursion { 127.0.0.1; 10.10.10.0/24; fda9:4efe:7e3b:03ea::/48; };

Speichern und schließen Sie die Datei. Restart BIND9.

sudo systemctl restart named

We also need to allow IPv6 VPN client in the firewall.

sudo ufw allow in from fda9:4efe:7e3b:03ea::/48

Virtual Hosting

Hinweis :If you just want to have the ability to use multiple hostnames for the VPN server, you can use certbot to obtain a multi-domain certificate. Then restart ocserv and you are done.

To add a new virtual host in ocserv, first you need to use the method in step 3 to obtain a TLS certificate for the new virtual host. Then edit ocserv configuration file.

sudo nano /etc/ocserv/ocserv.conf

Go to the bottom of this file. In Nano text editor, you can press Ctrl+W , then Ctrl+V to jump to the bottom of a file. Add the following lines. Replace vpn2.example.com with the hostname of the second virtual host.

[vhost:vpn2.example.com]
#Allow password authentication and certificate authentication
enable-auth = "plain[passwd=/etc/ocserv/ocpasswd]"
auth = "certificate"

tcp-port = 443

#uncomment the two lines if ocserv runs behind HAProxy.
#listen-host = 127.0.0.1
#listen-proxy-proto = true

# SSL/TLS configuration
ca-cert = /etc/ocserv/ssl/ca-cert.pem
server-cert = /etc/letsencrypt/live/vpn2.example.com/fullchain.pem
server-key = /etc/letsencrypt/live/vpn2.example.com/privkey.pem
cert-user-oid = 0.9.2342.19200300.100.1.1

#Networking configuration. Use a different network range for this virtual host. 
device = vpns
ipv4-network = 10.10.20.0
ipv4-netmask = 255.255.255.0
route = default
dns = 8.8.8.8
tunnel-all-dns = true

compression = true
max-clients = 0
max-same-clients = 0
try-mtu-discovery = true
idle-timeout=1200
mobile-idle-timeout=2400

config-per-user = /etc/ocserv/config-per-user/
config-per-group = /etc/ocserv/config-per-group/

Speichern und schließen Sie die Datei. Starten Sie dann ocserv neu.

sudo systemctl restart ocserv

Edit the UFW configuration file.

sudo nano /etc/ufw/before.rules

Suchen Sie den ufw-before-forward chain in this file and add the following 2 lines, which will accept packet forwarding if the source IP or destination IP is in the 10.10.20.0/24 Reichweite.

-A ufw-before-forward -s 10.10.20.0/24 -j ACCEPT
-A ufw-before-forward -d 10.10.20.0/24 -j ACCEPT

Speichern und schließen Sie die Datei. Then restart UFW.

sudo systemctl restart ufw

Note that the ocserv daemon might tell you some parameters will be ignored for virtual host. However, I found that some of the ignored parameters are actually needed. For example, if you delete the device = vpns line from the virtual host, you might encounter the following error when establishing VPN connection to the virtual host.

VPN service unavailable; reason: Server configuration error

And the VPN server would produce the following error message in the log.

no networks are configured; rejecting client

Also Note that the AnyConnect VPN client on iOS doesn’t support TLS SNI, so iOS users will connect to the default virtual host.

How to Run Multiple Instances of ocserv

One ocserv process can bind to only one TCP or UDP port on your server. If you want to allow ocserv to bind to multiple TCP or UDP ports, then you need to run multiple ocserv processes. Es ist sehr einfach. Copy the /lib/systemd/system/ocserv.service in eine neue Datei.

sudo cp /lib/systemd/system/ocserv.service /etc/systemd/system/ocserv2.service

Then edit the new file.

sudo nano /etc/systemd/system/ocserv2.service

Ändern

/etc/ocserv/ocserv.conf

zu

/etc/ocserv/ocserv2.conf

Speichern und schließen Sie die Datei. Next, you can edit the /etc/ocserv/ocserv2.conf file and add your custom configurations. Once you are done, start the second ocserv service.

sudo systemctl start ocserv2

Ubuntu
  1. So richten Sie WireGuard VPN auf Ubuntu ein (eine Schritt-für-Schritt-Anleitung)

  2. So richten Sie einen IKEv2-VPN-Server mit StrongSwan unter Ubuntu 22.04 ein

  3. Richten Sie OpenConnect VPN Server (ocserv) auf Debian 11 Bullseye ein

  4. Richten Sie OpenConnect VPN Server (ocserv) auf Debian 10 Buster ein

  5. So installieren Sie Let’s Encrypt SSL auf Ubuntu 18.04 mit Nginx

Wie richte ich ein Pptp-Vpn auf dem eigenen Ubuntu-Server ein?

So richten Sie einen Seafile-Server mit Nginx unter Ubuntu 18.04 ein

So richten Sie einen FTP-Server mit ProFTPD in Ubuntu 18.04 ein

So richten Sie einen Mailserver mit Modoboa unter Ubuntu 20.04 ein

So sichern Sie Nginx mit Let’s Encrypt unter Ubuntu 20.04

So sichern Sie Ihre Website mit Let’s Encrypt auf Ubuntu 20.04