Zurück zum Blog

Magichosting

WireGuard VPN auf Debian: Server einrichten, Client verbinden, Traffic routen

E
Elias Bieber
Geschätzte Lesezeit: 4 Min.

WireGuard-Setup auf Debian mit allen Befehlen: Schlüssel erzeugen, wg0.conf schreiben, Client anbinden, IP-Forwarding aktivieren und optional Port-Forwarding einrichten.

VPNDebianWireGuardServerNetzwerk

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

Schritt 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.key

Schlü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 = 25

Wenn 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 = 25

Ohne 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=1

Dauerhaft: 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 MASQUERADE

Regeln 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:48000

Alternativ z. B. nginx Reverse Proxy mit proxy_pass.

Schritt 6 – Server starten

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

Status 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@wg0

Optional – 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