Wireguard – Un VPN très performant

Wireguard est un nouveau type de VPN très performant et avec l’avantage de se connecter très rapidement. Il peut être configuré avec un « kill switch », Cela permet d’interdire toutes les connexions qui ne passe pas par le VPN. Il a aussi l’avantage d’être extrêmement simple à configurer. Certains tests montrent qu’il utilise moins de bande passante.

Sécurité

Wireguard utilise les dernières technologies en matière de cryptage comme like the Noise protocol frameworkCurve25519ChaCha20Poly1305BLAKE2SipHash24HKDF.
Et le meilleure dans tout cela est que vous n’avez pas à vous en préoccuper, toute cette partie est gérée automatiquement.

Multiplatforme

Wireguard est basé sur unix mais peut être utilisé sur toutes les platformes : Linux, Windows, IOS, Android….

Exemple d’utilisation

Pour ma part je l’utilise comme VPN pour sortir sur internet avec un de mes serveurs distants.

Configuration du serveur Debian

Nous allons d’abord installer le serveur. Sur les machine linux il faut installer les linux-headers correspondant à votre kernel.

sudo apt-get install linux-headers

Un redémarrage du système après cette installation peut être nécessaire.

echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable.list
printf 'Package: *\nPin: release a=unstable\nPin-Priority: 90\n' > /etc/apt/preferences.d/limit-unstable
apt update
apt install wireguard

Nous allons ensuite générer une clé privé et une clé publique pour notre serveur. La commande suivante génère deux fichiers de clefs : « wg-private.key » et « wg-public.key ».

wg genkey | tee /etc/wireguard/wg-private.key | wg pubkey > /etc/wireguard/wg-public.key

Vous pouvez récupérer ces clefs en ouvrant ces fichier avec un éditeur de texte.
Nous allons ensuite créer un fichier « wg0.conf » qui contiendra toute la configuration de notre serveur.

[Interface] #Interface du serveur VPN
 Address = 192.168.100.1/32 #adresse local du serveur
 ListenPort = 51820 #Port d'écoute du VPN
 SaveConfig = false #Cela évite un bug
 PrivateKey = Clé privée du serveur
 DNS = 8.8.8.8 #DNS comme son nom l'indique pour ma part celui de google pour internet

PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -$ 
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING$ #Règles de redirection firewall

[Peer] #à définir pour chaque client du serveur
 PublicKey = Clé public du client
 AllowedIPs = 192.168.100.2/32 #IP autorisée 0.0.0.0/0 pour tout autoriser.

J’ai commenté au maximum pour que vous puissiez comprendre. Nous pouvons maintenant lancer le serveur avec la commande suivante. Qui utilise l’outil wg-quick.

wg-quick up wg0

Vous pouvez connaitre l’état du serveur avec la commande « wg » qui vous retournera quelque chose comme ça.

interface: wg0
   public key: #########################################
   private key: (hidden)
   listening port: 51820

Configuration du client Windows 10

Sous Windows il est possible d’utiliser plusieurs clients différents. Pour ma part j’utilise celui fournit sur le site web de Wireguard.
Avec celui-ci vous pouvez importer directement un fichier de configuration. Nous allons le créer en utilisant « add empty tunnel », une clé public est générée automatiquement en haut de la fenêtre. Il vous faudra aussi une clé privée que vous pouvez générer sur le serveur avec la même commande que pour le serveur (en changeant le nom du fichier).
Pour le client qui peut d’ailleurs être considéré lui aussi comme un serveur la configuration est semblable.

[Interface] #interface du client
 PrivateKey = Clé privée générée pour le client sur le serveur
 Address = 192.168.100.2/32 #adresse autorisée sur le serveur
 DNS = 8.8.8.8 #DNS

 [Peer] #Configuration du client qui est en fait notre serveur.
 PublicKey = clé public du serveur
 AllowedIPs = 0.0.0.0/0 #tout le traffic passe dans le VPN
 Endpoint = 92.222.155.45:51820 #adresse public du serveur et port d'écoute.

Et c’est tout ! Vous n’avez plus qu’a vous connecter !
La configuration est donc réduite au minimum. Une fois connecté, tapez « wg » sur le serveur, vous devez voir apparaître votre client en dessous de l’état du serveur.

Ce VPN peut bien sure être utilisé différemment par exemple pour créer un réseau privé entre deux serveurs afin qu’il communiquent ensemble de manière sécurisé.