Wechseln zu:Navigation, Suche
Wiki
KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
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 | neu--Funktion
| Neue Funktion ab v12.2.2
| Neue Funktion ab v12.2.2
| }}
| New feature as of v12.2.2 }}
{{var2 | Allgemeines
{{var | Allgemeines
| Allgemeines
| Allgemeines
| }}
| General }}
{{var2 | 1=Allgemeines--desc
{{var | 1=Allgemeines--desc
| 2=Wireguard® ist ein modernes und einfaches VPN Protokoll, das zusätzlich durch seine Geschwindigkeit überzeugt.
| 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.
Wireguard verzichtet auf einige aufwendige Verfahren zum Schlüsselaustausch und ist unter Anderem dadurch einfacher zu handhaben als IPSec.
Zeile 31: Zeile 31:


Das Handling zwischen den beiden Peers ist sehr an OpenSSH angelehnt.
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.
"Peers" müssen zunä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.
Dabei zählt der Austausch der PublicKeys explizit nicht zur Spezifikation von WireGuard und muss manuell erfolgen.


Zeile 37: Zeile 37:
Eine mehrfache Verwendung ist nicht praktikabel.
Eine mehrfache Verwendung ist nicht praktikabel.


Zum bessern Schutz kann noch zusätzlich ein Preshared Key verwendet werden.  
Zum besseren Schutz kann noch zusätzlich ein Preshared Key verwendet werden.  


Zum Start der Kommunikation muss ein Handshake zwischen den Peers erfolgen.
Zum Start der Kommunikation muss ein Handshake zwischen den Peers erfolgen.
Zeile 43: Zeile 43:
Peer A sendet ein Paket und Peer B antwortet auf dieses Paket.
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.
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.
Der Handshake wird alle 2 Minuten bei einer laufenden Verbindung ausgeführt.


wg show zeigt den Status des Handshake (latest handshake) und Zeitpunkt mit an:
wg show zeigt den Status des Handshake (latest handshake) und Zeitpunkt mit an:
Zeile 90: Zeile 90:
# Ü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.
# Ü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
# 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.
# 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.
# Wird das Paket zugelassen wird das Paket an das wg-Interface übergeben. Danach übernimmt das Routing im OS.
 


Peer Roaming
Peer Roaming
Zeile 101: Zeile 100:
NAT
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.  
WireGuard kann einen Keepalive schicken. Dadurch werden Verbindungen auf NAT-Routern offengehalten. Da die Kommunikation nur über einen UDP-Port läuft ist WireGuard gegenüber NAT-Problematiken entsprechend nicht anfällig.  
Sonstiges
Sonstiges


Zeile 118: Zeile 117:
https://github.com/veorq/SipHash/
https://github.com/veorq/SipHash/
https://eprint.iacr.org/2010/264
https://eprint.iacr.org/2010/264
| 3=Wireguard® is a modern and simple VPN protocol that also impresses with its speed.
Wireguard does without some complex procedures for key exchange and is, among other things, easier to handle than IPSec.
Due to the integration into the Linux kernel, a high-performance and resource-saving processing is possible compared to OpenVPN.
However, OpenVPN has advantages in terms of "pushing" settings (routes, DNS, etc.) in the administration of S2E/Roadwarrior connections.
Wireguard can be used for S2S and S2E connections.
For S2E connections, appropriate clients are available for various operating systems through the Wireguard project:
https://www.wireguard.com/install/
Connection
Communication takes place via a freely selectable UDP port and uses IPv4 and IPv6 to transport the data packets.
The handling between the two peers is very similar to OpenSSH.
"Peers" must first exchange their PublicKeys and can then "simply" exchange data.
The exchange of PublicKeys is explicitly not part of the WireGuard specification and must be done manually.
A PublicKey must identify a peer unambiguously.
Multiple use is not practical.
For better protection, a preshared key can also be used.
A handshake between the peers is required to start communication.
This is much shorter than with IPSec, for example.
Peer A sends a packet and Peer B responds to this packet.
This completes the handshake and the peers have a synchronous key for sending and receiving.
The handshake is executed every 2 minutes with a running connection.
wg show displays the status of the handshake (latest handshake) and time:
  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


| 3= }}
If the handshake is not successful Wireguard will not send an error to the sender.
{{var | Artikel
"Silence is a Virtue"
| Artikel zur Einrichtung
 
}}
The encryption is fixed.
The settings do not allow the cipher to be changed.
This also has a disadvantage: If a method used is no longer considered secure, all peers must be updated "simultaneously".
 
The interface between the WireGuard in the kernel and the OS is the wg interface (e.g.: wg0).
The interface presents itself as a "normal" interface and can be configured via tools like iproute2.
The interface is also listed in the network settings and offers a few relevant settings.
Routing
 
Packets that are to be routed via a Wireguard connection must be routed via the associated wg interface. Within the WireGuard instance, a peer is then identified via the definition of the AllowedIPs and the data is encrypted and send on its way.
 
Conversely, incoming packets are decrypted with the appropriate key and are then checked for the AllowedIPs. IP addresses that are not acceptable are discarded.
 
Thus, the use of 0.0.0.0/0 or ::/0 as AllowedIPs is permitted.
Here, only one peer can be defined per interface / instance.
 
Details:
 
# Plaintext packet arrives from the system through a route at the wgX interfaec
# Destination IP is checked and assigned to a peer in case of a match with an AllowedIP<br>If an assignment is not possible the packet is rejected using ICMP "no route to host"
# The packet is encrypted with the key stored for the peer.
# A header is placed in front of the actual packet.
# Then the header + packet are sent via UDP to the last set IP address and the defined port of the peer. If the IP cannot be determined, the packet is discarded and a corresponding ICMP message is sent.
# Packet arrives at the peer
# WireGuard determines the associated peer via the header.<br>If the message counter is correct, an attempt is made to decrypt the data packet.<br>If this is not possible, the packet is discarded.
# If the data is correct, the source IP is checked as the new endpoint of the peer and set if necessary.
# After the packet has been decrypted, it is checked whether the packet is an IP packet. Otherwise it is discarded.<br>If the IP packet is valid, it is then checked whether the IP packet matches the AllowsIPs.<br>If it does not, the packet is discarded.
# If the packet is allowed, the packet is passed to the wg interface. After that the routing in the OS takes over.
 
 
 
Peer Roaming
* The declaration of the IP/hostname of a peer is not mandatory
* WireGuard automatically uses the outer IP of a correctly authenticated data packet
* Initially, of course, one side must be known
 
NAT
 
WireGuard can send a keepalive. This keeps connections open on NAT routers. Since the communication only runs via a UDP port, WireGuard is not susceptible to NAT problems.
Other
 
Websites - more information
 
 
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 }}
{{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 Roadwarriorn 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.
Zeile 159: Zeile 258:
Ein PublicKey muss einen Peer eindeutig identifizieren.<br>
Ein PublicKey muss einen Peer eindeutig identifizieren.<br>
Eine mehrfache Verwendung ist nicht praktikabel.<br>
Eine mehrfache Verwendung ist nicht praktikabel.<br>
Zum bessern Schutz kann noch zusätzlich ein Preshared Key verwendet werden.  
Zum besseren Schutz kann zusätzlich noch ein Preshared Key verwendet werden.  
Der befehl {{code|wg show}} auf einer root-Konsole zeigt die aktiven Verbidnungen
| Communication takes place via a freely selectable UDP port and uses IPv4 and IPv6 to transport the data packets.
| }}
<p>The handling between the two peers is very similar to OpenSSH.<br>
{{var | Verbindung--Bild
"Peers" must first exchange their PublicKeys and can then "simply" exchange data further on.<br>
| wg-show.png
The exchange of PublicKeys is explicitly not part of the WireGuard specification and must be performed manually.</p>
| wg-show.png }}
A PublicKey must identify a peer unmistakably.<br>
{{var | Verbindung--cap
Multiple uses are not practical.<br>
|
For better protection, a preshared key can also be used. }}
}}
{{var | NAT
{{var | NAT
| NAT
| 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 |  
{{var | Dashboard
|  
| Dashboard
| }}
| Dashboard }}
{{var |  
{{var | Dashboard--desc
|  
| Das Dashboard zeigt den Verbindungsstatus der einzelnen Peers einer Verbindung sowie Name, Schlüssel und IP eines Benutzers / einer Benutzerin und die dazu gehörigen Benutzergruppen.
| }}
| The dashboard shows the connection status of each peer of a connection as well as the name, key and IP of a user and the associated user groups. }}
{{var |  
{{var | Dashboard--Bild
|  
| UTM 12.4 VPN WireGuard Verbindung.png
| }}
| UTM 12.4 VPN WireGuard Verbindung-en.png }}
{{var | Dashboard--cap
| WireGuard Dashboard
| WireGuard Dashboard }}
{{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 list--element__hint">Peers</li>
<li class="list--element__bullet list--element__hint">Benutzer</li>
<li class="list--element__bullet">Benutzergruppen</li>
| 3=For a better overview, individual sections can be hidden in the overview if necessary:
<li class="list--element__bullet list--element__hint">Peers</li>
<li class="list--element__bullet list--element__hint">User</li>
<li class="list--element__bullet">User group</li> }}
{{var | Dashboard--Einstellungen--Bild
| UTM 12.4 VPN WireGuard Dashboard Einstellungen.png
| UTM 12.4 VPN WireGuard Dashboard Einstellungen-en.png }}
{{var | Dashboard--Einstellungen--cap
| Dashboard Einstellungen
| Dashboard settings }}
{{var | Widget
| Widget
| Widget }}
{{var | Widget--desc
| Im Admininterface existiert ein Widget für die Übersicht der WireGuard-Verbindungen. Weitere Informationen sind im [[UTM/Widgets | Wiki-Artikel UTM Widget]] 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 UTM Widget]. }}
{{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 |  
{{var |  
|  
|  
|  }}
|  }}


----
</div>
</div>

Version vom 27. Juni 2023, 09:08 Uhr