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

Richten Sie Ihren eigenen WireGuard VPN-Server auf Ubuntu 20.04/18.04 ein

Dieses Tutorial zeigt Ihnen, wie Sie Ihren eigenen WireGuard VPN-Server auf Ubuntu einrichten. WireGuard wurde speziell für den Linux-Kernel entwickelt. Es läuft innerhalb des Linux-Kernels und ermöglicht es Ihnen, einen schnellen, modernen und sicheren VPN-Tunnel zu erstellen.

WireGuard VPN-Funktionen

  • Leicht und superschnell, bläst OpenVPN aus dem Wasser.
  • Plattformübergreifend. WireGuard kann unter Linux, BSD, macOS, Windows, Android, iOS und OpenWRT ausgeführt werden.
  • Die Benutzerauthentifizierung erfolgt durch den Austausch öffentlicher Schlüssel, ähnlich wie bei SSH-Schlüsseln.
  • Es weist VPN-Clients statische Tunnel-IP-Adressen zu. Manche Leute mögen es vielleicht nicht, aber es kann in manchen Fällen sehr nützlich sein.
  • Mobilgeräte können nahtlos zwischen Wi-Fi und Mobilfunknetz wechseln, ohne dass die Verbindung unterbrochen wird.
  • Ziel ist es, OpenVPN und IPSec in den meisten Anwendungsfällen zu ersetzen.

WireGuard ist mein bevorzugtes VPN-Protokoll, um die Notwendigkeit zu beseitigen, TLS-Verschlüsselung für meine privaten Netzwerke einzurichten.

Anforderungen

Um diesem Tutorial zu folgen, benötigen Sie einen VPS (Virtual Private Server), der frei auf blockierte 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 läuft, befolgen Sie die nachstehenden Anweisungen.

Dieses Tutorial geht davon aus, dass sowohl der VPN-Server als auch der VPN-Client Ubuntu ausführen Betriebssystem.

Schritt 1:Installieren Sie WireGuard auf Ubuntu Server und Desktop

Melden Sie sich bei Ihrem Ubuntu-Server an und führen Sie dann die folgenden Befehle aus, um WireGuard zu installieren.

Ubuntu 20.04

Ubuntu 20.04 wird mit dem Linux-Kernel 5.4 ausgeliefert, der über ein integriertes Wireguard-Modul verfügt.

sudo apt updatesudo apt install wireguard wireguard-tools

Ubuntu 18.04

Ubuntu 18.04 wird mit Linux-Kernel 4.15 ausgeliefert, daher müssen Benutzer zuerst den Hardware-Enablement-Kernel (HWE) installieren, der Kernel 5.4 auf Ihrem System installiert.

sudo apt updatesudo apt install linux-generic-hwe-18.04-edge

Starten Sie Ihren Ubuntu 18.04-Server neu und installieren Sie WireGuard.

sudo shutdown -r nowsudo apt install wireguard wireguard-tools wireguard-dkms

Verwenden Sie dann dieselben Befehle, um WireGuard auf Ihrem lokalen Ubuntu-Computer (dem VPN-Client) zu installieren. Beachten Sie, dass Sie auch openresolv installieren müssen Paket auf dem Client, um den DNS-Server zu konfigurieren.

sudo apt install openresolv

Schritt 2:Öffentliches/Privates Schlüsselpaar generieren

Server

Führen Sie den folgenden Befehl auf dem Ubuntu-Server aus, um ein öffentliches/privates Schlüsselpaar zu erstellen, das unter /etc/wireguard/ gespeichert wird Verzeichnis.

wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key

Kunde

Führen Sie den folgenden Befehl aus, um ein öffentliches/privates Schlüsselpaar auf dem lokalen Ubuntu-Computer (dem VPN-Client) zu erstellen.

wg genkey | sudo tee /etc/wireguard/client_private.key | wg pubkey | sudo tee /etc/wireguard/client_public.key

Schritt 3:WireGuard-Konfigurationsdatei erstellen

Server

Verwenden Sie einen Befehlszeilen-Texteditor wie Nano, um eine WireGuard-Konfigurationsdatei auf dem Ubuntu-Server zu erstellen. wg0 wird der Name der Netzwerkschnittstelle sein.

