Comment transformez un Raspberry Pi en serveur VPN avec PiVPN

Matthieu Legouge
Par Matthieu Legouge, Spécialiste Image.
Publié le 29 mars 2024 à 10h12
VPN Raspberry Pi

Créer son propre serveur VPN pour chiffrer vos activités en ligne gratuitement : c’est l’une des larges possibilités qu’offre le Raspberry Pi et que nous vous proposons de découvrir ici. Un projet abordable et facile à réaliser, qui vient compléter notre top 10 des meilleurs projets pour débuter avec un Raspberry Pi.

Les offres d’abonnement VPN pullulent sur le web avec des services dont la principale préoccupation est de mieux protéger notre vie privée sur la toile. Encore faut-il juger de la pertinence des VPN, payants comme gratuits, et de leur efficacité pour y placer sa confiance.

Et pourquoi ne pas se contenter de sa propre connexion à internet et d’un Raspberry Pi pour configurer un serveur VPN ? Celui-ci comporte quelques limites et ne permettra pas de contourner d’éventuels blocages géographiques, mais il établira une passerelle entre vos appareils et internet et chiffrera les données qui y transitent. Un tel serveur peut se révéler très utile au quotidien, pour protéger votre vie privée, se connecter en toute sécurité sur des réseaux Wi-Fi publics, ou encore pour accéder à votre réseau local depuis l’extérieur. Dans ce dernier cas, la vitesse de la connexion internet sera bien entendu relativement faible, elle correspondra en effet au débit montant de votre abonnement internet.

Pour conclure cette introduction, précisons que ce tutoriel ne vous permet pas « d’anonymiser » votre connexion : vos requêtes sembleront toujours provenir de votre réseau domestique, à la différence qu’elles seront chiffrées, ce pour quoi cette solution ne permet pas de contourner le filtre géographique Netflix, entre autres.

PiVPN, c’est quoi ?

Avant de détailler la méthode, somme toute très simple, il convient de présenter brièvement ce qu’est PiVPN et comment tout cela fonctionne. PiVPN n’est autre qu’un ensemble de scripts open source permettant d’installer, de configurer et de gérer un serveur VPN via les protocoles OpenVPN 2.4 ou WireGuard.

PiVPN

Développé et maintenu à jour par une communauté de passionnés, PiVPN comporte plusieurs intérêts qui le destinent aux novices comme aux experts : entièrement paramétrable, cet outil a été conçu pour être déployé sur Raspberry Pi, mais fonctionne sur n’importe quel serveur Debian VPS. Parmi ses fonctionnalités, on profite d’une clé de chiffrement à courbe elliptique jusqu’à 512 bits, d’une prise en charge de la keychain d’iOS, de serveurs DNS multiples et personnalisés, d’une intégration à Bitwarden ou encore du support de Pi-Hole. Enfin, il est possible d’utiliser des noms de domaines personnalisés si vous optez pour le protocole OpenVPN.

OpenVPN, WireGuard : quel protocole choisir ?

Comme la majorité des services VPN à l’heure actuelle, PiVPN se repose, au choix, sur les protocoles OpenVPN et WireGuard. OpenVPN reste selon nous le protocole à privilégier pour un maximum de sécurité. De son côté, WireGuard est un protocole récent et très prometteur, nous le conseillons davantage pour être utilisés sur les appareils mobiles, car étant beaucoup moins gourmands en ressources, il ménagera la durée de vie des batteries de smartphones et autres tablettes.

Si vous souhaitez en apprendre davantage à ce sujet, consultez notre article qui explore les protocoles qu’utilise un VPN.

Matériels et logiciels

Comme évoqué en introduction, ce projet est très abordable et ne nécessite pas de matériel particulier, hormis un Raspberry Pi !
À ce sujet, vous pouvez réaliser ce projet avec n’importe quel modèle de Raspberry Pi, mais les performances seront meilleures en optant au minimum pour un Raspberry Pi 3. Ne vous reste ensuite qu’à vous équiper d’une carte microSD d’une capacité d’au moins 8 Go pour débuter.

Un Raspberry Pi 3B+ suffit amplement pour exécuter OpenVPN

Du côté logiciel, il vous faudra flasher votre carte SD avec la dernière image de Raspberry Pi OS, à l’aide de Raspberry Pi Imager ou balenaEtcher notamment. Inutile de télécharger la version complète de Raspberry Pi OS, la version Lite suffira. Si ce n’est pas déjà fait, activez le SSH, changez le mot de passe par défaut et tenez à jour le système d’exploitation.

