Technologieführer

WireGuard auf CentOS 8 installieren und konfigurieren

6 min read VPN Aktualisiert 25 Sep 2025
WireGuard auf CentOS 8: Installation & Konfiguration
WireGuard auf CentOS 8: Installation & Konfiguration

Kurz gesagt: Diese Anleitung zeigt Schritt für Schritt, wie Sie auf einem CentOS 8 Server WireGuard installieren, Firewall- und IP-Forwarding-Regeln konfigurieren und einen Linux-Client verbinden. Am Ende finden Sie Sicherheits‑Hardening, Troubleshooting-Checks und eine Checkliste für den produktiven Rollout.

Einleitung

WireGuard-Logo auf dunklem Hintergrund

WireGuard ist eine quelloffene, plattformübergreifende VPN-Implementierung mit moderner Kryptografie. Es ist schneller, schlanker und oft einfacher zu betreiben als klassische Protokolle wie IPSec oder OpenVPN. WireGuard läuft auf Linux, Windows, macOS, iOS, Android, BSD und eingebetteten Systemen.

Kurzdefinition: WireGuard ist ein leichtgewichtiges, schnelles VPN, das auf öffentlichen/privaten Schlüsseln basiert.

Wichtig: Diese Anleitung richtet sich an CentOS 8 Server und Linux-Clients (z. B. CentOS, Fedora, Ubuntu). Passen Sie IP-Adressen, Ports und öffentliche IPs an Ihre Umgebung an.

Übersicht der Hauptschritte

  • System aktualisieren
  • EPEL und PowerTools aktivieren
  • WireGuard installieren
  • Server konfigurieren (Schlüssel, wg0.conf)
  • Firewall-Regeln anlegen (firewalld)
  • IPv4/IPv6-Forwarding aktivieren
  • Service aktivieren und starten
  • Client installieren und konfigurieren
  • Client als Peer auf dem Server hinzufügen
  • Verbindung testen

Schritt 1 - System aktualisieren

Bevor Sie fortfahren, aktualisieren Sie das System, damit alle Pakete aktuell sind.

$ sudo dnf update

Wichtig: Führen Sie Updates in Wartungsfenstern aus, wenn der Server in Produktion ist.

Schritt 2 - EPEL-Repository installieren und aktivieren

Die benötigten Pakete liegen im EPEL. Installieren und aktivieren Sie EPEL und PowerTools.

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

Hinweis: PowerTools wird meist für Build-Abhängigkeiten benötigt, die EPEL-Pakete haben.

Schritt 3 - WireGuard installieren

Aktivieren Sie das WireGuard-COPR-Repository und installieren Sie die Pakete.

$ sudo dnf copr enable jdoss/wireguard

Installieren:

$ sudo dnf install wireguard-dkms wireguard-tools

Dadurch wird auch der GNU GCC installiert, der zum Erstellen der Kernelmodule benötigt wird.

Schritt 4 - WireGuard-Server konfigurieren

Erstellen Sie das Konfigurationsverzeichnis und die Konfigurationsdatei mit restriktiven Rechten.

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

Erstellen Sie ein Schlüsselpaar (privat / öffentlich) und speichern Sie die Dateien mit restriktiven Rechten.

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

Zeigen Sie den privaten Schlüssel an (nur lokal sichtbar):

$ sudo cat privatekey

Notieren Sie den Wert — Sie benötigen ihn für die wg0.conf.

Bearbeiten Sie die Konfiguration:

$ sudo nano /etc/wireguard/wg0.conf

Fügen Sie die folgende Grundkonfiguration ein (passen Sie IP und Port an):

