Installer et configurer WireGuard sur Raspberry

WireGuard est un logiciel open-source qui permet de mettre en place un VPN. Il vise à être plus rapide et plus léger que d’autre protocole VPN comme OpenVPN ou IPsec. WireGuard est toujours en cours de développement, et même dans son avancement actuel il est plus rapide que OpenVPN. Plus d’info sur le site de Wireguard: https://www.wireguard.com/performance/

WireGuard créé une interface réseau (comme wg0) qui a le même comportement que eth0.

Dans ce tuto nous allons voir comment installer le serveur WireGuard et configurer un client sous Android. La configuration de WireGuard est très simple et rapide.

La connexion au VPN s’effectue via un échange de clés publiques entre le serveur et le client.

Note: Ce tutot a été réalisé sur un rapsberry 3, avec la distribution Buster de Raspbian, et la version 4.19.118-v7+ du Kernel

Installer Wireguard sous Raspberry

Toutes les commandes suivantes sont à effectuer en sudo

Mettre à jour votre raspberry

Actuellement Wireguard n’est pas inclus dans la distribution de Raspbian, il faut donc ajouter le dépôt backports

Installer les clés du précédent dépôt

Empêcher Debian d’utiliser ce dépôt pour vos paquets standards

Mettre à jour la liste des paquets

Installer les headers linux. ils sont nécessaires pour faire marcher wireguard. Pas d’inquiétude si l’execution se termine avec ce genre d’erreur (dkms: WARNING: Linux headers are missing, which may explain the above failures.
please install the linux-headers-4.19.118-v8+ package to fix this.)

Installer Wireguard, Wireguard-dmks s’installera en même temps et va builder une version adaptée avec le kernel du rapsberry

 

Configurer le serveur WireGuard

Dans cette partie nous allons créer les clés serveurs et pour un client, et créer notre fichier de configuration.
Ce schéma résume la configuration que nous allons déployer.

schema de configuration de WireGuard

 

 

Tout d’abord placer vous dans le dossier de Wireguard

Générer les clés serveurs (privée et publique)

Générer les clés clients (privée et publique)

Créer le fichier de configuration

y insérer le contenu suivant:

La première partie Interface permet configurer le serveur:

  • Adress : l’adresse IP du serveur VPN du réseau virtuel. Il ne s’agit pas de l’adresse IP de votre réseau privée, mais bien d’une nouvelle IP à définir vous même.
  • ListenPort : le port du VPN, qui va écouter les connexions entrantes
  • PostUp/PostDown : ligne de commandée lancé au démarrage et arrêt de wireguard. eth0 correspond à l’interface connecté à votre LAN
  • SaveConfig: Indique que la configuration doit se mettre automatiquement à jour quand un nouveau client est ajouté en ligne de commande pendant que le service fonctionne.
  • PrivateKey : clé privée du serveur

La deuxième partie Peer permet configurer un client. Si vous souhaitez connecter plusieurs client il faudra dupliquer cette partie en changeant les paramètres:

  • AllowedIPs : correspond à l’adresse IP du client autorisé à se connecter au VPN
    • si vous mettez un masque /32 comme dans l’exemple seul cet unique client peut se connecter au VPN
    • si vous mettez la valeur suivante 10.10.10.0/24 alors vous autorisez plusieurs clients à se connecter au VPN. Tous ceux ayant une adresse IP comprise entre 10.10.10.2 et 10.10.10.254. Vous pouvez donc jouer sur la valeur du masque pour autoriser un certain nombre de client.
    • Pour des questions de sécurité un client == une paire de clé, donc on va préférer utiliser un masque /32
  • PublicKey : clé publique du client

 

Changer les droits au dossier de configuration pour le mettre en lecture/écrite qu’à root

Démarrer Wireguard, avec la commande suivante

Vérifier le bon fonctionnement de Wireguard

Activer le service Wireguard pour qu’il démarre à chaque reboot du rapsberry

 

Note : Avant de mettre à jour votre fichier wg0.conf, n’oublier pas de stopper le service sinon vos modifications seront perdues.

 

Activer la redirection de port sur votre box

Sur votre routeur / box vous devez mettre en place la redirection de port pour rediriger le port entrant 51900 en UDP vers le port 51900 sur votre raspberry. Voici un exemple sur la freebox mini4k

redirection port wireguard sur freebox

Activer le port Forwarding sur le raspberry

Si une fois connecté au VPN vous souhaitez accéder à votre réseau privé, il faut donc activer le port forwarding.

Editer le fichier

et décommenter la ligne

Redémmarer le serveur pour que la modification soit prise en compte

 

Configurer le client Wireguard sous Android

Sur votre smartphone télécharger et installer l’application android Wireguard.

Il y a deux facon de configurer le client, soit via la génération d’un qrcode sur le serveur, soit en remplissant tous les champs sous l’application Android. Cette deuxième méthode est un peu plus contraignante car il faut recopier les clés privées et publiques.

Via Qrcode

Sur votre raspberry, installer qrcode

Créer un fichier, client.conf, qui contient la conf de votre client

Dans la Partie Interface nous retrouvons les informations suivantes:

  • PrivateKey: clé privée du client
  • Adresses: Adresse IP du client, qui est définie dans la partie Peer sur le serveur
  • DNS Serveur: DNS de Google

Dans la Partie Peer nous retrouvons les informations suivantes:

  • PublicKey: Clé publique du serveur
  • Endpoint:
    • Renseigner un nom de domaine suivie du port qui permet de joindre votre serveur.
    • Sinon si vous avec une adresse IP publique fixe, vous pouvez la renseigner suivie du numéro de port. Voir cet article pour Obtenir son adresse IP publique en ligne de commande.
    • Si vous avez une adresse IP dynamique, il vous faut utiliser un service comme no-ip, DuckDNS, etc.
  • Allowed IPs: ce champs permet de définir quel trafic doit passer par le VPN. si vous renseignez 0.0.0.0/0, ::/0 tout le trafic passera par le VPN.
    Si vous souhaitez que seul le trafic vers votre LAN privée passe par le VPN il faudra mettre: 10.10.10.0/24, 192.168.0.0/24 (où cette adresse correspond à  votre LAN). Cette configuration ne fonctionne pas chez moi, car le reste du trafic (accès à google par exemple ne fonctionne pas).
    En d’autre terme, quand le client tente d’envoyer à un paquet à une IP, il regarde les AllowedsIPs et si l’IP apparaît dans la liste alors le paquet sera envoyé à travers le VPN. Même principe quand il reçoit un paquet.

 

Générer le qrcode que vous scannerez

qrcode wireguard

Manuellement

Sur l’application faite ajouter un VPN en cliquant sur l’icone , puis cliquer sur « Create from Scratch« .
Puis configurer votre connexion comme expliqué ci dessus et détaillé sur le screenshot.

Creation du client WireGuard sous Android

Tester votre connexion

Depuis votre smartphone, il faut suffit d’afficher votre adresse IP publique via le site Mon ip.
Cette adresse IP doit être la même que celle obtenue sur votre raspbery en suivant ce guide: Obtenir son adresse IP publique en ligne de commande

 


Commenter

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.