Wechseln zu:Navigation, Suche
Wiki
Die Seite wurde neu angelegt: „{{Lang}} {{#vardefine:headerIcon|spicon-utm}} {{var | display | WireGuard | }} {{var2 | head | WireGuard Konfiguration im Admin Interface | }} {{va…“
 
KKeine Bearbeitungszusammenfassung
 
(5 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 4: Zeile 4:


{{var | display
{{var | display
| WireGuard
| WireGuard®
| }}
| WireGuard® }}
{{var2 | head
{{var | head
| WireGuard Konfiguration im Admin Interface
| WireGuard® Konfiguration im Admin Interface
| }}
| WireGuard® configuration in the admin interface }}
{{var2 | neu--Funktion
{{var | Allgemeines
| Neue Funktion ab v12.2.2
|  }}
{{var2 | Allgemeines
| Allgemeines
| Allgemeines
| }}
| General }}
{{var2 | 1=Allgemeines--desc
| 2=Wireguard® ist ein modernes und einfaches VPN Protokoll, das zusätzlich durch seine Geschwindigkeit überzeugt.
Wireguard verzichtet auf einige aufwendige Verfahren zum Schlüsselaustausch und ist unter Anderem dadurch einfacher zu handhaben als IPSec.
Durch die Integration in den Linux Kernel ist eine performante und Ressourcen schonendere Verarbeitung als bei OpenVPN möglich.
Allerdings hat OpenVPN im Bezug auf das "pushen" von Einstellungen (Routen, DNS, etc.) Vorteile in der Administration von S2E/Roadwarrior-Verbindungen.
 
Wireguard kann für S2S- und S2E-Verbindungen genutzt werden.
Für S2E-Verbindungen stehen für verschiedenen Betriebssysteme entsprechende Clients durch das Wireguard-Projekt zur
 
Verfügung:
https://www.wireguard.com/install/
Verbindung
 
Die Kommunikation erfolgt über einen frei wählbaren UDP Port und nutzt IPv4 und IPv6 zum Transport der Datenpakete.
 
Das Handling zwischen den beiden Peers ist sehr an OpenSSH angelehnt.
"Peers" müssen zunächächst  ihre PublicKeys austauschen und können dann im weiteren "einfach" Daten austauschen.
Dabei zählt der Austausch der PublicKeys explizit nicht zur Spezifikation von WireGuard und muss manuell erfolgen.
 
Ein PublicKey muss einen Peer eindeutig identifizieren.
Eine mehrfache Verwendung ist nicht praktikabel.
 
Zum bessern Schutz kann noch zusätzlich ein Preshared Key verwendet werden.
 
Zum Start der Kommunikation muss ein Handshake zwischen den Peers erfolgen.
Dieser ist deutlich kürzer als zum Beispiel bei IPSec.
Peer A sendet ein Paket und Peer B antwortet auf dieses Paket.
Damit ist der Handshake abgeschlossen und die Peers haben einen synchronen Key jeweils für das Senden und Empfangen.
Der Handshake wird alle 2 Minunten bei einer laufenden Verbindung ausgeführt.
 
wg show zeigt den Status des Handshake (latest handshake) und Zeitpunkt mit an:
 
  1 root@a:~# wg show
  2 interface: wg0
  3 public key: beN9ikzlz2l6QPCj7IDbkI+lVeaLXBepkmnrE3XhVDo=
  4 private key: (hidden)
  5 listening port: 51280
  6
  7 peer: yyBYvlMU3J7ZFOF/5pafNPLIw6cHBggbuXzq9Nq6+Aw=
  8 preshared key: (hidden)
  9 endpoint: 88.198.198.46:51820
10 allowed ips: 10.2.0.0/16
11 latest handshake: 49 seconds ago
12 transfer: 4.80 MiB received, 154.58 KiB sent
13 persistent keepalive: every 1 second
 
Ist der Handshake nicht erfolgreich wird Wireguard keinen Fehler an den Absender schicken.
"Silence is a Virtue" -> Schweigen ist eine Tugend
 
Die Verschlüsselung ist dabei fest vorgegeben.
Der Wechsel der Cipher ist durch Einstellungen nicht vorgesehen.
Hier zeigt sich auch ein Nachteil: Gilt ein verwendetes Verfahren als nicht mehr sicher müssen alle Peers "zeitgleich" aktualisiert werden.
 
Die Schnittstelle zwischen dem WireGuard im Kernel und dem OS ist das wg-Interface (z.B.: wg0).
Das Interface präsentiert sich als "normales" Interface und kann über Tools wie iproute2 konfiguriert werden.
Ebenso wird das Interface in den Netzwerkeinstellungen gelistet und bietet ein paar relevante Einstellungen.
Routing
 
Pakete, die über eine Wireguard Verbindung geroutet werden sollen, müssen über das zugehörige wg-Interface geleitet werden. Innerhalb der WireGuard-Instanz wird über die Definition der AllowedIPs dann ein Peer identifiziert und die Daten verschlüsselt und auf die Reise geschickt.
 
Andersherum werden eingehende Pakete mit dem entsprechenden Key entschlüsselt und werden anschließend auf die AllowedIPs geprüft. Nicht akzeptable IP-Adressen werden verworfen.
 
So ist die Verwendung von 0.0.0.0/0 bzw. ::/0 als AllowedIPs zulässig.
Hier kann pro Interface / Instanz nur ein Peer definiert werden.
 
Details:
 
# Plaintext Paket kommt vom System durch eine Route am wgX Interfaec an
# Ziel-IP wird überprüft und bei einem Match mit einer AllowedIP einem Peer zugewiesen<br>Ist eine Zuweisung nicht möglich wird das Paket mittels ICMP “no route to host” abgelehnt
# Das Paket wird mit den für den Peer hinterlegten Key verschlüsselt
# Ein Header wird dem eigentlichen Paket vorgesetzt
# Anschließend werden der Header + Paket mittels UDP an die zuletzt gesetzte IP-Adresse und den definierten Port des Peers gesendet. Ist die IP nicht ermittelbar wird das Paket verworfen und eine entsprechende ICMP-Meldung verschickt.
# Paket kommt am Peer an
# Über den Header bestimmt WireGuard den zugehörigen Peer.<br>Wenn der Nachrichten Counter stimmt wird versucht das Daten-Paket zu entschlüsseln.<br>Ist das nicht möglich wird das Paket verworfen.
# Stimmen die Daten wird die Quell-IP als neuer Endpunkt des Peers geprüft und gegebenenfalls gesetzt
# Nachdem das Paket entschlüsselt wurde, wird geprüft ob das Paket ein IP-Paket ist. Ansonsten wird es verworfen.<br>Bei einem gültigen IP-Paket wird anschließend geprüft ob das IP-Paket auf die AllowsIPs passt.<br>Sollte es nicht der Fall sein, wird das Paket verworfen.
# Wird das Paket zu gelassen wir das Paket an das wg-Interface übergeben. Danach übernimmt das Routing im OS.
 
 
Peer Roaming
* Die Deklaration der IP/Hostname eines Peers ist nicht zwingend erforderlich
* WireGuard verwendet automatisch die äußere IP eines korrekt authentifizierten Datenpaketes
* Initial muss natürlich eine Seite bekannt sein
 
NAT
 
WireGuard kann einen Keepalive schicken. Dadurch werden Verbindungen auf NAT-Routern offen gehalten. Da die Kommunikation nur über einen UDP-Port läuft ist WireGuard gegenüber NAT-Problematiken entsprechend nicht anfällig.
Sonstiges
 
Webseiten - weitere Informationen
 
 
https://www.wireguard.com/
https://www.wireguard.com/papers/wireguard.pdf
https://wiki.archlinux.org/title/WireGuard
 
http://www.noiseprotocol.org/noise.html#introduction
http://cr.yp.to/ecdh.html
http://cr.yp.to/chacha.html
http://cr.yp.to/mac.html
https://www.blake2.net/
https://github.com/veorq/SipHash/
https://eprint.iacr.org/2010/264
 
| 3= }}
{{var | Artikel
| Artikel zur Einrichtung
}}
{{var | Übersicht--desc
{{var | Übersicht--desc
| Wireguard® ist ein modernes und einfaches VPN Protokoll, das zusätzlich durch seine Geschwindigkeit überzeugt.  
| Wireguard® ist ein modernes und einfaches VPN Protokoll, das zusätzlich durch seine Geschwindigkeit überzeugt.  
|  }}
| Wireguard® is a modern and simple VPN protocol, which additionally convinces by its performance. }}
{{var | Übersicht
{{var | Übersicht
| Übersicht
| Übersicht
| }}
| Overview }}
{{var | Vorteile
{{var | Vorteile
| Vorteile
| Vorteile
| }}
| Advantages }}
{{var | 1=Vorteile--desc
{{var | 1=Vorteile--desc
| 2=<li class="list--element__bullet">Wireguard verzichtet auf einige aufwendige Verfahren zum Schlüsselaustausch und ist unter Anderem dadurch einfacher zu handhaben als IPSec</li>
| 2=<li class="list--element__bullet">Wireguard verzichtet auf einige aufwendige Verfahren zum Schlüsselaustausch und ist unter anderem dadurch einfacher zu handhaben als IPSec</li>
<li class="list--element__bullet">Durch die Integration in den Linux Kernel ist eine performante und Ressourcen schonendere Verarbeitung als bei OpenVPN möglich</li>
<li class="list--element__bullet">Durch die Integration in den Linux Kernel ist eine performante und Ressourcen schonendere Verarbeitung als bei OpenVPN möglich</li>
| 3= }}
| 3=<li class="list--element__bullet">Wireguard does without some complex procedures for key exchange and is therefore easier to handle than IPSec.</li>
<li class="list--element__bullet">Due to the integration into the Linux kernel, a high-performance and resource-saving processing is possible compared to OpenVPN.</li> }}
{{var | Nachteile
{{var | Nachteile
| Nachteile
| Nachteile
| }}
| Disadvantages }}
{{var | 1=Nachteile--desc
{{var | 1=Nachteile--desc
| 2=<li class="list--element__bullet">Einstellungen wie Routen, DNS etc. lassen sich nicht wie bei OpenVPN "pushen" </li>
| 2=<li class="list--element__bullet">Einstellungen wie Routen, DNS etc. lassen sich nicht wie bei OpenVPN "pushen" </li>
<li class="list--element__bullet">Die Verwaltung von Roadwarriern ist dadurch deutlich aufwändiger</li>
<li class="list--element__bullet">Die Verwaltung von Roadwarriors ist dadurch deutlich aufwändiger</li>
| 3= }}
| 3=<li class="list--element__bullet">Settings like routes, DNS etc. cannot be "pushed" like with OpenVPN </li>
<li class="list--element__bullet">This makes the management of Roadwarriors much more complex</li> }}
{{var | Gut zu wissen
{{var | Gut zu wissen
| Gut zu wissen
| Gut zu wissen
| }}
| Good to know }}
{{var | Gut zu wissen--desc
{{var | Gut zu wissen--desc
| Auch die OpenVPN-Integration in der Securepoint UTM ist sehr performant.<br>Der Geschwindigkeitsnachteil von SSL-VPN-Verbindungen gegenüber WireGuard-Verbindungen fällt daher nicht so gravierend aus, wie dieses bei Mitbewerbern zu beobachten ist
| Auch die OpenVPN-Integration in der Securepoint UTM ist sehr performant.<br>Der Geschwindigkeitsnachteil von SSL-VPN-Verbindungen gegenüber WireGuard-Verbindungen fällt daher nicht so gravierend aus, wie dieses bei Mitbewerbern zu beobachten ist
| }}
| The OpenVPN integration in the Securepoint UTM is also very performant.<br>The speed disadvantage of SSL-VPN connections compared to WireGuard connections is therefore not as serious as can be observed with competitors. }}
{{var | Verbindung
{{var | Verbindung
| Verbindung
| Verbindung
| }}
| Connection }}
{{var | Verbindung--desc
{{var | Verbindung--desc
| Die Kommunikation erfolgt über einen frei wählbaren UDP Port und nutzt IPv4 und IPv6 zum Transport der Datenpakete.
| Die Kommunikation erfolgt über einen frei wählbaren UDP Port und nutzt IPv4 und IPv6 zum Transport der Datenpakete.
<p>Das Handling zwischen den beiden Peers ist sehr an OpenSSH angelehnt.<br>
<p>Das Handling zwischen den beiden Peers ist sehr an OpenSSH angelehnt.<br> "Peers" müssen zunächst ihre PublicKeys austauschen und können dann im weiteren "einfach" Daten austauschen.<br> Dabei zählt der Austausch der PublicKeys explizit nicht zur Spezifikation von WireGuard und muss manuell erfolgen.</p>
"Peers" müssen zunächst ihre PublicKeys austauschen und können dann im weiteren "einfach" Daten austauschen.<br>
Ein PublicKey muss einen Peer eindeutig identifizieren.<br> Eine mehrfache Verwendung ist nicht praktikabel.<br> Zum besseren Schutz kann zusätzlich noch ein Preshared Key verwendet werden.  
Dabei zählt der Austausch der PublicKeys explizit nicht zur Spezifikation von WireGuard und muss manuell erfolgen.</p>
| Communication takes place via a freely selectable UDP port and uses IPv4 and IPv6 to transport the data packets.
Ein PublicKey muss einen Peer eindeutig identifizieren.<br>
<p>The handling between the two peers is very similar to OpenSSH.<br> "Peers" must first exchange their PublicKeys and can then "simply" exchange data further on.<br> The exchange of PublicKeys is explicitly not part of the WireGuard specification and must be performed manually.</p>
Eine mehrfache Verwendung ist nicht praktikabel.<br>
A PublicKey must identify a peer unmistakably.<br> Multiple uses are not practical.<br> For better protection, a preshared key can also be used. }}
Zum bessern Schutz kann noch zusätzlich ein Preshared Key verwendet werden.  
Der befehl {{code|wg show}} auf einer root-Konsole zeigt die aktiven Verbidnungen
| }}
{{var | Verbindung--Bild
| wg-show.png
| wg-show.png }}
{{var | Verbindung--cap
|
|  }}
{{var | NAT
| NAT
}}
{{var | NAT--desc
{{var | NAT--desc
| WireGuard kann einen Keepalive schicken.<br>Dadurch werden Verbindungen auf NAT-Routern offen gehalten. <p>Da die Kommunikation nur über einen UDP-Port läuft ist WireGuard gegenüber NAT-Problematiken entsprechend nicht anfällig. </p>
| WireGuard kann einen Keepalive schicken.<br> Dadurch werden Verbindungen auf NAT-Routern offen gehalten. <p>Da die Kommunikation nur über einen UDP-Port läuft ist WireGuard gegenüber NAT-Problematiken entsprechend nicht anfällig. </p>
| }}
| WireGuard can send a keepalive.<br> This keeps connections open on NAT routers. <p>Since the communication only runs via a UDP port, WireGuard is not susceptible to NAT related problems. </p> }}
{{var | Dashboard--desc
| Das Dashboard zeigt den Verbindungsstatus der einzelnen Peers einer Verbindung sowie Name, Schlüssel, den Wert des öffentlichen Schlüsselteils und die IP-Adresse eines Benutzers / einer Benutzerin und die dazu gehörigen Benutzergruppen.
| The dashboard displays the connection status of each peer in a connection, as well as the name, key, public key value, IP address of a user, and the associated user groups. }}
{{var | Peer deaktivieren
| {{b|Aktiv}}{{ButtonAn|{{#var:ein}} |class=small}}: Peers, die nicht Cloud verwaltet sind, können deaktiviert {{ButtonAus|{{#var:aus}}|class=small }} werden
| {{b|Active}}{{ButtonAn|on |class=small}}: Peers that are not managed by the cloud can be deactivated {{ButtonAus|Off|class=small}}. }}
{{var | Dashboard--Bild
| UTM_v14.0.1_WireGuard_Dashboard.png
| UTM_v14.0.1_WireGuard_Dashboard-en.png }}
{{var | Dashboard--cap
| WireGuard Dashboard
| WireGuard Dashboard }}
{{var | Neustarten
| Neustarten
| Restart }}
{{var | Dashboard--Einstellungen
| Dashboard Einstellungen
| Dashboard settings }}
{{var | 1=Dashboard--Einstellungen--desc
| 2=Für eine bessere Übersicht können ggf. einzelne Abschnitte in der Übersicht ausgeblendet werden:
<li class="list--element__bullet">Peers</li>
<li class="list--element__bullet">Benutzer</li>
<li class="list--element__bullet">Benutzergruppen</li>
<li class="list--element__bullet">Schlüsselwerte</li>
<li class="list--element__bullet">Stil {{Hinweis-box||gr|14.0.1|status=neu}}</li>
<li class="list--element__bullet">Einträge pro Seite {{Hinweis-box||gr|14.0.1|status=neu}}</li>
<li class="list--element__bullet">Max. Höhe {{Hinweis-box||gr|14.0.1|status=neu}}</li>
| 3=For a better overview, individual sections can be hidden in the overview if necessary:
<li class="list--element__bullet">Peers</li>
<li class="list--element__bullet">User</li>
<li class="list--element__bullet">User group</li>
<li class="list--element__bullet">Key values</li>
<li class="list--element__bullet">Style {{Hinweis-box||gr|14.0.1|status=neu}}</li>
<li class="list--element__bullet">Entries per page {{Hinweis-box||gr|14.0.1|status=neu}}</li>
<li class="list--element__bullet">Max height {{Hinweis-box||gr|14.0.1|status=neu}}</li> }}
{{var | Dashboard--Einstellungen--Bild
| UTM v14.0.1 WireGuard Dashboard Einstellungen.png
| UTM v14.0.1 WireGuard Dashboard Einstellungen-en.png }}
{{var | Dashboard--Einstellungen--cap
| Dashboard Einstellungen
| Dashboard settings }}
{{var | Widget--desc
| Im Admininterface existiert ein Widget für die Übersicht der WireGuard-Verbindungen. Weitere Informationen sind im [[UTM/Widgets | Wiki-Artikel zu den UTM Widgets]] zu finden.
| There is a widget in the admin interface for the overview of WireGuard connections. Further information can be found in the [{{#var:host}}UTM/Widgets Wiki article for UTM Widgets]. }}
{{var | WireGuard-S2S-Link
| [[UTM/VPN/WireGuard-S2S | WireGuard Site-to-Site]]
| [{{#var:host}}UTM/VPN/WireGuard-S2S WireGuard Site-to-Site] }}
{{var | WireGuard-Roadwarrior-Link
| [[UTM/VPN/WireGuard-S2E | WireGuard Roadwarrior]]
| [{{#var:host}}UTM/VPN/WireGuard-S2E WireGuard Roadwarrior] }}
{{var | WireGuard-Peers-Link
| [[UTM/VPN/WireGuard-Peer | Einzelne Peers hinzufügen]]
| [{{#var:host}}UTM/VPN/WireGuard-Peer Add individual peers] }}
{{var | Implizite Regel
| Status der impliziten Regel
| Status of the implicit rule }}
{{var | Implizite Regel--Bild
| UTM_v12.6_VPN_WireGuard_Dashboard_Implizite-Regel.png
| UTM_v12.6_VPN_WireGuard_Dashboard_Implizite-Regel-en.png }}
{{var | Implizite Regel--desc
| Eine Statuslampe zeigt den Zustand der impliziten Regel an:
| A status light indicates the status of the implicit rule: }}
{{var | 1=Implizite Regel Zustand
| 2=<li class="list--element__bullet">{{spc|fa|o|-|class=fas fa-times-circle}} die Dienste und die Verbindungen sind deaktiviert. Über die Schaltfläche {{Button||pl}} kann die implizite Regel aktiviert werden.</li>
<li class="list--element__bullet">{{spc|fa|o|-|class=fas fa-check-circle|icon-c=green}} die Dienste und die Verbindungen sind aktiviert und die Einstellungen sind synchronisiert.Über die Schaltfläche {{Button||class=fas fa-stop}} kann die implizite Regel deaktiviert werden. </li>
| 3=<li class="list--element__bullet">{{spc|fa|o|-|class=fas fa-times-circle}} the services are deactivated. The implicit rule can be activated via the {{Button||pl}} button.</li>
<li class="list--element__bullet">{{spc|fa|o|-|class=fas fa-check-circle|icon-c=green}} the services and connections are activated and the settings are synchronised, and the implicit rule can be deactivated via the {{Button||class=fas fa-stop}} button. </li> }}
{{var |  
{{var |  
|  
|  
|  }}
|  }}
----
{{var |  
{{var |  
|  
|  
|  }}
|  }}
{{var |
|
|  }}
{{var |
|
|  }}
----
</div>
</div>

Aktuelle Version vom 2. September 2025, 11:05 Uhr