Vous serez également amené à configurer votre box internet, il s’agira simplement d’ouvrir un port pour rendre accessible votre serveur VPN depuis l’extérieur. Il y a également deux autres points sur lesquelles nous n’allons pas revenir au sein de cet article, mais dont vous aurez peut-être l’utilité selon vos besoins et exigences : la mise en place d’un DDNS (Dynamic DNS) pour lier un nom de domaine à une adresse IP, chose qu’il est possible de faire gratuitement avec No-IP, ou encore l’installation de DNSCrypt, permettant de chiffrer les requêtes DNS quand bien même vous sélectionnerez un fournisseur DNS sécurisé.

Installation de PiVPN

OpenVPN peut parfaitement être installé et configuré manuellement sur votre Raspberry Pi, mais PiVPN offre une solution clé en main et rapide, idéale pour les débutants. À vrai dire, son installation se résume pratiquement à l’exécution d’une commande dans le terminal. Une fois votre Pi démarré, il suffit ainsi d’entrer la commande suivante pour installer OpenVPN :

curl -L https://install.pivpn.io | bash

Le téléchargement et l’installation des packages correspondants demandent quelques minutes d’attentes avant de déboucher sur une configuration pas à pas.

Pour commencer, PiVPN vous informe qu’il nécessite une adresse IP statique attribuée par votre routeur via DHCP. Sur la deuxième page de configuration, vous serez amené à valider cette attribution DHCP ou à configurer manuellement une adresse IP fixe.

PiVPN vous demande ensuite de choisir un utilisateur local, logiquement il s’agit de « Pi ». C’est cet utilisateur qui aura toutes les autorisations pour gérer le fonctionnement et les fichiers de configuration d’OpenVPN.

Se voulant synonyme de simplicité, PiVPN vous propose ensuite de gérer pour vous les mises à jour de sécurité. Sélectionner Yes pour l’y autoriser.

C’est à ce moment que vous allez avoir le choix entre OpenVPN et Wireguard.

PiVPN vous laisse ensuite le choix entre protocoles UDP ou TCP. Une configuration UDP sera plus rapide car elle transmet les paquets sans attendre de confirmation. Dans le cas contraire, une configuration TCP demande confirmation de la réception des paquets, avec à la clé une vérification de leur intégrité.

Vous êtes ensuite amené à choisir le port que votre serveur OpenVPN utilisera. Le port 1194 est proposé par défaut, mais vous pouvez choisir à votre guise selon vos besoins. N’oubliez pas de bien ouvrir ce port dans les règles NAT/PAT de votre routeur.

Sélectionner le fournisseur de DNS de votre choix. Si la confidentialité est un enjeu pour vous, il est préférable de se passer de Google. Nous avons sélectionné Quad9, qui ne collecte pas les données de ses utilisateurs.

Trois niveaux de chiffrement vous sont ensuite proposés, choisissez celui qui vous convient le mieux. Le chiffrement de 4096-bit risque de considérablement ralentir notre connexion, nous avons conservé l’option recommandée, 2048-bit.

Avant de terminer, il vous est proposé d’activer les fonctionnalités d’OpenVPN 2.4, chose que nous vous recommandons de faire, hormis si vous utilisez des applications qui ne le prenne pas charge.

Une fois l’installation terminée, le Raspberry Pi doit effectuer un redémarrage. Une fois exécuté, ouvrez le terminal et entrez la commande « pivpn add », vous permettant de créer un profil .ovpn.

Entrez le nom du client, si besoin modifiez la valeur par défaut pour la durée du certificat, puis choisissez un mot de passe suffisamment fort. Cette opération va générer un fichier .ovpn sous le chemin /home/pi /ovpns. Copiez ce fichier sur un support de stockage ou votre PC et conservez-le. Sachez qu’il faudra créer un profil différent pour chaque appareil avec lesquels vous souhaitez utiliser OpenVPN. Répétez l’opération si c’est le cas. Si jamais vous utilisez une URL personnalisée, éditez le fichier .ovpn pour remplacer l’IP par votre URL.

Se connecter à votre propre serveur VPN

Il ne nous reste plus qu’à nous connecter à notre serveur VPN depuis n’importe quel appareil. Pour cela, il suffit de télécharger et installer OpenVPN Connect, disponible pour de nombreuses plateformes, y compris macOS et iOS, Android, Windows et ainsi de suite. Précisons qu’il existe d’autres programmes qui font l’affaire, tel que Tunnelblick pour macOS ou encore Viscosity, pour macOS comme Windows.

Il suffit alors de lancer OpenVPN Connect, puis de cliquer sur « Add », afin d’ajouter le profil précédemment créé avec le fichier .ovpn. Entrez votre mot de passe, faites basculer l’interrupteur : vous êtes désormais connecté à votre serveur VPN, via votre connexion internet et le Raspberry Pi !

