Autefage Wireguard Jres2022
Autefage Wireguard Jres2022
Autefage Wireguard Jres2022
net/publication/360439925
CITATIONS READS
0 178
2 authors, including:
Damien Magoni
University of Bordeaux
143 PUBLICATIONS 1,454 CITATIONS
SEE PROFILE
All content following this page was uploaded by Damien Magoni on 07 May 2022.
Damien Magoni
LaBRI - Université de Bordeaux
351 Cours de la Libération
33405 Talence Cedex, France
Résumé
Les VPNs représentent une technologie de plus en plus populaire notamment avec la généralisation
du travail à distance. En effet, l’accès aux ressources d'un réseau privé depuis l’extérieur est
devenu un élément critique de sécurité mais aussi de continuité opérationnelle et pédagogique.
Bien qu'un certain nombre de solutions Open Source de serveurs VPN soient disponibles depuis de
nombreuses années, WireGuard présente une philosophie radicalement différente de la
concurrence. Il dispose d'une implémentation légère ayant la particularité d'être intégrée comme
module au noyau Linux depuis 2020. WireGuard ne se limite néanmoins pas au monde Linux ; il est
en effet disponible sur un grand nombre de plateformes (e.g. BSD, Windows, Mac OSX, Android,
iOS). Son concepteur ayant souhaité son utilisation la plus simple possible, il s'est grandement
inspiré du modèle des clés SSH rendant ainsi la mise en place de WireGuard des plus triviales.
Cet article présente les concepts principaux régissant l'architecture de WireGuard (e.g. réseau,
cryptographie) ainsi qu’une comparaison de performance avec des projets plus classiques tels que
OpenVPN. Nous présentons enfin des cas d'usage réels pour lesquels une telle solution nous paraît
pertinente.
Mots-clefs
Cryptographie, OpenVPN, Réseaux Privés Virtuels, VPN, WireGuard
1 Introduction
Un réseau privé virtuel (i.e. VPN pour Virtual Private Network) permet d’étendre un réseau privé en
traversant un réseau public et permet donc à ses utilisateurs d’envoyer et de recevoir des données à
travers ce dernier comme si leurs équipements étaient directement connectés au réseau privé. Leur
émergence date du milieu des années 90.
Les VPNs représentent une technologie de plus en plus populaire notamment avec la généralisation
du travail à distance [01]. En effet, l’accès aux ressources d'un réseau privé depuis l’extérieur est
devenu un élément critique de sécurité mais aussi de continuité opérationnelle et pédagogique.
Lorsqu’un VPN est créé en s’appuyant sur un réseau public tel qu’Internet, il met alors en œuvre de
l’authentification et du chiffrement afin de garantir la sécurité des communications. Les deux
solutions les plus fréquemment utilisées dans ce cas de figure sont IPsec et TLS.
3 Expérimentations
WireGuard est souvent mis en avant pour la rapidité de ses transferts mais également pour sa faible
latence. Les résultats présentés dans les figures 2 et 3 sont extraites du site officiel de WireGuard
[02].
Ces résultats expérimentaux obtenus en 2017 mettent en avant des performances accrues pour
WireGuard ainsi que pour IPsec à contrario d’OpenVPN qui est ici configuré avec UDP/DTLS en
version 1.2. De notre point de vue, la raison principale de cet écart est la probable absence
d’accélération matérielle pour les opération cryptographique symétrique pour OpenVPN dans cette
expérimentation. Les processeurs modernes sont en effet équipés d’unités de calculs dédiées
permettant d’effectuer les opérations de chiffrement et déchiffrement pour certains protocoles de
cryptographie symétrique. Dans le cas d’IPSec et d’OpenVPN, le protocole AES [16] est le plus
933 [~4]
895 [~4]
IPerf3
880 [~4]
705 [~6] Direct
Wireguard
935 [~3] OpenVPN TCP
OpenVPN UDP
896 [~2]
IPerf
880 [~8]
705 [~9]
0 100 200 300 400 500 600 700 800 900 1000
Speed (mbit/sec)
0.833 [~0.22]
1.221 [~0.30]
Les résultats étiquetés direct représentent les performances du lien en connexion directe sans VPN.
2261 [~23]
486 [~12]
IPerf3
149 [~28]
128 [~19] Direct
Wireguard
2189 [~22] OpenVPN TCP
469 [~10] OpenVPN UDP
IPerf
186 [~14]
132 [~20]
1.192 [~0.15]
1.891 [~0.33]
4 Utilisation de WireGuard
WireGuard fonctionne sur le principe de client-serveur. Il permet de créer des interfaces virtuelles
dans le noyau de manière similaire à des interfaces TUN de niveau IP. Chacune de ses interfaces
virtuelles est dotée d’une paire de clés cryptographiques dédiées et représente un tunnel sur lequel
peuvent être autorisés à communiquer plusieurs nœuds distants appelés peers. La clé publique de
chacun de ses peers doit être déclarée explicitement dans la configuration de l’interface virtuelle. La
configuration de celle-ci peut être effectuée directement en ligne de commande ou bien dans un
fichier de configuration localisé le plus couramment dans /etc/wireguard.
Prenons par exemple la configuration suivante d’un serveur et de deux clients :
# Peer Server [real IP address: 147.210.215.26] # Peer Client 1
[Interface]
[Peer] [Interface]
La commande wg-quick permet quant à elle de démarrer / arrêter une interface virtuelle :
> ip -br addr
lo UNKNOWN 127.0.0.1/8
eth0 UP 192.168.0.0/24
> ls /etc/wireguard
wg-jres.conf
> wg-quick up wg-jres
[#] ip link add wg-jres type wireguard
[#] wg setconf wg-jres /dev/fd/63
[#] ip -4 address add 192.168.42.0/24 dev wg-jres
[#] ip link set mtu 1420 up dev wg-jres
> ip -br addr
lo UNKNOWN 127.0.0.1/8
eth0 UP 192.168.0.0/24
wg-jres UP 192.168.42.0/24
> wg-quick down wg-jres
[#] ip link delete dev wg-jres
> ip -br addr
lo UNKNOWN 127.0.0.1/8
eth0 UP 192.168.0.0/24
6 Conclusion
Dans cette article, nous avons présenté les fondements ainsi que le fonctionnement général de la
solution libre VPN WireGuard. Nos expérimentations ont permis de mettre en évidence la grande
importance de l’accélération matérielle des opérations de cryptographie symétrique vis à vis des
performances en termes de débit. Nous avons également montré que l’implémentation de
WireGuard ainsi que ces choix techniques permettent d’obtenir des performances de débit
significativement supérieures à celles d’OpenVPN dans le cas d’une exécution sur machines
virtuelles. Nous pouvons ainsi préconiser l’utilisation de WireGuard dans ce contexte afin de
maximiser les vitesses de transfert.
Il serait intéressant de réaliser ces expérimentations sur un réseau full 10 Gbit afin de vérifier si
l’accélération matérielle des opérations AES d’OpenVPN suffisent pour égaler celle de WireGuard
avec Chacha20 et son exécution privilégiée en mode noyau.
1 https://www.emi.u-bordeaux.fr