Einführung
WireGuard ist eine schnelle und sichere Alternative zu VPN-Lösungen wie IPSec und OpenVPN. Vorteile: Multithreading und Kernel-Integration – symmetrische Durchsätze von 1 Gbps sind auch auf schwächerer Hardware möglich. Der Server ist schlank und einfach einzurichten. Es gibt Clients für die gängigsten Betriebssysteme inkl. Windows.
Weitere Pluspunkte: Dienste wie SSH, FTP oder Remote-Desktop können auf der VPN-IP statt auf der öffentlichen Server-IP laufen, was Angriffsflächen verkleinert. Zudem kannst du einen Teil oder deinen gesamten Internetverkehr über WireGuard tunneln und dabei problemlos über 1 Gbps erreichen. Ohne Port-Forwarding hinter NAT eignet sich ein kleiner VPS mit WireGuard, um Dienste von deinem Rechner ins Internet zu exponieren.
Dieses Tutorial behandelt die Installation von WireGuard auf einem Debian-Server.
- Öffentliche IP des Servers (Beispiel): 203.0.113.1 – bitte durch deine eigene IP ersetzen.
- Tunnel-Subnetz: 10.0.0.0/24
Schritt 1 – Installation
Per SSH mit dem Server verbinden, dann:
sudo apt update && sudo apt install wireguard
wg --versionSchritt 2 – Server-Konfiguration
Wir gehen von einem Server mit einem Client aus. Für weitere Clients einfach einen weiteren Peer in wg0.conf eintragen und die Client-Schritte wiederholen.
Schlüssel für den Server erzeugen (der öffentliche Schlüssel erscheint im Terminal):
wg genkey | sudo tee /etc/wireguard/wg-private.key | wg pubkey | sudo tee /etc/wireguard/wg-public.keySchlüssel später anzeigen: sudo cat /etc/wireguard/wg-private.key bzw. wg-public.key.
Datei /etc/wireguard/wg0.conf anlegen und bearbeiten. 203.0.113.1 = öffentliche IPv4 des Servers, 10.0.0.1 = VPN-IP des Servers, 10.0.0.2 = Client. Weitere Clients: 10.0.0.3, … im Subnetz 10.0.0.0/24.
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = DEIN_GENERIERTER_PRIVATE_KEY
[Peer]
PublicKey = NOCH_LEER_–_WIRD_VOM_CLIENT
AllowedIPs = 10.0.0.2/32
PersistentKeepalive = 25- Address: Private VPN-IP des Servers, /24 = 10.0.0.1–10.0.0.254.
- ListenPort: Port des Servers (z. B. 51820), muss in der Firewall freigegeben sein.
- PrivateKey: Privatkey des Servers; der öffentliche Schlüssel geht an die Clients.
- AllowedIPs (Peer): Subnetz/IP der Clients; bei Bedarf einschränken.
- PersistentKeepalive: Hält die Verbindung z. B. alle 25 Sekunden aktiv.
Schritt 3 – Client-Konfiguration
Auf dem Client: Unter Linux wie Schritt 1 und 2 (bis zur Konfiguration); unter Windows/Android den WireGuard-Client installieren – er kann ein Schlüsselpaar beim Anlegen eines Tunnels erzeugen. Den öffentlichen Schlüssel des Clients in /etc/wireguard/wg0.conf beim Peer unter PublicKey eintragen.
Beispiel-Client-Konfiguration (nur VPN-Verkehr 10.0.0.0/24, nicht das gesamte Internet). 203.0.113.1 durch deine Server-IP ersetzen:
[Interface]
Address = 10.0.0.2/24
PrivateKey = PRIVATE_KEY_DES_CLIENTS
[Peer]
PublicKey = OEFFENTLICHER_KEY_DES_SERVERS
AllowedIPs = 10.0.0.0/24
Endpoint = 203.0.113.1:51820
PersistentKeepalive = 25Wenn der gesamte Verkehr über den Server laufen soll (inkl. IPv6):
[Interface]
DNS = 8.8.8.8
Address = 10.0.0.2/24, 2a01:4f8:1234::2/128
PrivateKey = PRIVATE_KEY_DES_CLIENTS
[Peer]
PublicKey = OEFFENTLICHER_KEY_DES_SERVERS
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = 203.0.113.1:51820
PersistentKeepalive = 25Ohne IPv6 die IPv6-Adressen weglassen. Bei IPv6 den Client im Server unter AllowedIPs des Peers eintragen.
Schritt 4 – Gesamten Verkehr über VPN leiten
Bei AllowedIPs = 0.0.0.0/0 muss auf dem Server IP-Forwarding und NAT aktiviert werden.
sudo sysctl net.ipv4.ip_forward=1Dauerhaft: In /etc/sysctl.conf setzen: net.ipv4.ip_forward = 1.
iptables-Regeln (enp1s0 durch deine Haupt-Interface ersetzen, 203.0.113.1 durch deine Server-IP):
sudo iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o enp1s0 -j SNAT --to-source 203.0.113.1
sudo iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j MASQUERADERegeln persistent: sudo apt install iptables-persistent, dann sudo iptables-save -f /etc/iptables/rules.v4.
Schritt 5 – Port-Forwarding (optional)
Beispiel: TCP-Dienst auf dem VPN-Client 10.0.0.2:48000 von außen unter 203.0.113.1:45000 erreichbar machen. enp1s0 = Haupt-Interface, 203.0.113.1 = Server-IP:
sudo iptables -t nat -A PREROUTING -d 203.0.113.1/32 -i enp1s0 -p tcp -m tcp --dport 45000 -j DNAT --to-destination 10.0.0.2:48000Alternativ z. B. nginx Reverse Proxy mit proxy_pass.
Schritt 6 – Server starten
sudo systemctl start wg-quick@wg0
sudo systemctl enable wg-quick@wg0Status prüfen: sudo wg. Bei erfolgreichem Client siehst du „latest handshake“ und „transfer“. Ping-Test: ping 10.0.0.1. Dienste nur über VPN erreichbar machen: Bind-Adresse auf 10.0.0.1 setzen oder Zugriff auf 10.0.0.0/24 beschränken (z. B. sshd: AllowUsers [email protected].*). Immer einen Zugangsweg offen lassen, um sich nicht auszusperren.
Schritt 7 – Konfiguration neu laden
sudo systemctl restart wg-quick@wg0Optional – Neuladen ohne Unterbrechung aktiver Sessions: sudo wg syncconf wg0 <(wg-quick strip wg0) (als root).
Schritt 8 – Fehlerbehebung
- Erreichst du den Server überhaupt? (Ping, Port 51820 offen?)
- Verbindung möglich, aber kein Internet bei 0.0.0.0/0? (IP-Forward, NAT/iptables prüfen.)
- Windows-Client nicht erreichbar? (Firewall, AllowedIPs.)
- Langsame Geschwindigkeit? (CPU, Netzwerk, MTU.)
- Dienst unter https://10.0.0.1:PORT nicht erreichbar? (Bind-Adresse, Firewall.)
- Als Client keinen Zugriff auf Dienste eines anderen Clients? (Routing, AllowedIPs.)
Fazit
Du solltest nun einen lauffähigen WireGuard-VPN-Server auf Debian haben. Bei Fragen zu Hosting oder VPN-Servern: Support-Ticket bei MagicHosting.
War dieser Beitrag hilfreich?
MagicHosting – Hosting mit Mehrwert
Bei MagicHosting lohnt sich Hosting: Faire Preise, aktuelle Aktionen und Betrieb im SkyLink RZ. Server, Domains und persönlicher Support – ohne versteckte Kosten.
- Aktuelle Special Sales mit Rabatten auf Server und Pakete
- Günstige Domains mit transparenten Preisen und guten Angeboten
- Leistungsstarker DDoS-Schutz für maximale Verfügbarkeit
- Persönlicher Support bei Fragen und Problemen