sudo nano /etc/wireguard/wg0.conf

Kopieren Sie den folgenden Text und fügen Sie ihn in Ihre Konfigurationsdatei ein. Sie müssen Ihren eigenen privaten Serverschlüssel und öffentlichen Clientschlüssel verwenden.

[Schnittstelle]Adresse =10.10.10.1/24ListenPort =51820PrivateKey =cD+ZjXiVIX+0iSX1PNijl4a+88lCbDgw7kO78oXXLEc=[Peer]PublicKey =AYQJf6HbkQ0X0Xyt+cTMTuJe3RFwbuCMF46LKgTwzz4=AllowedIPs 

Wo:

  • Adresse :Geben Sie die private IP-Adresse des VPN-Servers an. Hier verwende ich den Netzwerkbereich 10.10.10.0/24, sodass es nicht zu Konflikten mit Ihrem Heimnetzwerkbereich kommt. (Die meisten Heimrouter verwenden 192.168.0.0/24 oder 192.168.1.0/24). 10.10.10.1 ist die private IP-Adresse für den VPN-Server.
  • PrivateKey :Der private Schlüssel des VPN-Servers, der in /etc/wireguard/server_private.key zu finden ist Datei auf dem Server.
  • ListenPort :Der WireGuard VPN-Server überwacht den UDP-Port 51820, was der Standard ist.
  • PublicKey :Der öffentliche Schlüssel des VPN-Clients, der in /etc/wireguard/client_public.key zu finden ist Datei auf dem Client-Computer.
  • ZugelasseneIPs :IP-Adressen, die der VPN-Client verwenden darf. In diesem Beispiel kann der Client nur die IP-Adresse 10.10.10.2 innerhalb des VPN-Tunnels verwenden.

Speichern und schließen Sie die Datei. (Um eine Datei im Nano-Texteditor zu speichern, drücken Sie Ctrl+O , und drücken Sie dann zur Bestätigung die Eingabetaste. Drücken Sie Ctrl+X zum Beenden.)

Ändern Sie den Dateiberechtigungsmodus so, dass nur der Root-Benutzer die Dateien lesen kann.

sudo chmod 600 /etc/wireguard/ -R

Kunde

Verwenden Sie einen Befehlszeilen-Texteditor wie Nano, um eine WireGuard-Konfigurationsdatei auf Ihrem lokalen Ubuntu-Computer zu erstellen. wg-client0 wird der Name der Netzwerkschnittstelle sein.

sudo nano /etc/wireguard/wg-client0.conf

Kopieren Sie den folgenden Text und fügen Sie ihn in Ihre Konfigurationsdatei ein. Sie müssen Ihren eigenen privaten Client-Schlüssel und öffentlichen Server-Schlüssel verwenden.

 [Schnittstelle] Adresse =10.10.10.2/24dns =10.10.10.1PrivateKey =cofa+x5uvhf+a3xj6enlatg+doe3i5phmgkrmkkuyxi =[Peer] publicKey =12.2. 56.78:51820PersistentKeepalive =25

Wo:

  • Adresse :Geben Sie die private IP-Adresse des VPN-Clients an.
  • DNS :Geben Sie 10.10.10.1 (VPN-Server) als DNS-Server an. Es wird über die resolvconf konfiguriert Befehl. Sie können auch wie folgt mehrere DNS-Server für Redundanz angeben:DNS = 10.10.10.1 8.8.8.8
  • PrivateKey :Der private Schlüssel des Clients, der in /etc/wireguard/client_private.key zu finden ist Datei auf dem Client-Computer.
  • PublicKey :Der öffentliche Schlüssel des Servers, der in /etc/wireguard/server_public.key zu finden ist Datei auf dem Server.
  • ZugelasseneIPs :0.0.0.0/0 repräsentiert das gesamte Internet, was bedeutet, dass der gesamte Datenverkehr zum Internet über das VPN geleitet werden sollte.
  • Endpunkt :Die öffentliche IP-Adresse und Portnummer des VPN-Servers. Ersetzen Sie 12.34.56.78 durch die echte öffentliche IP-Adresse Ihres Servers.
  • PersistentKeepalive :Senden Sie alle 25 Sekunden ein authentifiziertes leeres Paket an den Peer, um die Verbindung aufrechtzuerhalten. Wenn PersistentKeepalive nicht aktiviert ist, kann der VPN-Server den VPN-Client möglicherweise nicht anpingen.