[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

Erläuterung: Die [Interface]-Sektion definiert lokale Schlüssel, lokale VPN-IP(s) und den UDP-Port. SaveConfig=true sorgt dafür, dass aktive Konfigurationen beim Herunterfahren gespeichert werden.

Speichern und schließen: Strg+X, dann Y und Enter.

Schritt 5 - Firewall konfigurieren (firewalld)

Öffnen Sie den gewählten UDP-Port in firewalld. Zuerst definieren wir einen Service.

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

Inhalt:



  wireguard
  WireGuard open UDP port 37822 for client connections
  

Speichern: Strg+X, dann Y.

Aktivieren Sie den Service und Masquerading:

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

Überprüfen:

$ 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: 

Hinweis: Passen Sie die Zone und Schnittstelle (hier eth0) an Ihre Umgebung an.

Schritt 6 - IPv4-Forwarding aktivieren

Erstellen Sie eine sysctl-Datei, um IP-Forwarding und einige Tuning-Optionen zu aktivieren.

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

Inhalt:

## 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

Speichern: Strg+X, dann Y.

Wenden Sie die Änderungen an:

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

Fügen Sie die WireGuard-Schnittstelle zur internen Zone hinzu und aktivieren Sie Masquerading für diese Zone:

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

Hinweis: Die erste Zeile ist temporär (bis reboot); wenn gewünscht, fügen Sie –permanent und reload hinzu.

Schritt 7 - WireGuard Service aktivieren und starten

Aktivieren und starten Sie wg-quick für die Schnittstelle wg0:

$ sudo systemctl enable wg-quick@wg0
$ sudo systemctl start wg-quick@wg0

Status prüfen:

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

$ sudo ip a show wg0
3: wg0:  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

Wenn wg0 nicht UP ist: prüfen Sie journalctl -u wg-quick@wg0.

Schritt 8 - WireGuard-Client installieren und konfigurieren

Installationsanweisungen für Clients finden Sie auf der offiziellen WireGuard-Webseite. Für Linux-Clients gilt das gleiche Muster: Verzeichnis anlegen, Schlüssel erzeugen und wg0.conf schreiben.

$ 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

Beispielkonfiguration auf dem Client:

[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

Erläuterung: AllowedIPs steuert, welche Ziele über das VPN erreichbar sind. PersistentKeepalive ist bei NAT sinnvoll.

Starten Sie den Client-Service:

$ sudo systemctl enable wg-quick@wg0
$ sudo systemctl start wg-quick@wg0
$ sudo systemctl status wg-quick@wg0

Schritt 9 - Client auf dem Server als Peer hinzufügen

Damit der Server Verbindungen vom Client akzeptiert, fügen Sie das Peer-Block auf dem Server hinzu.

Stoppen Sie den Service zum Bearbeiten:

$ sudo systemctl stop wg-quick@wg0
$ sudo nano /etc/wireguard/wg0.conf

Fügen Sie am Ende hinzu:

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

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

Speichern, dann Service starten:

$ sudo systemctl start wg-quick@wg0

Erläuterung: Jeder Peer hat eine PublicKey-Angabe. Eingehende Verbindungen werden nur beantwortet, wenn der Peer den passenden privaten Schlüssel besitzt.

Schritt 10 - Verbindung testen

Auf dem Client:

$ ping -c 4 192.168.10.1

Beispielausgabe und wg-Status:

$ 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

Wenn Pings und Handshakes funktionieren, ist die VPN-Verbindung aktiv.

Sicherheits-Hardening und Best Practices

  • Schlüssel sicher aufbewahren. Private Keys niemals per E-Mail oder unverschlüsselt übertragen.
  • Regelmäßiger Schlüsselrotation-Prozess: planen Sie Schlüsselwechsel (z. B. alle 6–12 Monate) und automatisieren Sie den Rollout wenn möglich.
  • Minimale AllowedIPs: geben Sie nur notwendige Subnetze frei (Least Privilege).
  • Logging: aktivieren Sie systemd-Journale für wg-quick@wg0 und prüfen Sie Handshakes.
  • Firewall-Härtung: Limitieren Sie Quelle/Netze, die den WireGuard-Port erreichen dürfen (z. B. Security Groups, Fail2Ban für verdächtige Port-Scans).
  • Backup: Sichern Sie /etc/wireguard mit Zugriffsbeschränkungen.

Wichtig: WireGuard verschlüsselt den Tunnel; Root- oder Server-Sicherheitslücken umgehen das VPN. Härten Sie das Betriebssystem (Updates, SSH-Härtung, Zugangskontrolle).

Troubleshooting-Checklist

  • Prüfen Sie, ob der Kernel-Modul-Build erfolgreich war: dnf-Log prüfen.
  • Prüfen Sie, ob der Port offen und erreichbar ist: sudo ss -ulpn | grep 37822 und von außen nc/udp testen.
  • Prüfen Sie IP-Forwarding: sysctl net.ipv4.ip_forward sollte = 1 sein.
  • Prüfen Sie Firewall-Regeln und Zones: firewall-cmd –list-all –zone=internal
  • Prüfen Sie, ob die richtigen Keys verwendet werden: public keys auf beiden Seiten vergleichen.
  • Prüfen Sie Logs: sudo journalctl -u wg-quick@wg0 –no-pager

Fehlerfall: Wenn kein Handshake stattfindet, kontrollieren Sie Endpoint/Port, NAT (PersistentKeepalive) und ob der Server-PublicKey korrekt auf dem Client ist.

Vergleich: WireGuard vs. OpenVPN/IPSec (Kurzüberblick)

  • Performance: WireGuard ist leichter und oft schneller wegen weniger Overhead.
  • Konfiguration: WireGuard nutzt einfache Schlüsseldateien; OpenVPN/IPSec haben mehr Optionstiefe und Kompatibilität.
  • Audit: WireGuard hat einen kleineren Code-Footprint, was die Prüfung erleichtert.

Tipp: Verwenden Sie WireGuard für moderne, einfache VPN-Setups. Setzen Sie OpenVPN/IPSec ein, wenn Sie Features benötigen, die WireGuard nicht anbietet (z. B. bestimmte Authentifizierungs-Plugins oder ältere Clients).

Playbook für produktiven Rollout (Mini-SOP)

  1. Testumgebung aufsetzen (1 Server, 1 Client).
  2. Konfiguration dokumentieren (IPs, Ports, Keys, Firewall-Änderungen).
  3. Backup vor Änderungen erstellen (/etc, firewalld-Konfiguration).
  4. Rollout schrittweise: intra-netzwerk, dann externe Tests.
  5. Monitoring konfigurieren (Handshakes, Traffic, Uptime).
  6. Post-Rollout-Test: Verbindungen, Routing, DNS-Auflösung prüfen.

Rollenbasierte Checkliste

  • Administrator:
    • Server-Updates durchführen
    • firewall-cmd konfigurieren
    • Schlüssel generieren und sichern
  • Netzwerkingenieur:
    • NAT/Forwarding überprüfe
    • Routing und MTU abstimmen
  • Client-Benutzer:
    • Private Key sicher speichern
    • Client-Konfiguration testen

Testfälle und Akzeptanzkriterien

  • ICMP: Client kann Server-VPN-IP anpingen (4 von 4 Pakete).
  • Handshake: Letzter Handshake innerhalb der letzten 2 Minuten.
  • Routing: Client erreicht interne Server über AllowedIPs.
  • Firewall: Port offen, aber nur für erlaubte Quellen erreichbar.

Migrationstipps

  • Von CentOS 7 auf 8: Passen Sie Paketquellen an und testen Sie DKMS-Builds.
  • Auf RHEL-compatiblen Systemen prüfen Sie EPEL/PowerTools-Äquivalente.

Kurze Sicherheits- und Datenschutzhinweise

  • WireGuard selbst speichert keine Metadaten zweckdienlich; jedoch entstehen System-Logs. Löschen oder begrenzen Sie Log-Retention bei Bedarf.
  • Wenn Sie personenbezogene Daten durch den Tunnel leiten, prüfen Sie Datenschutzauswirkungen und evtl. DSGVO-Anforderungen.

Zusammenfassung

  • WireGuard ist eine moderne, performante VPN-Lösung.
  • Die wichtigsten Schritte: Pakete installieren, Schlüssel erzeugen, Firewall anpassen und IP-Forwarding aktivieren.
  • Testen Sie Handshakes, pings und Routing nach der Konfiguration.
  • Implementieren Sie Schlüsselrotation, Logging- und Firewall-Härtung vor dem produktiven Einsatz.

Wichtig: Diese Anleitung liefert eine solide Grundlage. Passen Sie IPs, Ports und Sicherheitsrichtlinien an Ihre Unternehmensanforderungen an.


Zusätzliche Ressourcen und Referenzen: Offizielle WireGuard-Webseite und die CentOS/DNF-Dokumentation.

Autor
Redaktion

Ähnliche Materialien

Standardbrowser in Windows 11 ändern
Windows

Standardbrowser in Windows 11 ändern

Btrfs: Speicher-Pooling & Spiegelung unter Linux
Linux

Btrfs: Speicher-Pooling & Spiegelung unter Linux

CyanogenMod 12.1 auf Lenovo A2010 installieren
Android ROM

CyanogenMod 12.1 auf Lenovo A2010 installieren

Textanimationen in Nachrichten auf dem iPhone
Anleitungen

Textanimationen in Nachrichten auf dem iPhone

Firefox PWAs: Taskbar Tabs für Windows aktivieren
Browser

Firefox PWAs: Taskbar Tabs für Windows aktivieren

iPhone-Speicher freimachen ohne Apps zu löschen
Anleitung

iPhone-Speicher freimachen ohne Apps zu löschen