Raspberry-Pi Installer et configurer un serveur VPN WireGuard

Raspberry-Pi Installer et configurer un serveur VPN WireGuard

WireGuard est une solution informatique permettant d’établir un tunnel VPN entre un serveur et un ou des clients.   

Conçu par l’américain Jason Donenfeld en 2017, et diffusé par sa société Edge Security, le déploiement d’un serveur WireGuard sur une carte Raspberry-Pi 4 est relativement simple.
L’utilisation d’un VPN, permet à un ordinateur client, PC ou Smartphone, de se connecter à un site distant en utilisant la version cliente de WireGuard.
Cette transaction, est totalement chiffré, entre le client et le serveur WireGuard, ce qui offre une totale confidentialité de ces échanges qui s’effectuent au travers du web, ou au sein d’un réseau local.
WireGuard utilise les algorithmes de chiffrage « chacha20 » et « Poly1305 ».

 

Paramétrage de la redirection du port sur le routeur.
L’installation du serveur sur la Raspberry nécessite au préalable de paramétrer la redirection de port sur votre routeur internet.

Exemple pour une Freebox, avec l’utilisation du port par défaut de WireGuard, c’est à dire le port 51820, et le protocole UDP, ce dernier étant le seul protocole utilisé par WireGuard.

Cela signifie que lors de l’arrivée d’une requête entrante sur la box, faisant office de routeur, contenant l’IP publique et le port 51820, ce message sera routé vers l’IP Destination, qui est l’IP de votre Raspberry-Pi, hébergeant le serveur WireGuard. 

Installation du serveur WireGuard sur une carte Raspberry-Pi 4.

L’équipe du Projet PiVPN a conçu un script facilitant l’installation et le paramétrage d’un serveur VPN sur une carte Raspberry-Pi.
WireGuard nécessite d’utiliser des versions de linux récentes.
La suite de l’installation va consister, depuis la Raspberry-Pi à lancer la commande $ curl -L https://install.pivpn.io | bash.
Voici ce que produit l’exécution de la commande …

Le premier écran explique que ce script transforme la carte en serveur OpenVPN ou en serveur WireGuard.
Ok est la bonne réponse.


L’écran suivant indique que le fonctionnement du serveur VPN nécessite une adresse IP Fixe, et que la suite permet de choisir le mode d’attribution de cette adresse, appuyer sur Ok.


Dans la mesure ou la carte Raspberry-Pi est doté de plusieurs interfaces matériels, l’écran ci-dessous permet de préciser laquelle est utilisé pour le serveur VPN, ce en IPV4, choisir la bonne interface tout en sachant qu’une connexion filaire est préférable.


et en IPV6.


L’écran ci-dessous demande si l’IP fixe est délivré par le routeur DHCP, (une box de fournisseur d’accès par exemple), ou si l’on doit préciser l’adresse utilisé.


L’écran suivant indique la nécessité de choisir un utilisateur localement défini sur la carte Raspberry-Pi.


Choix à faire parmi la liste des utilisateurs définis.


Maintenant, il convient de préciser le type de VPN à utiliser, c’est clairement WireGuard, le sujet de ce post.


L’écran ci-dessous permet de modifier le numéro de port utilisé par WireGuard.
C’est le 51820 qui est le port par défaut, il est possible de le changer en toute connaissance de cause.


Une confirmation est demandé, Yes…


L’écran suivant permet de spécifier les serveurs DNS libre que les clients VPN utiliseront.
Quad9, Cloudflare sont des serveurs VPN qui pourront retenir votre attention.


L’étape suivante consiste à vérifier que l’IP publique proposé est bien l’IP publique de son routeur ou de sa box.

Le script va maintenant générer les clefs publique et privés nécessaires au fonctionnement du serveur WireGuard, il suffit de répondre Ok.


L’écran suivant explique que la connexion entrante qui résulte de la mise en place du serveur VPN, nécessite un bon niveau de sécurité, et que l’activation des mises à jour automatique est recommandé en répondant Ok, cependant il n’y aura pas de redémarrage automatique de la carte, ce qui est nécessaire pour activer les mises à jour.
C’est pourquoi il vaut mieux prévoir de rebooter régulièrement le serveur.


Active les mises à jour de WireGuard sur le serveur, il est souhaitable de répondre Yes…


La fin du processus d’installation passe par le redémarrage de la carte Raspberry-Pi.


Ok pour redémarrer la carte Raspberry-Pi.

Après le redémarrage, le serveur VPN WireGuard est opérationnel, il suffit maintenant d’ajouter les clients qui seront autoriser à se connecter sur ce serveur VPN.

La commande $ pivpn -a permet cet ajout sur le serveur, une fois le nom du client saisi, le script génère les clefs, le fichier de configuration client, met à jour le serveur et le redémarre.
Ce qui à pour effet de mettre à jour le fichier /etc/wireguard/wg0.conf, wg0 étant le nom de l’interface ethernet attribué à WireGuard lors de son installation.
Et de renseigner le fichier /home/pi/configs/nom_du_client.conf, nom_du_client étant celui que vous aurez attribué lors de votre réponse à ce script.

Installation du client WireGuard sur un smartphone Android.
En utilisant l’application Play Store depuis un smartphone sous Android, il est possible d’installer le client WireGuard sur ce téléphone.
Après cela, pour l’utiliser, il faut disposer d’un fichier de configuration issue du serveur, il est possible de l’obtenir sous forme d’une pièce jointe dans un mail que l’on importera dans le dossier téléchargement du téléphone.
  Après avoir lancé l’application sur le smartphone, l’utilisation de la touche + permet d’ajouter une connexion, soit en important un fichier de configuration, soit en scannant le QR Code généré sur le serveur à l’aide de la commande $ pivpn -qr , soit par une saisie manuelle.

Installation du client WireGuard sur un pc sous Windows.

Il suffit de télécharger le client depuis le site de WireGuard,

Configuration complémentaire sur le serveur.

[Interface]
PrivateKey = xxxxxxx//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Address = 10.120.167.1/24
MTU = 1420
ListenPort = 51820

# Lorsque le VPN démarre, on accepte les paquets en provenance de ce VPN, %i est un référencement générique de l’interface, wg0 dans notre exemple.
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Lorsque le VPN s’arrête, on supprime le paramétrage précédent. 
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

cc

Les commentaires sont clos.