Pour gérer simplement votre VPN, tapez pivpn -command dans le terminal de votre Raspberry Pi. Vous pourrez ainsi consulter la liste des clients connectés, afficher un QR code pour connecter un client mobile, afficher les certificats valides et révoqués, ou encore révoquer des certificats.

Par Matthieu Legouge
Spécialiste Image

Pigiste pour Clubic depuis 2018, j’ai d’abord pris la plume pour parler d’actualités, avant de me spécialiser peu à peu sur les catégories PC & Gaming, notamment les écrans et périphériques, ainsi que l’image et le son, plus particulièrement tout ce qui touche au Home Cinema : les téléviseurs, vidéoprojecteurs et barres de son.

Vous êtes un utilisateur de Google Actualités ou de WhatsApp ?
Suivez-nous pour ne rien rater de l'actu tech !
Commentaires (0)
Rejoignez la communauté Clubic
Rejoignez la communauté des passionnés de nouvelles technologies. Venez partager votre passion et débattre de l’actualité avec nos membres qui s’entraident et partagent leur expertise quotidiennement.
Commentaires (10)
yam103

Merci pour ce petit tuto bien documenté de l’installation d’openvpn sans grosses lignes de commandes, il devrait être apprécié des néophytes.

J’ajouterai que écouter sur le port 443 plutôt que 1194 permettra de se connecter à son VPN maison plus facilement. Certains réseaux wifi publics ou en entreprise appliquent un filtrage des connexions, en particulier sur ces ports de VPN. Se faire passer un simple flux HTTPS se révèlera parfois bien utile.

carinae

Suis pas sur d’avoir compris en terme de connexion. Le raspberry se connecte en USB sur la box et ensuite ? Le wifi est intégré c’est ça ?

juju251

Non.

Le Raspberry pi est connecté à la box de manière classique, en Ethernet ou Wifi.
Et il permet de se connecter depuis l’extérieur, dans le but de par exemple accéder à son réseau domestique depuis une connexion à distance (exemple : se connecter à son PC resté à la maison avec un ordi portable depuis une chambre d’hôtel avec un wifi partagé dans l’hôtel).

Le gros avantage c’est que la connexion établie par le VPN (ici OpenVPN) est chiffrée et ne peut pas être espionnée.

JCLB

« pour des raisons de sécurité il est préférable de conserver le protocole UDP, moins rapide mais beaucoup plus fiable. »

Il est recommandé d’exploiter UDP pour ne pas perdre de temps justement, aucun problème de sécurité par ailleurs, on garde TCP uniuement lorsqu’il est impossible d’exploiter UDP, par exemple avec un nat au conntracking mal fonctionnel.

Autre point, à matériel égal wireguard offrira facilement 20% de débit supplémentaire (test perso sur un pi3b), voir les nombreux benchs wireguard VS openVPN.
Il de plus intégré au noyau Linux.

James_67

Le projet est très bien et c’est un début de sécurisation. J’adore ce genre de projets et je m’amuserais surement à le faire. Le seul point noir que je vois, mais c’est relatif aux besoins / exigences : notre adresse IP publique n’est pas « masquée ». PiVPN ou pas, l’adresse de connexion sera toujours celle de la box (comme mentionné dans l’intro)

carinae

Ha ok merci Juju. Je n’avais effectivement pas tout compris :wink:

den66

Il me semble que UDP ne fait pas de contrôle (pas d’acquittement de réception)alors que TCP oui (attente et réémission des packets) et donc UDP est plus rapide que TCP.

juju251

Oui, mais en local, cela ne servira pas à grand chose :
En IPV4, c’est l’adresse de la box qui sera visible sur Internet, passage par le Raspi ou non.

En IPV6, par contre, je ne sais pas, ne m’étant pas encore suffisamment penché sur ce protocole.

aurelb87

Bonjour,

Merci pour votre article.
Je possède un abonnement Cyberghost et j’essaie de faire un serveur VPN « maison »…

Y’a-t-il un moyen de combiner les 2 ou est-ce l’un ou l’autre ?

Merci.

MattS32

Oui, l’intérêt de cette solution c’est justement de te connecter à Internet (ou à ton réseau local) comme si tu était chez toi quand tu n’es pas chez toi (par exemple, comme indiqué dans l’article, quand tu utilises un réseau Wi-Fi public, qui n’est pas forcément très sécurisé). Donc l’IP publique visible, ça sera celle de ta box. Ça n’a aucun intérêt d’utiliser ça quand tu es chez toi, dans ce cas ça ne fait qu’ajouter une couche inutile entre toi et ta box.