WireGuard auf CentOS 8 installieren und konfigurieren

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 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)
- Testumgebung aufsetzen (1 Server, 1 Client).
- Konfiguration dokumentieren (IPs, Ports, Keys, Firewall-Änderungen).
- Backup vor Änderungen erstellen (/etc, firewalld-Konfiguration).
- Rollout schrittweise: intra-netzwerk, dann externe Tests.
- Monitoring konfigurieren (Handshakes, Traffic, Uptime).
- 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.
Ähnliche Materialien

Standardbrowser in Windows 11 ändern

Btrfs: Speicher-Pooling & Spiegelung unter Linux

CyanogenMod 12.1 auf Lenovo A2010 installieren

Textanimationen in Nachrichten auf dem iPhone

Firefox PWAs: Taskbar Tabs für Windows aktivieren
