GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

So richten Sie Wireguard VPN auf CentOS 8 ein

Wireguard ist eine plattformübergreifende Open-Source-VPN-Implementierung, die modernste Kryptografie verwendet. Es ist schneller, einfacher und funktioneller als die Protokolle IPSec und OpenVPN. Es ist als Allzweck-VPN für eingebettete Schnittstellen und Supercomputer konzipiert und läuft auf Linux, Windows, macOS, iOS, Android, BSD und verschiedenen anderen Plattformen.

Dieses Tutorial behandelt die Installation von Wireguard VPN auf einem CentOS 8-basierten Server und die Verbindung mit einem Linux-Client (CentOS/Fedora/Ubuntu).

Schritt 1 - System aktualisieren

Bevor Sie fortfahren, müssen Sie unbedingt Ihr System aktualisieren, um die neuesten Updates zu installieren.

$ sudo dnf update

Schritt 2 – EPEL-Repo installieren und aktivieren

Die erforderlichen Wireguard-Pakete finden Sie im EPEL-Repository, also müssen wir es installieren und aktivieren.

$ sudo dnf install epel-release
$ sudo dnf config-manager --set-enabled PowerTools

Wir haben auch das PowerTools-Repository aktiviert, da EPEL-Pakete davon abhängen.

Schritt 3 - Wireguard installieren

Aktivieren Sie das Wireguard-Repository.

$ sudo dnf copr enable jdoss/wireguard

Installieren Sie Wireguard.

$ sudo dnf install wireguard-dkms wireguard-tools

Dieser Schritt installiert auch den GNU GCC-Compiler, der zum Erstellen der Linux-Kernel-Module benötigt wird.

Schritt 4 - Wireguard-Server konfigurieren

Erstellen Sie eine leere Konfigurationsdatei auf dem Server für Wireguard-Einstellungen mit den entsprechenden Berechtigungen.

$ sudo mkdir /etc/wireguard
$ sudo sh -c 'umask 077; touch /etc/wireguard/wg0.conf'

Der Touch-Befehl erstellt die Datei wg0-server.conf Datei in /etc/wireguard Verzeichnis.

Erstellen Sie als Nächstes ein privates/öffentliches Schlüsselpaar für den Wireguard-Server.

$ cd /etc/wireguard
$ sudo sh -c 'umask 077; wg genkey | tee privatekey | wg pubkey > publickey'

Dieser erstellt sowohl den öffentlichen als auch den privaten Schlüssel für den Wireguard und schreibt sie in die jeweiligen Dateien.

Zeigen Sie den gerade erstellten privaten Schlüssel an.

$ sudo cat privatekey

Notieren Sie sich den Schlüssel und kopieren Sie ihn, da wir ihn zur Konfiguration von Wireguard benötigen.

Als nächstes bearbeiten Sie die Konfigurationsdatei.

$ sudo nano /etc/wireguard/wg0.conf

Fügen Sie den folgenden Code hinzu.

[Interface]
## VPN server private IP address ##
Address = 192.168.10.1/24
 
## VPN server port - You can choose any port ##
ListenPort = 37822
 
## VPN server's private key i.e. /etc/wireguard/privatekey - the one from above ##
PrivateKey = GCEXafeZKqSsuLfvuHE+zLzMYwoH4qQyBh7MZ4f/3kM=
 
## Save and update this config file when a new peer (vpn client) added ##
SaveConfig = true

Jede Konfiguration hat einen Abschnitt namens [Interface] wo der Server-Teil definiert ist.

Es enthält den privaten Schlüssel des lokalen WireGuard-Servers, den UDP-Port, auf dem er auf eingehende Verbindungen lauschen soll, und seine eigenen VPN-IP-Adressen.

Wir setzen auch SaveConfig auf true . Dadurch wird der Wireguard-Dienst angewiesen, seine aktive Konfiguration beim Herunterfahren automatisch in dieser Datei zu speichern.

Drücken Sie Strg + W um die Datei zu schließen und geben Sie Y ein wenn Sie aufgefordert werden, die Datei zu speichern.

Schritt 5 – Firewall konfigurieren

Wir müssen den von uns gewählten Port für Wireguard öffnen.

Zuerst müssen wir den Wireguard-Dienst für die Firewall definieren. Erstellen Sie dazu eine Datei wireguard.xml mit dem Nano-Editor.

$ sudo nano /etc/firewalld/services/wireguard.xml

Fügen Sie den folgenden Code in die Datei ein.

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>wireguard</short>
  <description>WireGuard open UDP port 37822 for client connections</description>
  <port protocol="udp" port="37822"/>
</service>

Drücken Sie Strg + W um die Datei zu schließen und geben Sie Y ein wenn Sie aufgefordert werden, die Datei zu speichern.

Als nächstes aktivieren Sie den Wireguard-Dienst in der Firewall.

