PiVPN : OpenVPN ou WireGuard sur un Raspberry Pi (Tuto)

Peu de temps avant mon départ en vacances, j’ai découvert PiVPN (mieux vaut tard que jamais). PiVPN est une solution clé en main pour transformer votre Raspberry Pi en serveur VPN : OpenVPN ou WireGuard. Facile à installer et à paramétrer, il est en plus redoutable en performances avec WireGuard. Explications…

pivpn - PiVPN : OpenVPN ou WireGuard sur un Raspberry Pi (Tuto)

PiVPN : OpenVPN / WireGuard

PiVPN existe depuis plusieurs années maintenant. Son objectif est de faciliter la configuration et la gestion d’un serveur VPN depuis un Raspberry Pi. Je l’ai configuré rapidement sur un Raspberry Pi 4 pour mes vacances avec WireGuard. 5 appareils étaient paramétrés pour l’utiliser. Le moins que l’on puisse dire, c’est qu’il est très efficace !

Installation

Avant de commencer l’installation, pensez à mettre à jour votre Raspberry Pi. Ça ne prend que quelques minutes tout au plus. Ensuite, l’installation est très rapide et il n’y a qu’une commande à taper :
curl -L https://install.pivpn.io | bash

Et c’est tout. Rien de plus, rien de moins. L’outil va réaliser différentes vérifications sur votre Raspberry Pi et lancer automatiquement l’installation des différents paquets.

install pivpn - PiVPN : OpenVPN ou WireGuard sur un Raspberry Pi (Tuto)

Configuration

La configuration est assez simple, il suffit de suivre le guide en anglais. Oui, cela peut être un frein pour certains… tout est en anglais. Alors je vous rassure, cela reste tout à fait accessible. Il n’y a rien de vraiment très compliqué.On choisit si le Raspberry Pi est en DHCP ou IP fixe (à favoriser pour la redirection sur votre Box), puis on va sélectionner l’utilisateur (User) qui pourra gérer serveur VPN.

choose user - PiVPN : OpenVPN ou WireGuard sur un Raspberry Pi (Tuto)

Dans mon cas, je n’ai que l’utilisateur pi de paramétrer sur mon matériel. Arrive ensuite le mode d’installation, c’est maintenant qu’il faut choisir le type de service VPN que vous souhaitez mettre en place OpenVPN ou WireGuard. Je suis un grand fan d’OpenVPN, mais il est gourmand en ressource (voire lent). Depuis plusieurs mois maintenant, je n’utilise que WireGuard et c’est un vrai bonheur. C’est celui que j’utilise pour ce tuto…

wireguard openvpn - PiVPN : OpenVPN ou WireGuard sur un Raspberry Pi (Tuto)

On a quasiment fini, il faut indiquer le port à utiliser/rediriger vers votre Raspberry Pi. Dans notre cas, le port par défaut pour WireGuard est 51820 (UDP). Avant-dernier écran, on vous demande de sélectionner un fournisseur de DNS pour les clients. Si vous utilisez AdGuard ou PiHole sur votre installation réseau pour bloquer les publicités, c’est le moment de sélectionner Custom (tout en bas de la liste) et de saisir son nom ou son adresse IP. Vous pourrez en mettre 2 en les séparant par une virgule.

DNS client VPN - PiVPN : OpenVPN ou WireGuard sur un Raspberry Pi (Tuto)

Enfin, il est demandé de choisir le moyen de connexion à votre serveur VPN : via l’adresse IP publique de votre Box ou avec une entrée DNS (Domaine/Dynamic DNS). Si vous choisissez la seconde solution, il faudra le nom (ex. : domaine.fr/.com/.org…). Voila, c’est terminé pour l’installation et la configuration de votre VPN avec PiVPN.

unattended upgrades - PiVPN : OpenVPN ou WireGuard sur un Raspberry Pi (Tuto)

Un petit message vous recommandera d’activer les Unattended Upgrades (les mises à jour de sécurité). Enfin, il est recommandé de redémarrer son Raspberry Pi après l’installation de PiVPN.

Ajout d’un utilisateur/périphérique

Ensuite pour ajouter un appareil, il faudra taper la commande :
pivpn -a

creation vpn iphone fx - PiVPN : OpenVPN ou WireGuard sur un Raspberry Pi (Tuto)

et le nom du client. Il ne vous reste plus qu’à installer l’application WireGuard sur votre téléphone ou ordinateur 😉

Récupérer le QRcode

Pour récupérer le QRcode pour l’application téléphone ou tablette, vous taperez la commande :
pivpn -qr

Lister les utilisateurs/périphériques

La commande ci-dessous vous permettra de lister tous les clients/périphériques ajoutés précédemment :
pivpn l

Désinstaller PiVPN

Si vous souhaitez désinstaller PiVPN, le programme est simple et assez efficace (attention, il y a un redémarrage du Raspberry Pi à faire) :

pivpn -u

Fichiers de configurations

Sachez que les fichiers de configuration pour vos appareils (ordinateur, tablette, smartphone…) sont tous disponibles depuis le dossier /home/pi/configs (par défaut).

Simple et efficace ! Pour terminer, sachez que j’ai installé l’application WireGuard sur ma Fire TV 4K. Je n’ai eu aucun souci pour accéder à mes vidéos contenus sur mon NAS… à distance, grâce à Kodi 😉

  1. Merci pour ce tuto!
    PiVPN est un jolie outil, de plus il peut être sans soucis utilisé sur d’autre matériel qu’un raspberry. Comme un PC sous debian ou Ubuntu

  2. J’utilise PiVPN en complément de Pi-Hole sur Proxmox sur un Debian virtualisé. Je l’avais auparavant sur un RPI4 4Go et ça fonctionnait nickel. Le seul frein que l’on va rencontrer est le débit montant de la connexion sur lequel le VPN est connecté. Pour ma part il est derrière une connexion ADSL avec un débit montant de 1M, autant que je peux rien faire avec… Mais si tu as la fibre c’est nickel. Je m’en sers juste pour accéder à mon réseau local quand je ne suis pas à la maison.

  3. J’avais tenté de mettre en place WIREGUARD sur mon NAS Syno 918+ sans succès. J’utilisais OPENVPN mais avec une réduction du débit. J’ai suivi le tuto et en 5 mins tout fonctionne sur mon pi3. Un grand bravo à toi pour la clarté de tes explications. Merci

  4. Bonjour
    Je viens d’acheter un RPI 4 et je suis tombé sur ce Tuto intéressant.
    Vous parlez de commencer par faire une mise à jour du RPI, vous parlez d’un bios ou quelque chose de ce genre ?
    Puis je vois qu’ensuite vous exécutez une ligne de commande pour commencer l’installation du VPN.
    Cela veut dire qu’il y a déjà un OS d’installeé sur votre RPI ?
    Merci pour vos réponses…

  5. Merci beaucoup Fx pour votre réponse, rapide en plus !
    Je vais donc aller récupérer l’OS sur le lien que vous avez posté puis installer le VPN dans la foulée…
    Bonne journée

  6. Une petite question Fx. A travers mon reseau à domciile je bloque l’accès de Youtube sur les téléphones de mes enfants avec Adguard installé sur mon NAS. Est-il possible de faire la même chose à l’extérieur en passant par le VPN Wireguard ? Merci de ta réponse. Nicolas

  7. Oui bien sur @Nicolas.
    Il faut dans la configuration du client vpn lui dire d’utiliser ton serveur adguard et de forcer toutes les connexions au travers du vpn.

    Bien sur, il faudra limité la possibilité a tes enfants de désactiver le vpn, je suppose qu’on doit trouver également des solutions à cela.

  8. Bonjour @EVOTk.

    Merci pour ta réponse mais il me faut plus de précisions. Que dois je modifier dans le fichier de conf du téléphone de mon fils ? j’ai actuellement une adresse IP en 10.0.6.x/24. Faut il la renommer en 192.168.0.x/24 ? Merci pour tes précisions. Nicolas

  9. @Nicolas normalement ton fichier « client » wireguard ressemble a ceci :
    —–
    [Interface]
    PrivateKey = XXXX
    ListenPort = 51820
    Address = 10.13.13.2/32
    DNS = 10.13.13.1

    [Peer]
    PublicKey = XXXX
    AllowedIPs = 192.168.2.0/24
    Endpoint = ndd.fr_ou_ip_fixe:51820
    —-

    Tu doit modifier AllowedIPs par « AllowedIPs = 0.0.0.0/0, ::0/0 » afin de lui forcer a passer tout le traffic a travers le VPN.
    Pour le serveur DNS, il faut que la machine qui heberge le serveur wireguard est ton DNS de renseigne, ou que tu le force dans le paramètre DNS = XXXX

  10. Re bonjour @EVOTk. J’ai bien reussi à bloquer youtube à travers le VPN via adguard mais pour tous les clients connectés ! Existe-t-il une solution pour filtrer par adresse IP du style 10.6.0.x ? Merci de ta réponse. Nicolas

    1. Hello Nicolas,
      Ce que tu peux faire depuis AdGuard, c’est de créer un profil. Tu vas dans Paramètres > Paramètres du Client. Ce client, il aura un nom et surtout une adresse IP ou l’adresse MAC du périphérique. A noter que pour un client, tu peux saisir plusieurs IP ou adresse MAC. Si ton enfant a 2 périphériques, ça marche. Tu peux aussi créer le même profil pour 2 enfant. Enfin sur la partie du bas, tu peux sélectionner les services à bloquer (ou non) 😉
      J’espère que cela pourra t’aider !

      1. Hello FX, merci pour ta réponse. Pas de souci pour les profils, je les ai déjà mis en place. Mais, sauf erreur de ma part, lorsque le téléphone de mon enfant à l’extérieur se connecte au serveur VPN du hébergé sur le Raspberry, sur Adguard, je vois uniquement les requêtes de l’IP du Raspberry et aucune trace de l’IP du téléphone. Est-ce exact ? La seule solution que j’ai trouvée, serait de disposer de 2 raspberry pour créér 2 serveurs VPNs avec des profils différents (1 pour les enfants, et 1 pour les adultes!). Merci et bonne soirée.

        1. Salut @Nicolas,
          Il existe peut-être une solution a cela ( attendons de voir la réponse de @FX ^^ ) mais si cela n’est pas possible il te faudra alors soit :
          – Avoir 2 pi
          Ou si ton pi est au mini un Pi2B :
          installer docker, et créer un 2eme serveur wireguard en docker sur ce même pi avec un reseau macvlan ( pour lui attribuer une IP LAN différente de celle du pi )

          1. Merci pour ta réponse. je vais essayer ce matin, mais je crois comprendre le problème. Adguard est installé sur mon NAS. Je vais le migrer sur le pi..Je vous tiens au courant. En tout cas, en grand merci pour votre implication. Nicolas

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.