Speichern und schließen Sie die Datei.

Ändern Sie den Dateimodus so, dass nur der Root-Benutzer die Dateien lesen kann.

sudo chmod 600 /etc/wireguard/ -R

Schritt 4:IP-Weiterleitung auf dem Server 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 5:IP-Masquerading auf dem Server 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 als Nächstes den Namen der Hauptnetzwerkschnittstelle Ihres Servers.

ip -c a

Wie Sie sehen können, heißt es enp3s0 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 enp3s0 mit Ihrem eigenen Netzwerkschnittstellennamen.

# NAT-Tabellenregeln*nat:POSTROUTING ACCEPT [0:0]-A POSTROUTING -s 10.10.10.0/24 -o enp3s0 -j ​​MASQUERADE# Beenden Sie jede Tabelle mit der 'COMMIT'-Zeile oder diese Regeln werden nicht verarbeitetCOMMIT

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 bis zum Ende von POSTROUTING Kette dernat 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.

Stellen Sie sicher, dass am Anfang jeder Zeile keine Leerzeichen stehen.

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.

# Weiterleitung für vertrauenswürdiges Netzwerk zulassen-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 6:Installieren Sie einen DNS-Resolver auf dem Server

Da wir den VPN-Server als DNS-Server für den Client angeben, müssen wir einen DNS-Resolver auf dem VPN-Server ausführen. Wir können den bind9 DNS-Server installieren.

sudo apt install bind9

Sobald es installiert ist, wird BIND automatisch gestartet. Sie können den Status überprüfen mit:

systemctl status bind9

Beispielausgabe:

● named.service - BIND Domain Name Server Geladen:geladen (/lib/systemd/system/named.service; aktiviert; Herstellervoreinstellung:aktiviert) Aktiv:aktiv (läuft) seit Sonntag 2020-05-17 08:11 :26 UTC; vor 37s Dokumente:man:named(8) Haupt-PID:13820 (named) Aufgaben:5 (Grenze:1074) Arbeitsspeicher:14,3 MB CGroup:/system.slice/named.service └─13820 /usr/sbin/named -f -u binden

Wenn es nicht läuft, starten Sie es mit:

sudo systemctl start bind9

Bearbeiten Sie die Konfigurationsdatei des BIND-DNS-Servers.

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

Fügen Sie die folgende Zeile hinzu, damit VPN-Clients rekursive DNS-Abfragen senden können.

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

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

sudo systemctl restart bind9

Dann müssen Sie den folgenden Befehl ausführen, damit VPN-Clients eine Verbindung zu Port 53 herstellen können.

sudo ufw insert 1 erlaubt in von 10.10.10.0/24

Schritt 7:WireGuard-Port in der Firewall öffnen

Führen Sie den folgenden Befehl aus, um den UDP-Port 51820 auf dem Server zu öffnen.

sudo ufw allow 51820/udp

Schritt 8:WireGuard starten

Server

Führen Sie den folgenden Befehl auf dem Server aus, um WireGuard zu starten.

sudo systemctl start [email protected]

Autostart beim Systemstart aktivieren.

sudo systemctl enable [email protected]

Überprüfen Sie seinen Status mit dem folgenden Befehl. Sein Status sollte active (exited) sein .

Systemctl-Status [E-Mail-geschützt]

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

Kunde

Starten Sie WireGuard.

sudo systemctl start [email protected]

Autostart beim Systemstart aktivieren.

sudo systemctl enable [email protected]

Überprüfen Sie den Status:

Systemctl-Status [E-Mail-geschützt]

Gehen Sie nun zu dieser Website:https://icanhazip.com/, um Ihre öffentliche IP-Adresse zu überprüfen. Wenn alles gut gelaufen ist, sollte die öffentliche IP-Adresse Ihres VPN-Servers anstelle der öffentlichen IP-Adresse Ihres Client-Computers angezeigt werden.

Sie können auch den folgenden Befehl ausführen, um die aktuelle öffentliche IP-Adresse abzurufen.

