WireGuard ist ein einfaches und modernes VPN (Virtual Private Network) mit modernster Kryptografie. Es ist schneller, einfacher zu konfigurieren und leistungsfähiger als andere ähnliche Lösungen wie IPsec und OpenVPN.
WireGuard ist plattformübergreifend und kann fast überall ausgeführt werden, einschließlich Linux, Windows, Android und macOS. Wireguard ist ein Peer-to-Peer-VPN; es basiert nicht auf dem Client-Server-Modell. Abhängig von seiner Konfiguration kann ein Peer als traditioneller Server oder Client fungieren.
WireGuard funktioniert, indem auf jedem Peer-Gerät eine Netzwerkschnittstelle erstellt wird, die als Tunnel fungiert. Peers authentifizieren sich gegenseitig, indem sie öffentliche Schlüssel austauschen und validieren und das SSH-Modell nachahmen. Öffentliche Schlüssel werden einer Liste von IP-Adressen zugeordnet, die im Tunnel zugelassen sind. Der VPN-Datenverkehr wird in UDP gekapselt.
Dieses Tutorial beschreibt, wie Sie WireGuard auf einem CentOS 8-Computer einrichten, der als VPN-Server fungiert. Wir zeigen Ihnen auch, wie Sie WireGuard als Client konfigurieren. Der Datenverkehr des Clients wird über den CentOS 8-Server geleitet. Diese Einrichtung kann als Schutz vor Man-in-the-Middle-Angriffen, anonymem Surfen im Internet, Umgehung geografisch eingeschränkter Inhalte oder um Ihren Kollegen, die von zu Hause aus arbeiten, eine sichere Verbindung zum Unternehmensnetzwerk zu ermöglichen, verwendet werden.
Voraussetzungen #
Sie benötigen einen CentOS 8-Server, auf den Sie als Root oder Konto mit sudo-Berechtigungen zugreifen können.
Einrichten des WireGuard-Servers #
Wir beginnen mit der Installation von WireGuard auf dem CentOS-Computer und richten ihn so ein, dass er als Server fungiert. Wir werden das System auch so konfigurieren, dass es den Datenverkehr der Clients durchleitet.
Installieren von WireGuard auf CentOS 8 #
WireGuard-Tools und das Kernel-Modul sind zur Installation aus den Epel- und Elrepo-Repositories verfügbar. Führen Sie den folgenden Befehl aus, um die Repositories zu Ihrem System hinzuzufügen:
sudo dnf install epel-release elrepo-release
Wenn Sie fertig sind, installieren Sie die WireGuard-Pakete:
sudo dnf install kmod-wireguard wireguard-tools
Möglicherweise werden Sie aufgefordert, die GPG-Schlüssel der Repositories zu importieren. Geben Sie y
ein wenn Sie dazu aufgefordert werden.
WireGuard konfigurieren #
Die wireguard-tools
Das Paket enthält zwei Befehlszeilentools namens wg
und wg-quick
mit denen Sie die WireGuard-Schnittstellen konfigurieren und verwalten können.
Wir speichern die VPN-Serverkonfiguration und in /etc/wireguard
Verzeichnis. Unter CentOS wird dieses Verzeichnis nicht während der Installation erstellt. Führen Sie den folgenden Befehl aus, um das Verzeichnis zu erstellen:
sudo mkdir /etc/wireguard
Generieren Sie die öffentlichen und privaten Schlüssel in /etc/wireguard
Verzeichnis.
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
Sie können die Dateien mit cat
anzeigen oder less
. Der private Schlüssel sollte niemals an Dritte weitergegeben werden.
Nachdem die Schlüssel generiert wurden, besteht der nächste Schritt darin, das Tunnelgerät zu konfigurieren, das den VPN-Datenverkehr weiterleitet.
Das Gerät kann entweder über die Kommandozeile mit ip
eingerichtet werden und wg
oder indem Sie die Konfigurationsdatei mit einem Texteditor erstellen.
Erstellen Sie eine neue Datei namens wg0.conf
und fügen Sie den folgenden Inhalt hinzu:
sudo nano /etc/wireguard/wg0.conf
/etc/wireguard/wg0.conf[Interface]
Address = 10.0.0.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
PostUp = firewall-cmd --zone=public --add-port 51820/udp && firewall-cmd --zone=public --add-masquerade
PostDown = firewall-cmd --zone=public --remove-port 51820/udp && firewall-cmd --zone=public --remove-masquerade
Die Schnittstelle kann beliebig benannt werden, es wird jedoch empfohlen, etwas wie wg0
zu verwenden oder wgvpn0
. Die Einstellungen im Interface-Bereich haben folgende Bedeutung:
-
Adresse – eine durch Kommas getrennte Liste von v4- oder v6-IP-Adressen für
wg0
Schnittstelle. Verwenden Sie IPs aus einem Bereich, der für private Netzwerke reserviert ist (10.0.0.0/8, 172.16.0.0/12 oder 192.168.0.0/16). -
ListenPort - der Port, auf dem WireGuard eingehende Verbindungen akzeptiert.
-
PrivateKey - ein privater Schlüssel, der von
wg genkey
generiert wird Befehl. (Um den Inhalt der Datei anzuzeigen, führen Sie Folgendes aus:sudo cat /etc/wireguard/privatekey
) -
SaveConfig - wenn auf true gesetzt, wird der aktuelle Zustand der Schnittstelle beim Herunterfahren in der Konfigurationsdatei gespeichert.
-
PostUp - Befehl oder Skript, das ausgeführt wird, bevor die Schnittstelle aufgerufen wird. In diesem Beispiel verwenden wir
firewall-cmd
um den WireGuard-Port zu öffnen und Masquerading zu aktivieren. Dadurch kann der Datenverkehr den Server verlassen und den VPN-Clients Zugriff auf das Internet geben. -
PostDown - Befehl oder Skript, das ausgeführt wird, bevor die Schnittstelle heruntergefahren wird. Die Firewall-Regeln werden entfernt, sobald die Schnittstelle heruntergefahren ist.
Die wg0.conf
und privatekey
Dateien sollten für normale Benutzer nicht lesbar sein. Verwenden Sie chmod
um die Berechtigungen auf 600
zu setzen :
sudo chmod 600 /etc/wireguard/{privatekey,wg0.conf}
Wenn Sie fertig sind, bringen Sie wg0
mit Schnittstelle unter Verwendung der in der Konfigurationsdatei angegebenen Attribute:
sudo wg-quick up wg0
Der Befehl gibt etwa Folgendes aus:
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.0.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Um den Status und die Konfiguration der Schnittstelle anzuzeigen, führen Sie Folgendes aus:
sudo wg show wg0
interface: wg0
public key: My3uqg8LL9S3XZBo8alclOjiNkp+T6GfxS+Xhn5a40I=
private key: (hidden)
listening port: 51820
Sie können auch die ip
verwenden Befehl zum Überprüfen des Schnittstellenstatus:
ip a show wg0
4: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet 10.0.0.1/24 scope global wg0
valid_lft forever preferred_lft forever
Um den wg0
zu bringen Schnittstelle beim Booten den folgenden Befehl ausführen:
sudo systemctl enable wg-quick@wg0
Servernetzwerk #
Damit NAT funktioniert, müssen wir die IP-Weiterleitung aktivieren. Erstellen Sie eine neue Datei /etc/sysctl.d/99-custom.conf
, und fügen Sie die folgende Zeile hinzu:
sudo nano /etc/sysctl.d/99-custom.conf
/etc/sysctl.d/99-custom.confnet.ipv4.ip_forward=1
Speichern Sie die Datei und wenden Sie die Änderung mit sysctl
an :
sudo sysctl -p /etc/sysctl.d/99-custom.conf
net.ipv4.ip_forward = 1
Das ist es. Der CentOS-Peer, der als Server fungiert, wurde eingerichtet.
Linux- und macOS-Client-Setup #
Die Installationsanweisungen für alle unterstützten Plattformen sind unter https://wireguard.com/install/ verfügbar. Auf Linux-Systemen können Sie das Paket mit dem Paketmanager der Distribution und auf macOS mit brew
installieren . Führen Sie nach der Installation von WireGuard die folgenden Schritte aus, um das Client-Gerät zu konfigurieren.
Der Prozess zum Einrichten eines Linux- und MacOS-Clients ist ziemlich gleich wie beim Server. Beginnen Sie mit der Generierung der öffentlichen und privaten Schlüssel:
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
Erstellen Sie die Datei wg0.conf
und fügen Sie den folgenden Inhalt hinzu:
sudo nano /etc/wireguard/wg0.conf
/etc/wireguard/wg0.conf[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.0.0.2/24
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_IP_ADDRESS:51820
AllowedIPs = 0.0.0.0/0
Die Einstellungen im Interface-Bereich haben die gleiche Bedeutung wie beim Einrichten des Servers:
- Adresse – eine durch Kommas getrennte Liste von v4- oder v6-IP-Adressen für
wg0
Schnittstelle. - PrivateKey - Um den Inhalt der Datei auf dem Client-Rechner anzuzeigen, führen Sie Folgendes aus:
sudo cat /etc/wireguard/privatekey
Der Peer-Abschnitt enthält die folgenden Felder:
- PublicKey – ein öffentlicher Schlüssel des Peers, mit dem Sie sich verbinden möchten. (Der Inhalt der Datei
/etc/wireguard/publickey
des Servers Datei). - Endpunkt – eine IP oder ein Hostname des Peers, mit dem Sie sich verbinden möchten, gefolgt von einem Doppelpunkt und dann einer Portnummer, auf der der entfernte Peer lauscht.
- AllowedIPs – eine durch Kommas getrennte Liste von v4- oder v6-IP-Adressen, von denen eingehender Datenverkehr für den Peer zulässig ist und an die ausgehender Datenverkehr für diesen Peer geleitet wird. Wir verwenden 0.0.0.0/0, weil wir den Datenverkehr leiten und möchten, dass der Server-Peer Pakete mit einer beliebigen Quell-IP sendet.
Wenn Sie weitere Clients konfigurieren müssen, wiederholen Sie einfach dieselben Schritte mit einer anderen privaten IP-Adresse.
Windows-Client-Setup #
Laden Sie das Windows-msi-Paket von der WireGuard-Website herunter und installieren Sie es.
Öffnen Sie nach der Installation die WireGuard-Anwendung und klicken Sie auf „Tunnel hinzufügen“ -> „Leeren Tunnel hinzufügen…“, wie im Bild unten gezeigt:
Ein PublicKey-Paar wird automatisch erstellt und auf dem Bildschirm angezeigt.
Geben Sie einen Namen für den Tunnel ein und bearbeiten Sie die Konfiguration wie folgt:
[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.0.0.2/24
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_IP_ADDRESS:51820
AllowedIPs = 0.0.0.0/0
Fügen Sie im Interface-Abschnitt eine neue Zeile hinzu, um die Client-Tunnel-Adresse zu definieren.
Fügen Sie im Peer-Abschnitt die folgenden Felder hinzu:
- PublicKey – der öffentliche Schlüssel des CentOS-Servers (
/etc/wireguard/publickey
Datei). - Endpunkt – die IP-Adresse des CentOS-Servers, gefolgt von einem Doppelpunkt und dem WireGuard-Port (51820).
- Erlaubte IPs - 0.0.0.0/0
Wenn Sie fertig sind, klicken Sie auf die Schaltfläche „Speichern“.
Fügen Sie den Client-Peer zum Server # hinzu
Der letzte Schritt besteht darin, den öffentlichen Schlüssel und die IP-Adresse des Clients zum Server hinzuzufügen:
sudo wg set wg0 peer CLIENT_PUBLIC_KEY allowed-ips 10.0.0.2
Achten Sie darauf, den CLIENT_PUBLIC_KEY
zu ändern mit dem öffentlichen Schlüssel, den Sie auf dem Client-Rechner generiert haben (sudo cat /etc/wireguard/publickey
) und passen Sie die Client-IP-Adresse an, falls sie sich unterscheidet. Windows-Benutzer können den öffentlichen Schlüssel aus der WireGuard-Anwendung kopieren.
Wenn Sie fertig sind, gehen Sie zurück zum Client-Rechner und rufen Sie die Tunneling-Schnittstelle auf.
Linux- und macOS-Clients #
Führen Sie auf Linux-Clients den folgenden Befehl aus, um die Schnittstelle aufzurufen:
sudo wg-quick up wg0
Jetzt sollten Sie mit dem CentOS-Server verbunden sein und der Datenverkehr von Ihrem Client-Computer sollte darüber geleitet werden. Sie können die Verbindung überprüfen mit:
sudo wg
interface: wg0
public key: sZThYo/0oECwzUsIKTa6LYXLhk+Jb/nqK4kCCP2pyFg=
private key: (hidden)
listening port: 60351
fwmark: 0xca6c
peer: My3uqg8LL9S3XZBo8alclOjiNkp+T6GfxS+Xhn5a40I=
endpoint: XXX.XXX.XXX.XXX:51820
allowed ips: 0.0.0.0/0
latest handshake: 41 seconds ago
transfer: 213.25 KiB received, 106.68 KiB sent
Sie können auch Ihren Browser öffnen, „was ist meine IP“ eingeben und Sie sollten die IP-Adresse Ihres CentOS-Servers sehen.
Um das Tunneln zu stoppen, bringen Sie wg0
herunter Schnittstelle:
sudo wg-quick down wg0
Windows-Clients #
Wenn Sie WireGuard unter Windows installiert haben, klicken Sie auf die Schaltfläche „Aktivieren“. Sobald die Peers verbunden sind, ändert sich der Tunnelstatus zu Aktiv: