Comment transformez un Raspberry Pi en serveur VPN avec PiVPN

Matthieu Legouge
Spécialiste Image
29 mars 2024 à 10h12
27
VPN Raspberry Pi © Clubic.com x Shutterstock

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.

OpenVPN

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
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

PiVPN_13.jpg

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.

PiVPN_7.jpg
PiVPN_6.jpg

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_17

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é.

PiVPN_12.jpg
PiVPN_11.jpg

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.

PiVPN_10.jpg

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.

PiVPN_18

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.

PiVPN_9.jpg
PiVPN_8.jpg
PiVPN_5.jpg
PiVPN_4.jpg

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.

PiVPN_2.jpg
PiVPN_1.jpg

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.

OpenVPN Connect.jpg
OpenVPN Connect_1.jpg
OpenVPN Connect_2.jpg
OpenVPN Connect

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.

Matthieu Legouge

Spécialiste Image

Spécialiste Image

La Tech dans les nuages, je garde les pieds sur Terre pour vous livrer mon regard à travers tests et dossiers. Vous me retrouverez sur le forum ainsi que dans l'espace commentaire, mais vous pouve...

Lire d'autres articles

La Tech dans les nuages, je garde les pieds sur Terre pour vous livrer mon regard à travers tests et dossiers. Vous me retrouverez sur le forum ainsi que dans l'espace commentaire, mais vous pouvez aussi me rejoindre sur les réseaux sociaux !

Lire d'autres articles
Vous êtes un utilisateur de Google Actualités ou de WhatsApp ? Suivez-nous pour ne rien rater de l'actu tech !
google-news
Rejoignez la communauté Clubic S'inscrire

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.

S'inscrire