curl https://icanhazip.com

Tipps zur Fehlerbehebung

Ping nicht möglich

Sie können vom VPN-Server zum VPN-Client pingen (ping 10.10.10.2 ), um zu sehen, ob der Tunnel funktioniert. Wenn Sie im Ping die folgende Fehlermeldung sehen,

ping:sendmsg:Erforderlicher Schlüssel nicht verfügbar

kann es sein, dass die AllowedIPs Parameter ist falsch, wie ein Tippfehler. Nachdem Sie den Tippfehler behoben haben, starten Sie sowohl den VPN-Server als auch den VPN-Client neu.

Ein weiterer Grund könnte sein, dass Sie vergessen haben, ListenPort = 51820 hinzuzufügen in der Serverkonfigurationsdatei.

Öffentliche IP ändert sich nicht

Wenn der VPN-Tunnel erfolgreich eingerichtet wurde, sich die öffentliche IP-Adresse des Clients jedoch nicht ändert, liegt das daran, dass die Maskierungs- oder Weiterleitungsregel in Ihrer UFW-Konfigurationsdatei nicht funktioniert. Ich hatte einmal einen Tippfehler in /etc/ufw/before.rules Datei, die dazu führte, dass mein Computer nicht im Internet surfen konnte.

Beachten Sie, dass ich die Verwendung von SaveConfig=true nicht empfehle im [Interface] Abschnitt der WireGuard-Konfigurationsdatei. SaveConfig weist WireGuard an, die Laufzeitkonfiguration beim Herunterfahren zu speichern. Wenn Sie also zusätzlich [Peer] hinzufügen in der Konfigurationsdatei und starten Sie WireGuard neu, Ihre neu hinzugefügten Konfigurationen werden überschrieben.

Debug-Protokollierung im Linux-Kernel aktivieren

Wenn Sie Linux-Kernel 5.6 oder höher verwenden, können Sie die Debug-Protokollierung für WireGuard mit dem folgenden Befehl aktivieren.

sudo su -echo module wireguard +p>
 /sys/kernel/debug/dynamic_debug/control

Dann können Sie die Debug-Protokolle mit

anzeigen
sudo dmesg -wH

oder

sudo journalctl -kf

Neu starten

Wenn Ihr VPN immer noch nicht funktioniert, versuchen Sie, den VPN-Server neu zu starten.

sudo systemctl restart [email protected]

Stoppen Sie dann den VPN-Client.

sudo systemctl stop [email protected]

Und aktualisieren Sie Softwarepakete auf dem VPN-Client.

sudo apt-Aktualisierung; sudo apt upgrade

Als nächstes starten Sie den VPN-Client neu.

sudo shutdown -r nowsudo systemctl start [email protected]

Wenn Ihr WireGuard VPN nur nach einem Neustart funktionieren kann, sollten Sie einen Cron-Job hinzufügen, um den Dienst automatisch neu zu starten.

sudo crontab -e

Fügen Sie dieser Datei die folgende Zeile hinzu.

@daily systemctl restart [email protected]

Geschwindigkeitsvergleich zwischen WireGuard und OpenConnect

Auf einem meiner VPS-Server habe ich sowohl WireGuard als auch OpenConnect VPN-Server installiert. Der Geschwindigkeitstest ist wie folgt. Für Sie sieht es vielleicht nicht so schnell aus, weil die Verbindung zwischen meinem Computer und dem VPN-Server sehr schlecht ist. Wie schnell Sie werden können, hängt von der Latenz und der Paketverlustrate zwischen dem VPN-Client und dem VPN-Server ab.

  • WireGuard ist der Gewinner. Es ist fast dreimal schneller als OpenConnect.
  • OpenConnect über TCP ist schneller als OpenConnect über UDP. Überraschung?

WireGuard kann 52296 Kbps (ca. 51 Mbit/s) erreichen beim Abspielen von YouTube-Videos.

OpenConnect (TLS mit TCP BBR-Algorithmus) kann 16504 Kbps (ca. 16 Mbit/s) erreichen beim Abspielen von YouTube-Videos.

