Wireguard est un protocole de communication permettant de créer des réseaux VPN. Il se veut plus rapide et plus moderne que son concurrent OpenVPN. OpenVPN garde une longueur d’avance non négligeable puisque la quasi-totalité des VPNs commerciaux l’utilise.
Même si Wireguard a encore du chemin à parcourir, il commence à prendre une certaine envergure : en effet, Wireguard est intégré dans le noyau Linux depuis la version 5.6, ce qui facilite sa démocratisation.
L’installation d’un serveur Wireguard sous Linux est très facile, la seule difficulté reste dans la connexion en tant que client. Sous Linux certains gestionnaires de connexions ne gérent pas encore très bien Wireguard.
C’est le cas de NetworkManager, l’un des gestionnaires de connexion les plus utilisés (utilisé par Debian, Ubuntu, Fedora entre autres). Bien que disposant d’une compatibilité native avec Wireguard, NetworkManager ne permet pas encore de configurer un client Wireguard depuis son interface graphique.
Il est possible de gérer une connexion Wireguard depuis NetworkManager en ligne de commande, mais la configuration est assez complexe. Ce tutoriel utilise une autre méthode, plus simple : la connexion Wireguard sera gérée par l’utilitaire officiel wg-quick
, et NetworkManager sera configuré de tel sorte qu’il n’y ait pas de conflit entre les deux.
La procédure présentée a été testée sous Archlinux, mais elle devrait fonctionner sur toutes les distributions utilisant NetworkManager.
Installation d’un serveur Wireguard
Il existe plusieurs manières d’installer Wireguard sur un serveur, j’utilise personnellement ce script : https://github.com/angristan/wireguard-install.
curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh
chmod +x wireguard-install.sh
./wireguard-install.sh
Il suffira ensuite de copier le certificat créé sur le client avec scp
par exemple.
Paquets nécessaires
Passons maintenant à la configuration du client. Sous Archlinux, les paquets nécessaires sont :
- wireguard-tools
- systemd-resolvconf
Le nom des paquets peut être différent sur d’autres distributions. Il peut aussi être nécessaire d’installer le module wireguard-dkms
si la version du noyau Linux est inférieure à 5.6.
Configurer NetworkManager
Nous allons d’abord configurer NetworkManager. Il suffit de créer deux fichiers de configuration dans le dossier /etc/NetworkManager/conf.d
avec le contenu suivant :
# /etc/NetworkManager/conf.d/no-systemd-resolved.conf
[main]
systemd-resolved=false
# /etc/NetworkManager/conf.d/unmanaged.conf
[keyfile]
unmanaged-devices=interface-name:wg*
Le premier fichier de configuration désactive l’utilisation de systemd-resolved
comme résolveur DNS. Wireguard pourra utiliser et modifier la configuration de systemd-resolved
sans affecter le bon fonctionnement de NetworkManager.
Le deuxième fichier de configuration désactive la gestion des interfaces créées par Wireguard, plus précisement celles dont le nom commence par les lettres wg.
Lancer systemd-resolved et relancer NetworkManager
sudo systemctl enable --now systemd-resolved
sudo systemctl restart NetworkManager
Se connecter au serveur Wireguard
Une fois les services systemd-resolved et NetworkManager actifs, il sera possible d’activer Wireguard. Le certificat précédemment créé devra être placé dans le dossier /etc/wireguard
. On active ensuite la connexion à Wireguard grâce à l’utilitaire wg-quick
.
sudo cp wg1.conf /etc/wireguard/wg1.conf
sudo wg-quick up wg1
Et voilà, vous devriez être connecté en tant que client à votre serveur Wireguard !
Enfin, pour se déconnecter de Wireguard et revenir à la configuration initiale:
sudo wg-quick down wg1
Vous pourriez aussi avoir besoin de désactiver le service systemd-resolved
.
sudo systemctl disable --now systemd-resolved
Une remarque, un commentaire ? Réagissez sur Mastodon !
>> Home