Commentaires (27)

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.<br /> 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.<br /> Le Raspberry pi est connecté à la box de manière classique, en Ethernet ou Wifi.<br /> 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).<br /> 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
«&nbsp;pour des raisons de sécurité il est préférable de conserver le protocole UDP, moins rapide mais beaucoup plus fiable.&nbsp;»<br /> 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.<br /> 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.<br /> 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 «&nbsp;masquée&nbsp;». 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
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
anon16165080:<br /> Pas seulement, tout appareil ou pc en local pourra utiliser l’ip du Rasberry comme passerelle plutôt que l’ip de la box pour aller sur le net. En tout cas c’est comme ça que je le comprend.<br /> Oui, mais en local, cela ne servira pas à grand chose :<br /> En IPV4, c’est l’adresse de la box qui sera visible sur Internet, passage par le Raspi ou non.<br /> En IPV6, par contre, je ne sais pas, ne m’étant pas encore suffisamment penché sur ce protocole.
aurelb87
Bonjour,<br /> Merci pour votre article.<br /> Je possède un abonnement Cyberghost et j’essaie de faire un serveur VPN «&nbsp;maison&nbsp;»…<br /> Y’a-t-il un moyen de combiner les 2 ou est-ce l’un ou l’autre ?<br /> 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.
JCLB
Exactement, pas d’ack. Et si le protocole client au dessus (à l’intérieur) a besoin de «&nbsp;fiabilité&nbsp;» il fonctionnera lui même sur un mode connecté.<br /> QUIC | http/3 lâche par exemple ce mode connecté TCP.
JCLB
En IPv4 le serveur va nater, sauf si tu le configures pour disposer d’un subnet routable. Mais il faut alors que ta box dispose de la route, et là c’est rarement possible… Par exemple certains y arrivent sur livebox via la librairie sysbus.<br /> En IPv6 à mort le NAT ! Logiquement on utilise DHCPv6-Prefix-Delegation pour demander un /64 à la box, qui va l’attribuer et créer automatiquement la route associée. Pas belle la vie ? Encore faut-il que les box implémentent cette fonction, la RFC sur les CPE est en cours de mise à jour pour couvrir ce genre de chose.
buitonio
Se faire son propre serveur VPN à domicile, c’est envisageable quand on a la fibre ou une connexion avec un très haut débit montant.<br /> Si on n’a que l’ADSL comme moi avec 1 Mbit/s de débit montant, ça ne vaut pas le coup, la lenteur de la connexion VPN sera exaspérante.
Blap
Tout depend ce que tu fais, pour plein d’utilisations ca suffit Pour de la vidéo c’est moyen, mais on y arrivait bien avant
ramses_deux
@James_67,<br /> Aucun soucis pour masquer l’adresse IP Publique de ton VPN propre, en utilisant l’IP publique d’un serveur VPN Windscribe par exemple et en routant un port particulier <br /> C’est ce que je fais via une instance PFSense, mais ce n’est pas a la portée de tout le monde…
dFxed
@Matthieu Legouge<br /> Je pense qu’il y a une erreur :<br /> «&nbsp;il est préférable de conserver le protocole UDP, moins rapide mais beaucoup plus fiable.&nbsp;»<br /> Le protocole UDP est plus rapide et moins fiable que TCP.<br /> Par contre il est effectivement recommandé.
Matthieu_Legouge
Merci, j’avais effectivement inversé les deux
cedric_frez
Donc l’IP publique visible, ça sera celle de ta box. Ok mais à ce moment là quel est l’intérêt ?<br /> Les sites web visités seront tout de même masqués ? Par exemple on saura que je suis connecté à internet avec mon IP mais pourra t’on voir ce que je fais et quels sites je visite ?
juju251
@cedric_frez<br /> L’intérêt d’un VPN n’est pas juste de masquer l’adresse IP aux sites que l’on visite.<br /> Personnellement, j’ai un VPN sur mon Raspberry Pi, VPN qui me permet surtout :<br /> D’accéder à mon réseau perso depuis n’importe où tant que j’ai une connexion Internet, pour par exemple utiliser le partage de fichiers Windows ou d’utiliser RDP, sans avoir à exposer ce service au niveau d’internet.<br /> De me servir du VPN comme une passerelle pour chiffrer la connexion entre mon point d’accès (PC portable relié à un wifi public par exemple) et chez moi, ce qui permet de rendre inexploitables (car chiffrées) d’éventuelles données qui pourraient être interceptées (dans la très grande majorité des cas, wifi public = données non chiffrées au niveau du wifi).<br />
MattS32
juju251:<br /> L’intérêt d’un VPN n’est pas juste de masquer l’adresse IP aux sites que l’on visite.<br /> Je dirai même plus : à la base ce n’est qu’un effet de bord de certains VPN «&nbsp;bourrins&nbsp;» qui routent tout le trafic via le VPN ou lieu de ne le faire que pour le trafic propre au VPN.<br /> Utiliser un VPN dans le but de masquer une IP, c’est utiliser un bazooka pour tuer une mouche : un simple tunnel/proxy suffit.<br /> Mais ce masquage est devenu le principal argument de vente des vendeurs de VPN qui surfent sur la peur du gendarme et la fraude au géoblocage pour vendre leurs services.<br /> Et le pire, c’est qu’en fait on ne peut même pas vraiment qualifier leurs services de VPN : ils s’appuient certes sur des logiciels servant normalement à faire des VPN, mais en pratique ce qu’ils offrent c’est bien souvent juste un tunnel, on ne peut pas utiliser leurs VPN comme un vrai VPN (ie créer un réseau virtuel sur lequel plusieurs personnes connectées au service peuvent se voir comme s’ils étaient sur un même réseau).<br /> Bref, ils ont totalement dénaturé la notion de VPN.
Dom_Dom
Je viens d’installer Wireguard avec PiVpn (et une adresse duckdns) et NextCloud sur un Pi3b+. Ca marche très bien (j’ai la fibre 100Mo dans les 2 sens). Je confirme que même du smartphone, c’est l’adresse ip de ma box qui apparaît, donc pas anonyme.<br /> J’ai laissé ouverts sur la box les ports 51820 (wireguard) et 443 et 80 (NextCloud).<br /> Je m’interroge: on est obligé de laisser ouverts ces 2 derniers ports ? Le trafic vers NextCloud ne passe donc pas par le vpn si je comprends bien. Non ? Dangereux ? Utilité du vpn dans ce cas ?<br /> Si un pro peut me répondre…
juju251
Dom_Dom:<br /> Je m’interroge: on est obligé de laisser ouverts ces 2 derniers ports ? Le trafic vers NextCloud ne passe donc pas par le vpn si je comprends bien. Non ? Dangereux ? Utilité du vpn dans ce cas ?<br /> Si un pro peut me répondre…<br /> Alors, en fait, cela dépend si tu veux que NextCloud soit accessible sur Internet directement ou uniquement via ton réseau local (et donc le VPN).<br /> Dans le cas où tu souhaites que NextCloud soit accessible sur internet directement, il faut laisser les ports 80 et 443 (à voir quand même, il est possible que le 443 suffise en se connectant directement via https).<br /> L’avantage, c’est qu’il sera possible de s’y connecter directement, sans avoir besoin d’une clé pour accéder à Wireguard.<br /> En revanche, le serveur web sera directement exposé et devra être maintenu à jour et être correctement configuré pour que la protection soit assurée au maximum.<br /> Dans le cas où tu souhaites que NextCloud soit accessible uniquement via le VPN et le réseau local, alors, il ne faut pas exposer les port 80 et 443 sur Internet.<br /> L’avantage de cette méthode c’est que NextCloud ne sera pas accessible via internet directement (ce qui peut être utile selon ce que tu veux en faire).<br /> L’inconvénient, c’est qu’il faudra obligatoirement se connecter au VPN pour y avoir accès.<br /> J’espère avoir été suffisamment complet et compréhensible. ^^<br /> N’hésite pas si tu as besoin d’éclaircissements.
Dom_Dom
Merci beaucoup pour ton aide !!!<br /> Oui, ce que je souhaite, c’est de pouvoir accéder à NextCloud depuis internet, notamment parce que j’ai configuré en plus dedans un External storage (NextCloud utilise Samba pour ce faire) auquel j’aimerais avoir accès quand je ne suis pas chez moi.<br /> Donc, je veux y avoir accès en local et sur internet, mais avec le moins de risques possibles, eh eh ! N’y a-t-il pas un réglage dans wireguard pour qu’il surveille un port dédié à NextCloud ? Faut-il que je crée une autre adresse dyndns pour NextCloud et comment y rediriger le trafic ensuite ? Je sèche !<br /> Donc, comment se connecter depuis internet à Nextcloud en passant par le vpn ?
juju251
Dom_Dom:<br /> N’y a-t-il pas un réglage dans wireguard pour qu’il surveille un port dédié à NextCloud ?<br /> Non.<br /> Un VPN (ce qu’est Wireguard) permet, par son intermédiaire de se connecter à l’ensemble de ton réseau domestique (pour simplifier, parce que selon la configuration il est possible d’en définir la portée, mais bref).<br /> Une fois que tu es connecté au VPN, tu auras accès à tout ton réseau, comme si tu étais connecté physiquement chez toi.<br /> Dom_Dom:<br /> Faut-il que je crée une autre adresse dyndns pour NextCloud et comment y rediriger le trafic ensuite ? Je sèche !<br /> Il est plus simple en effet de créer une adresse Dyndns, pour notamment ne pas avoir à se soucier de l’adresse IP publique (liée à ta connexion internet et à ta box / modem).<br /> Il faut ensuite installer sur la machine qui te servira à te connecter (smartphone, ordinateur portable, etc.) le client Wireguard, pour que la machine puisse se connecter à ton réseau contenant ton NextCloud.<br /> Niveau réglage il faut la clé cryptographique que tu auras clé sur le Pi avec PiVPN (il est possible de scanner le QRCode avec un smartphone également) et l’adresse soit IP soit l’url (ça marche sans problème avec Dyndns).<br /> Une fois la connexion VPN assurée, tu pourras utiliser ton navigateur / logiciel qui assure l’accès à NextCloud avec les mêmes paramètres que sur ton réseau local.
Dom_Dom
Merci Juju !<br /> Ca fonctionne enfin. J’ignore vraiment pourquoi ça ne marchait pas (problèmes de sécurité ?).<br /> Lorsque je suis hors de chez moi, je peux maintenant accéder à NextCloud en VPN avec l’adresse locale 192.168.1.25 ou l’adresse du serveur configuré par wireguard 10.6.0.1.<br /> Merci pour ton aide.
DarkSquall78
Bonjour à tous et merci pour ce tuto.<br /> Mon installation sur Raspberry a bien fonctionné .<br /> Une question cependant, peut ont attribué une Ip client ( 192.168.0.xxx) à la place des IP ( 10.8.0 x ) attribuer automatiquement par pivpn.<br /> et comment procéder .
loic78
Bonjour,<br /> Je n’arrive a me connecter a mon serveur vpn, quelle adresse URL dois rentrer exactement ?<br /> cordialment
Voir tous les messages sur le forum
  • Indépendance
  • Transparence
  • Expertise

L'équipe Clubic sélectionne et teste des centaines de produits qui répondent aux usages les plus courants, avec le meilleur rapport qualité / prix possible.

Haut de page

Les derniers tutoriels

VPN : tous les tutoriels