OpenConnect (TLS auf UDP) kann 12997 Kbps (ca. 12,7 Mbit/s) erreichen beim Abspielen von YouTube-Videos.

Zusätzliche VPN-Clients hinzufügen

WireGuard wurde entwickelt, um eine IP-Adresse mit einem VPN-Client zu verknüpfen. Um weitere VPN-Clients hinzuzufügen, müssen Sie für jeden Client ein eindeutiges privates/öffentliches Schlüsselpaar erstellen und dann den öffentlichen Schlüssel jedes VPN-Clients zur Konfigurationsdatei des Servers hinzufügen (/etc/wireguard/wg0.conf ) so:

 [Schnittstelle] Adresse =10.10.10.1/24PrivateKey =UIFH+XXJJ0G0UAZJ6VPQSBB/O68SYVQDMYJPY/FLGFA =Hörport =51820 [Peer] publicKkey =10222G2GSUSCK/yQUSKKE/kRUSPY/kRUSPET/kRUSPET/kRUSPET/3QIT5OHHZKKKJWZKJWZKJWZKKJWZKKJWZK. 1Z/3rtl0i7cJorcinB7T4UOIzScifPNEIESFD8=Erlaubte IPs =10.10.10.3/32[Peer]PublicKey =EVstHZc6QamzPgefDGPLFEjGyedJk6SZbCJttpzcvC8=Erlaubte IPs =10.10.10.4/32

Jeder VPN-Client hat eine statische private IP-Adresse (10.10.10.2, 10.10.10.3, 10.10.10.4 usw.). Starten Sie den WireGuard-Server neu, damit die Änderungen wirksam werden.

sudo systemctl restart [email protected]

Fügen Sie dann wie gewohnt die WireGuard-Konfiguration auf jedem VPN-Client hinzu.

Automatischer Neustart bei Unterbrechung der VPN-Verbindung

Manchmal brach die VPN-Verbindung aus verschiedenen 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> /dev/null || systemctl restart [email protected]

Der Ping wird 9 Mal ausgeführt, d. h. 9 Sekunden. Sie können eine for-Schleife verwenden in der Bash-Shell, um den gesamten Befehl 6 Mal auszuführen, d. h. 54 Sekunden.

für ((i=1; i<=6; i++)) tun (ping -c9 10.10.10.1> /dev/null || systemctl restart [email protected]) erledigt 

Jetzt können wir einen Cron-Job erstellen, um diese Aufgabe zu automatisieren. Bearbeiten Sie die crontab-Datei des Root-Benutzers auf dem VPN-Client.

sudo crontab -e

Bash ist nicht die Standard-Shell in Cron. Sie können die folgende Zeile am Anfang der Crontab-Datei hinzufügen, um sie zum Standard zu machen.

SHELL=/bin/bash

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

* * * * * für ((i=1; i<=6; i++)) tun (ping -c9 10.10.10.1> /dev/null || systemctl restart [email protected]) erledigt 

Dieser Cron-Job wird jede Minute ausgeführt und jede Minute werden 6 Prüfungen durchgeführt. Speichern und schließen Sie die Datei.

Erweiterte Nutzung

Jetzt zeige ich Ihnen, wie Sie Richtlinien-Routing verwenden , Split-Tunneling , und VPN-Kill-Switch mit WireGuard VPN. Hinweis dass es nicht empfohlen wird, sie in Verbindung miteinander zu verwenden. Wenn Sie Richtlinien-Routing verwenden, sollten Sie Split-Tunneling oder VPN-Kill-Switch nicht aktivieren und umgekehrt. Dieser Abschnitt ist für fortgeschrittene Benutzer. Wenn Sie ein WireGuard-Anfänger sind und nicht wissen, wofür sie verwendet werden, wenden Sie die Anweisungen in diesem Abschnitt nicht an.

Richtlinien-Routing

Standardmäßig wird der gesamte Datenverkehr auf dem VPN-Client über den VPN-Server geleitet. Manchmal möchten Sie möglicherweise nur eine bestimmte Art von Datenverkehr basierend auf dem Transportschichtprotokoll und dem Zielport weiterleiten. Dies wird als Richtlinien-Routing bezeichnet.

Das Richtlinien-Routing ist auf dem Client-Computer konfiguriert und wir müssen zuerst die VPN-Verbindung beenden.

