Eins muss man ja zu WireGuard sagen, das Protokoll ist schnell, sicher und super einfach in der Handhabung. Aber im „WireGuard Config File“ kann man schon einige Dinge einstellen und justieren. Ich beleuchte mal eben, was die bekannten Optionen so können und was diese letztendlich so tun.

Erstmal poste ich eine valide „Server / Client Konfiguration“ mit allen Optionen und anhand von dieser arbeiten wir uns nach und nach durch.

Wer selber eine automatisch fertig generierte WireGuard Konfiguration haben möchte, der kann meinen WireGuard Config Generator nutzen. Hier gehts zum automatischen WireGuard Generator.

[Interface]
Address = 172.31.0.1/30
ListenPort = 51820
PrivateKey = A7PsGiLLuu78K+JuYtzslNKgVJDGc7XmYjgWs0sLDvU=
MTU = 1420
Table = off
PostUp = iptables -A FORWARD -i %i -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
PublicKey = DunBY+EakGnzp1dQOlQqqonyHeBR2Sysv0YDRMdOHRM=
PresharedKey = XG/sXQnayT4xSqHSPPDTNJ7hMGB958Cktop3jUUpBxw=
AllowedIPs = 172.31.0.2/32
[Interface]
Address = 172.31.0.2/30
ListenPort = 54654
PrivateKey = 1mOXxZTAFKGDWkcoAexKsVz93FJOT2uXygOz8tMfhCI=
MTU = 1420
DNS = 1.1.1.1

[Peer]
PublicKey = ONZvCL5FMoTwq/Mm2zm7MeLd686RJI2T5B3+J0HX+SY=
PresharedKey = XG/sXQnayT4xSqHSPPDTNJ7hMGB958Cktop3jUUpBxw=
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = hostname.ipv64.net:51820
PersistentKeepalive = 30
  1. Address = 172.31.0.1/30
    • Diese IP-Adresse wird für das WireGuard-Interface am System genutzt. Der /30-Subnetzbereich gibt die Größe des Netzwerkes an, in welcher sich die VPN Clients befinden. (Server + x Anzahl Client).
  2. ListenPort = 51820
    • Der Server / Client hört auf Port 51820 / UDP für eingehende Verbindungen. Das ist im übrigen auch der Standardport für WireGuard.
  3. PrivateKey = A7PsGiLLuu78K+JuYtzslNKgVJDGc7XmYjgWs0sLDvU=
    • Das ist der private Schlüssel des Servers. Dieser muss geheim bleiben. Mit diesem wird in dieser Verbindung die Datenpakete, die mit dem passenden PublicKey verschlüsselt wurden, wieder alles entschlüsselt.
  4. PublicKey = DunBY+EakGnzp1dQOlQqqonyHeBR2Sysv0YDRMdOHRM=
    • Das ist der öffentliche Schlüssel. Damit kann eine Identifizierung stattfinden. Dieser Schlüssel wird dazu verwendet ausgehenden Traffic zum Client oder Server zu verschlüsseln und nur der Empfänger dieser Daten mit dem passenden PrivateKey kann den Datenverkehr korrekt entschlüsseln.
  5. PresharedKey = XG/sXQnayT4xSqHSPPDTNJ7hMGB958Cktop3jUUpBxw=
    • Der PresharedKey dient als zusätzliche Sicherheitsmaßnahme. Wenn sich zwei WireGuard-Peers (Server und Client) verbinden, läuft die Verschlüsselung normalerweise über den X25519-Schlüsselaustausch (Public/Private Keys). Mit dem PresharedKey wird ein zusätzlicher Schlüsselwert in den Handshake einbezogen.
  6. MTU = 1420
    • Die „Maximum Transmission Unit“ (MTU) bestimmt die maximale Größe eines Pakets. 1420 ist ein guter Wert für VPNs, um Fragmentierung zu vermeiden. In manchen Fällen, wo IPv6 zum Einsatz kommt, hat es sich als sinnvoll erwiesen, die MTU auf 1380 zu setzen.
  7. Table = off
    • Normalerweise würde WireGuard automatisch eine Routing-Tabelle erstellen, mit den Netzen, die im Bereich „AllowedIPs“ stehen. Table = off bedeutet, dass das nicht passiert, weil es manuell über iptables geregelt wird. Also du legst selber die Routingregeln an.
  8. PostUp = X Y Z Befehl und und und…
    • Sobald das VPN-Interface hochfährt und eine Verbindung hergestellt wird, wird folgender Befehl verwendet. In aller Regel werden hier weitere iptables Regeln gesetzt, welche für die Verbindung relevant sind.
  9. PostDown = X Y Z Befehl und und und…
    • Wenn das WireGuard Interface wieder heruntergefahren wird, dann besteht auch die Möglichkeit wieder Befehle abzusetzen. In vielen Fällen werden dann iptables Regeln wieder deaktiviert.
  10. AllowedIPs = 172.31.0.2/32, 192.168.0.0/24, 10.10.10.0/28
    • Diese Komma separierte Liste gibt an, welche entfernten Netzwerke über diese Verbindung erreicht werden dürfen. Nur wenn ein Ziel in dieser Liste steht, darf es auch über den VPN-Tunnel kommunizieren.
  11. DNS = 1.1.1.1
    • Der Client nutzt den Cloudflare-DNS-Server (1.1.1.1) über das VPN. Das sorgt dafür, dass DNS-Anfragen über das VPN geleitet werden anstatt Lokal im Netzwerk.
  12. Endpoint = hostname.ipv64.net:51820
    • Die öffentliche IP oder der Hostname des zu verbindenden Servers, mit dem sich der Client verbinden soll. Port 51820 ist der Port, auf dem der Server lauscht in diesem Beispiel. Es ist auch möglich, dass dieser Endpoint auf beiden Seiten eingetragen wird.
  13. PersistentKeepalive = 30
    • Der Client oder Server sendet alle 30 Sekunden ein kleines Paket „Healthpaket“, um die Verbindung aktiv zu halten.

Hier nochmal der Hinweis zum WireGuard Config Generator

WireGuard Config Generator
WireGuard Config Generator