$ sudo firewall-cmd --permanent --add-service=wireguard

Aktivieren Sie die Maskierung, sodass der gesamte eingehende und ausgehende Datenverkehr von 192.168.10.0/24 stammt über unsere öffentliche IP-Adresse des Servers 203.1.114.98/24 geleitet .

$ sudo firewall-cmd --permanent --add-masquerade

Laden Sie abschließend die Firewall neu, um die Regeln zu aktivieren.

$ sudo firewall-cmd --reload

Listen Sie die aktuellen Firewall-Regeln zur Bestätigung auf.

$ sudo firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: wireguard ssh
  ports: 
  protocols: 
  masquerade: yes
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

Schritt 6 – Aktivieren Sie die IPv4-Weiterleitung

Erstellen Sie /etc/sysctl.d/99-custom.conf Datei.

$ sudo nano /etc/sysctl.d/99-custom.conf

Fügen Sie den folgenden Code in die Datei ein.

## Turn on bbr ##
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
 
## for IPv4 ##
net.ipv4.ip_forward = 1
 
## Turn on basic protection/security ##
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_syncookies = 1

## for IPv6 ##
net.ipv6.conf.all.forwarding = 1

Drücken Sie Strg + W um die Datei zu schließen und geben Sie Y ein wenn Sie aufgefordert werden, die Datei zu speichern.

Der Geltungsbereich des Codes in der obigen Datei liegt außerhalb des Geltungsbereichs dieses Tutorials, also verwenden Sie ihn vorerst einfach so, wie er ist.

Laden Sie die Änderungen neu.

$ sudo sysctl -p /etc/sysctl.d/99-custom.conf

Standardmäßig lässt die Firewall wg0 nicht zu und eth0 Schnittstellen sprechen miteinander. Also müssen wir die Wireguard-Schnittstelle zum internen Netzwerk hinzufügen und Masquerading aktivieren.

$ sudo firewall-cmd --add-interface=wg0 --zone=internal
$ sudo firewall-cmd --permanent --zone=internal --add-masquerade

Schritt 7 – Aktivieren und starten Sie den Wireguard-Service

Als nächstes müssen wir den Wireguard-Dienst aktivieren und starten.

$ sudo systemctl enable [email protected]
$ sudo systemctl start [email protected]

Sie können überprüfen, ob die Wireguard-Schnittstelle wg0 ist betriebsbereit, indem Sie den folgenden Befehl verwenden.

$ sudo wg
interface: wg0
  public key: VWndJ4oB7ZJwC/7UOm++OLDrbAxMPsR2yd0cl3sEkUI=
  private key: (hidden)
  listening port: 37822

$ sudo ip a show wg0
3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet 192.168.10.1/24 scope global wg0
       valid_lft forever preferred_lft forever

Schritt 8 – WireGuard-Client installieren und konfigurieren

Die Installationsanweisungen für den Wireguard-Client für Ihre Linux-Distribution finden Sie auf der offiziellen Installationsseite.

Nachdem Sie den Client installiert haben, müssen Sie die Client-Konfigurationsdatei erstellen.

$ sudo mkdir /etc/wireguard
$ sudo sh -c 'umask 077; touch /etc/wireguard/wg0.conf'
$ cd /etc/wireguard/
$ sudo sh -c 'umask 077; wg genkey | tee privatekey | wg pubkey > publickey'
$ sudo cat privatekey

Notieren Sie den privaten Schlüssel, den Sie am Ende erhalten. Als nächstes müssen wir die soeben erstellte Konfigurationsdatei bearbeiten.

$ sudo nano /etc/wireguard/wg0.conf

Fügen Sie der Datei die folgenden Anweisungen hinzu.

[Interface]
## client private key ##
PrivateKey = OEM6D/zt2fVWOepVv3iEDD430V0gAshKp4+5oVVt5EE=
 
## client ip address ##
Address = 192.168.10.2/24
 
[Peer]
## CentOS 8 server public key ##
PublicKey = VWndJ4oB7ZJwC/7UOm++OLDrbAxMPsR2yd0cl3sEkUI=
 
## set ACL ##
AllowedIPs = 192.168.10.0/24
 
## Your CentOS 8 server's public IPv4/IPv6 address and port ##
Endpoint = 203.1.114.98:37822
 
##  Key connection alive ##
PersistentKeepalive = 15

Beachten Sie, dass wir die private IP 192.168.10.1 zugewiesen haben zum Server und 192.168.10.2 an den Client. Wir haben der Datei auch den privaten Schlüssel des Clients hinzugefügt.

Der [Peer] Im Abschnitt geben Sie die Konfiguration des Servers ein, mit dem sich der Client verbindet. Hier haben wir den öffentlichen Schlüssel, die öffentliche IP und eine Reihe zulässiger IPs hinzugefügt, die die private IP unseres Servers enthalten. PersistentKeepalive weist WireGuard an, alle 15 Sekunden ein UDP-Paket zu senden. Dies ist nützlich, wenn Sie sich hinter einem NAT befinden und die Verbindung aufrecht erhalten möchten.