sudo systemctl stop [email protected]

Bearbeiten Sie dann die Client-Konfigurationsdatei.

sudo nano /etc/wireguard/wg-client0.conf

Zum Beispiel, wenn Sie die folgenden 3 Zeilen in [interface] hinzufügen Abschnitt, dann erstellt WireGuard eine Routing-Tabelle mit dem Namen „1234“ und fügt die IP-Regel in die Routing-Tabelle ein. In diesem Beispiel wird der Datenverkehr nur dann über den VPN-Server geleitet, wenn TCP als Transportschichtprotokoll verwendet wird und der Zielport 25 ist, d. h. wenn der Client-Computer E-Mails sendet.

Table =1234PostUp =IP-Regel ipproto tcp dport 25 Tabelle 1234PreDown =ip-Regel ipproto tcp dport 25 Tabelle 1234 löschen

Hinweis :Auf dem Client sollte Ubuntu 20.04 oder höher ausgeführt werden, um das Richtlinien-Routing zu konfigurieren. Die ip Das Dienstprogramm unter Ubuntu 18.04 unterstützt das ipproto nicht und dport Argument.

Speichern und schließen Sie die Datei. Starten Sie dann den WireGuard-Client.

sudo systemctl start [email protected]

Wenn Sie Datenverkehr für TCP-Port 80 und 443 weiterleiten möchten, verwenden Sie die folgende Syntax.

Tabelle =1234PostUp =IP-Regel fügt ipproto tcp dport 80 Tabelle 1234 hinzu; IP-Regel ipproto tcp dport 443 Tabelle 1234 hinzufügenPreDown =ip-Regel ipproto tcp dport 80 Tabelle 1234 löschen; IP-Regel löschen ipproto tcp dport 443 Tabelle 1234

Denken Sie daran, dass Sie die WireGuard VPN-Verbindung beenden sollten, bevor Sie Richtlinien-Routing-Regeln ändern.

Sie können auch einen Portbereich wie unten angeben (TCP-Port 26 bis TCP-Port 10240).

Table =1234PostUp =IP-Regel ipproto tcp dport 26-10240 Tabelle 1234PreDown =ip-Regel ipproto tcp dport 26-10240 Tabelle 1234 löschen

Wenn Sie sowohl TCP- als auch UDP-Ports angeben möchten, entfernen Sie ipproto tcp .

Table =1234PostUp =IP-Regel fügt dport 26-10240 Tabelle 1234PreDown =ip-Regel löscht dport 26-10240 Tabelle 1234

Möglicherweise möchten Sie den VPN-Client so konfigurieren, dass der VPN-Tunnel nur verwendet wird, wenn der Datenverkehr an bestimmte IP-Adressen gerichtet ist. Sie können dies mit dem to tun Option.

Table =1234PostUp =IP-Regel hinzufügen zu 10.0.0.0/24 Tabelle 1234PreDown =IP-Regel löschen zu 10.0.0.0/24 Tabelle 1234

Split-Tunneling

Standardmäßig wird der gesamte Datenverkehr auf dem VPN-Client über den VPN-Server geleitet. So aktivieren Sie Split-Tunneling, also nur Traffic zu 10.10.10.0/24 Der IP-Bereich wird durch WireGuard VPN getunnelt. Dies ist nützlich, wenn Sie ein privates Netzwerk für mehrere Cloud-Server aufbauen möchten, da VPN-Clients auf Cloud-Servern ausgeführt werden und wenn Sie einen vollständigen VPN-Tunnel verwenden, dann verlieren Sie wahrscheinlich die Verbindung zu den Cloud-Servern.

Bearbeiten Sie die Client-Konfigurationsdatei.

sudo nano /etc/wireguard/wg-client0.conf

Ändern

AllowedIPs =0.0.0.0/0

An

AllowedIPs =10.10.10.0/24

Der Datenverkehr wird also nur dann über VPN geleitet, wenn die Zieladresse im IP-Bereich 10.10.10.0/24 liegt. Speichern und schließen Sie die Datei. Starten Sie dann den WireGuard-Client neu.

sudo systemctl restart [email protected]

