WireGuard einfach erklärt
WireGuard ist ein VPN Protokoll, welches Datenpakete verschlüsselt über UDP an einen oder mehreren, sogenannten Peer senden und/oder empfangen kann. Es zeichnet sich durch die relativ einfache Implementierung und hohe Schnelligkeit aus, aufgrund der Verwendung von UDP (User Datagram Protocol).
WireGuard ermöglicht mehrere VPN Verbindungen zu mehreren Hosts gleichzeitig. Daher gibt es kein klassisches Server-Client-Modell, sondern ein Peer-to-Peer-Modell. Ein Teilnehmer eines WireGuard VPNs ist ein Peer des WireGuard Netzwerks.
Bei jedem Peer müssen die folgenden Punkte richtig konfiguriert werden, damit eine Verbindung zu anderen Peers möglich ist: Das eigene Interface und die Liste der anderen Peers mit dem der eigene Peer Kommunizieren kann.
Interface
Jeder WireGurad Peer hat ein eigenes WireGuard Interface. Es handelt sich um ein Interface, wie es z.B. auch bei WLAN, oder Ethernet der Fall ist, nur virtuell.
Schlüsselpärchen
Jedes WireGuard-Interface muss ein eigenes Schlüsselpärchen (Private & Public Key) haben. Das Schlüsselpärchen muss vom jedem Peer selbst generiert werden.
Der Private Key sollte dabei stets auf dem jeweiligen Interface des Peers aufbewahrt werden. Einige WireGuard Implementierungen bieten jedoch die Generierung des Schlüsselpärchens beim Hinzufügen eines Peers gleich mit an, um die Konfiguration zu vereinfachen (z.B. über das Laden einer Konfiguration über einen QR-Code).
Sollte man im Besitz eines Private Keys eines Peers sein, aber der Public Key ist unbekannt, kann man mittels wg pubkey < private.key > public.key den Public Key jederzeit errechnen (erfordert wireguard-tools). Das Errechnen des Public Keys unterstützen nur manche WireGuard Implementierungen.
Zwischennetz
Außerdem wird im Interface auch ein "Zwischennetz" geführt, wobei jeder Peer eine andere IP-Adresse aus diesem Netz benötigt. Diese IP-Adressen müssen in den Interface-Konfigurationen der anderen Peers hinterlegt werden.
Um ein Routing zwischen WireGuard Netz und echtem vorhandenen Netz zu ermöglichen, sollte es sich komplett außerhalb der jeweiligen tatsächlich vorhandenen Subnetze befinden, aber zugleich im privaten Adressbereich sein, also eines der folgenden Netze: 10.0.0.0/8, 192.168.0.0./16, oder 172.16.0.0/12. Zum Beispiel kann man für den ersten VPN Teilnehmer in seinem Interface die 10.10.10.1/24 verwenden. Der nächste Teilnehmer kann in seinem Interface dann 10.10.10.2/24 nutzen, usw..
Listen Port (optional)
Sollte der jeweilige VPN Teilnehmer auf Verbindungen von anderen Teilnehmern lauschen, dann gibt man auch einen Listen Port an (üblicherweise UDP 51820, kann aber auch anders lauten).
Peer
Jeder Peer enthält ein oder mehrere Konfigurationen anderer Peers. Ein Peer-Abschnitt enthält mindestens den Public Key des entfernten Peers.
Außerdem...
Endpoint (optional)
Sollte der lokale Peer die Verbindung zu einem entfernten Peer aufbauen, dann muss der Endpoint angegeben werden. Es handelt sich in der Regel um einen öffentlich erreichbaren Host und den jeweiligen Port (z.B. "vpn.meinedomain.de:51820").
Allowed IPs
Das ist eine Liste von IP-Adressen, bzw. IP-Ranges, die bestimmt sind, zum jeweiligen Peer geroutet zu werden. Mahr dazu im Beispiel unten.
Pre-Shared Key
To be continued...
Wichtig!
Denk daran, dass jeder Teilnehmer, also Peer im WireGuard Netzwerk die anderen Peers kennen muss. Ansonsten kommt keine Kommunikation zustande. Es gibt keinen Server und keine Clients. Jeder Peer hat somit einen "Interface"-Abschnitt und mindestens einen "Peer"-Abschnitt. Jeder Teilnehmer ist verantwortlich für seine eigene IP-Konfiguration und das, was er von anderen Teilnehmern an Verbindungen erlaubt und selbst verschicken kann (Allowed IPs).
To be continued...
No comments to display
No comments to display