Drücken Sie Strg + W um die Datei zu schließen und geben Sie Y ein wenn Sie aufgefordert werden, die Datei zu speichern.

Jetzt ist es an der Zeit, den VPN-Client zu aktivieren und zu starten.

$ sudo systemctl enable [email protected]
$ sudo systemctl start [email protected]
$ sudo systemctl status [email protected]

Schritt 9 – Server zum Hinzufügen des Clients konfigurieren

Jetzt müssen wir die Konfiguration des Clients erneut zum Server hinzufügen, um ihn über den Client zu informieren.

Stoppen Sie zuerst den Wireguard-Dienst.

$ sudo systemctl stop [email protected]

Öffnen Sie die Datei wg0.conf zum Bearbeiten.

$ sudo nano /etc/wireguard/wg0.conf

Fügen Sie den folgenden Code am Ende der Datei an.

[Peer] 
## client VPN public key ## 
PublicKey = dmfO9pirB315slXOgxXtmrBwAqPy07C57EvPks1IKzA=  

## client VPN IP address (note /32 subnet) ## 
AllowedIPs = 192.168.10.2/32

Drücken Sie Strg + W um die Datei zu schließen und geben Sie Y ein wenn Sie aufgefordert werden, die Datei zu speichern.

Der [Peer] Abschnitte definieren die anderen Mitglieder des VPN-Netzwerks. Sie können so viele wie nötig hinzufügen.

Sie enthalten ihren öffentlichen Schlüssel, der mit dem privaten Schlüssel des Peers in seinem [Interface] übereinstimmen muss Abschnitt.

Beachten Sie, dass jede eingehende Verbindung zuerst mit einem der öffentlichen Schlüssel authentifiziert wird. Wenn die Verbindung nicht von einem verifizierten Peer stammt, werden die eingehenden Pakete einfach stillschweigend ignoriert. Da Verbindungen von Hosts, die keinen passenden privaten Schlüssel besitzen, überhaupt nicht beantwortet werden, bietet ein WireGuard VPN nicht nur eine verschlüsselte Kommunikation, sondern bleibt auch für Außenstehende verborgen.

Starten Sie den Wireguard-Dienst erneut.

$ sudo systemctl start [email protected]

Schritt 10 – Test

Lassen Sie uns überprüfen, ob sowohl der Client als auch der Server über VPN sicher verbunden sind. Um die Verbindung zu testen, führen Sie die folgenden Befehle auf Ihrem Client aus.

$ ping -c 192.168.10.1
PING 192.168.10.1 (192.168.10.1) 56(84) bytes of data.
64 bytes from 192.168.10.1: icmp_seq=1 ttl=64 time=44.2 ms
64 bytes from 192.168.10.1: icmp_seq=2 ttl=64 time=45.8 ms
64 bytes from 192.168.10.1: icmp_seq=3 ttl=64 time=46.7 ms
64 bytes from 192.168.10.1: icmp_seq=4 ttl=64 time=44.1 ms

--- 192.168.10.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2800ms
rtt min/avg/max/mdev = 41.729/47.829/48.953/5.046 ms

$ sudo wg
interface: wg0
  public key: dmfO9pirB315slXOgxXtmrBwAqPy07C57EvPks1IKzA= 
  private key: (hidden)
  listening port: 
 
peer: VWndJ4oB7ZJwC/7UOm++OLDrbAxMPsR2yd0cl3sEkUI=
  endpoint: 203.1.114.98:37822
  allowed ips: 192.168.10.0/24
  latest handshake: 1 minute, 40 seconds ago
  transfer: 938 B received, 45.67 KiB sent
  persistent: keepalive: every 15 seconds

Schlussfolgerung

Das ist alles, was es zu diesem Tutorial gibt. Sie sollten jetzt einen Wireguard-basierten VPN-Server haben, der auf einem CentOS 8-Server basiert. Wenn Sie Fragen haben, stellen Sie sie in den Kommentaren unten.


Cent OS
  1. So legen/ändern Sie einen Hostnamen unter CentOS 7 Linux

  2. So richten Sie WireGuard VPN unter Ubuntu 20.04 ein

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

  4. DHCP-Server auf CentOS 8 einrichten – wie geht das?

  5. So richten Sie das Systemgebietsschema unter CentOS 7 ein

So installieren Sie PPTP VPN auf CentOS 6

So richten Sie einen DHCP-Server unter CentOS 8 ein

So installieren Sie Wireguard unter CentOS 8

So richten Sie ein IPsec-basiertes VPN mit Strongswan unter CentOS/RHEL 8 ein

So richten Sie WireGuard VPN unter Debian 11 ein

So richten Sie WireGuard VPN unter Linux ein