Sie können auch mehrere IP-Bereiche zulassen. Nehmen wir an, der VPN-Server verwaltet auch 10.10.20.0/24 Netzwerk, dann können Sie AllowedIPs konfigurieren auf dem VPN-Client so:

Erlaubte IPs =10.10.10.0/24, 10.10.20.0/24

So kann der VPN-Client den 10.10.20.0/24 erreichen Netzwerk über den VPN-Server und umgekehrt.

Um eine einzelne IP-Adresse hinzuzufügen, verwenden Sie die folgende Syntax.

Erlaubte IPs =10.10.10.0/24, 10.10.20.0/24, 8.8.8.8/32

Dies weist den Client an, den VPN-Server zu verwenden, wenn er mit 8.8.8.8 kommuniziert.

VPN-Kill-Switch

Standardmäßig kann Ihr Computer bei einer Unterbrechung der VPN-Verbindung über das normale Gateway auf das Internet zugreifen. Möglicherweise möchten Sie die Kill-Switch-Funktion aktivieren, die den Fluss unverschlüsselter Pakete durch Nicht-WireGuard-Schnittstellen verhindert.

Beenden Sie den WireGuard-Client-Prozess.

sudo systemctl stop [email protected]

Bearbeiten Sie die Client-Konfigurationsdatei.

sudo nano /etc/wireguard/wg-client0.conf

Fügen Sie die folgenden zwei Zeilen in [interface] hinzu Abschnitt.

PostUp =iptables -I AUSGABE ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECTPreDown =iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT

So:

[Interface]Address =10.10.10.2/24DNS =10.10.10.1PrivateKey =cOFA+x5UvHF+a3xJ6enLatG+DoE3I5PhMgKrMKkUyXI=PostUp =iptables -I OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECTPreDown =iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT[Peer]PublicKey =RaoAdsIEIwgV9DHNSubxWVG+nZ1GP/c3OU6A/efBJ0I=AllowedIPs =0.0.0.0/0Endpoint =12.34.56.78:51820PersistentKeepalive =25

Speichern und schließen Sie die Datei. Starten Sie dann den WireGuard-Client.

sudo systemctl start [email protected]

Mehrere Adressen in der WireGuard-Oberfläche

Eine WireGuard-Schnittstelle kann mehrere IP-Adressen haben. Sie können beispielsweise zwei IP-Adressen auf dem VPN-Client haben.

[Schnittstelle]Adresse =10.10.10.2/24Adresse =10.10.10.3/24....

In diesem Fall müssen Sie für diesen bestimmten Client mehrere IP-Adressen auf dem VPN-Server zulassen, da der VPN-Client sonst möglicherweise keine Verbindung zum VPN-Server herstellen kann.

[Peer]...AllowedIPs =10.10.10.2/32, 10.10.10.3/32

Sie können den folgenden Befehl verwenden, um zu überprüfen, ob die IP-Adressen zu einer Netzwerkschnittstelle gehören.

ip -c a

Hinweis

  • Der ifconfig Der Befehl kann nur die IP-Adresse für eine Netzwerkschnittstelle anzeigen.
  • Wenn Sie eine andere WireGuard-Schnittstelle in einer neuen .conf einrichten Datei, dann muss sie an einen anderen Port als 51820 gebunden werden, sonst wird der Fehler „Adresse wird bereits verwendet“ angezeigt.

Ubuntu
  1. Richten Sie einen VPN-Server auf Ihrem Linux-PC ein

  2. So richten Sie einen OpenVPN-Server unter Ubuntu 18.04 ein

  3. So richten Sie WireGuard VPN unter Ubuntu 20.04 ein

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

  5. So richten Sie WireGuard unter Ubuntu 22.04 ein

Installieren Sie OpenLiteSpeed, MariaDB, PHP8.0 auf Ubuntu 20.04/18.04 Server

So installieren Sie den GNOME-Desktop auf einem Ubuntu 20.04/18.04-Linux-Server

So installieren Sie FileZilla Server unter Ubuntu 20.04/18.04 Linux

So installieren Sie Plex Media Server unter Ubuntu 20.04/18.04

So erstellen Sie Ihren eigenen IPsec-VPN-Server unter Linux

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