Créer facilement un serveur VPN avec un Rapsberry Pi

Sommaire

Si vous voulez vous installer un petit serveur OpenVPN à la maison et utiliser votre connexion perso pour y faire transiter vos paquets en toute sécurité, c’est possible grâce à un Raspberry Pi, une petite carte SD d’au moins 8GB et le script PiVPN.

Prérequis

Avant de commencer ce tuto, je vous recommande fortement de réaliser la création d’un enregistrement NO-IP.

Ayez bien en tête que pour que votre serveur VPN soit fonctionnel, votre Raspberry Pi devra rester en permanence connecté à internet avec un câble Ethernet et alimenté !

Je préfère le préciser ^^

Créer une carte SD depuis Windows, Mac ou Linux avec Raspberry Pi Imager

Le 5 mars la fondation Raspberry Pi a annoncé la sortie d’un outil maison pour faciliter la création des cartes SD, Raspberry Pi Imager, et ce depuis n’importe quel OS.

Nous allons donc voir comment installer Raspbian (ou autre) sur votre carte SD avec Raspberry Pi Imager.

Installer Raspberry Pi Imager, rien de plus simple !

Raspberry Pi Imager s’installe comme le ferait n’importe quel logiciel sur votre système d’exploitation. Il vous suffit de télécharger la version adaptée à votre système, WindowsMacOS ou Linux, de double cliquer sur le fichier téléchargé et de suivre le guide.

Notez que pour Linux il vous faudra un système à base Debian, par exemple Ubuntu.

On est donc sur une installation classique, à la portée des plus débutants !

Flasher la carte SD avec Raspberry Pi Imager, un jeu d’enfant !

Maintenant que le logiciel est installé, nous allons pouvoir flasher notre carte SD pour y installer le système de notre choix. Encore une fois, vous allez voir que c’est désormais un jeu d’enfant.

Commencez par insérer la carte SD dans votre ordinateur, et lancez Raspberry Pi Imager, vous arrivez sur la fenêtre ci-dessous.

L’attribut alt de cette image est vide, son nom de fichier est rpi-imager-start.png.

Comme vous le voyez, l’installation va se dérouler en trois étapes : Choix du système, choix de la carte, lancement de l’écriture.

Choisir l’OS à installer

Bonne nouvelle, vous n’avez plus à télécharger à l’avance l’image du système que vous souhaitez installer, Raspberry Pi Imager s’en charge pour vous !

Cliquez donc sur le premier bouton, et une liste déroulante des systèmes installables va s’afficher, cliquez simplement sur celui qui vous intéresse.

Choisir la carte SD

Après avoir choisi le système à installer, nous devons choisir où l’installer. Pour cela, cliquez sur le deuxième bouton et une liste des clés USB/cartes SD branché à votre PC va apparaître.

Cliquez sur votre carte SD dans la liste, et vous allez arriver sur la dernière étape.

Lancer l’écriture sur la carte

Nous avons choisi quel système installer, où l’installer, il ne nous reste plus qu’à lancer l’écriture. Le bouton "Write" tout à droite n’est désormais plus grisé, il ne vous reste qu’à cliquer dessus et attendre la fin !

Une barre de progression vous indique l’avancement de l’écriture, il ne vous reste plus qu’à attendre la fin, à retirer la carte et à l’insérer dans votre Raspberry Pi !

Comment activer SSH sur le Raspberry Pi ?

Pour contrôler un Raspberry Pi à distance, le plus simple est d’utiliser SSH. Mais encore faut-il que celui-ci soit activé, ce qui n’est plus le cas par défaut depuis 2016 et une attaques massives sur les objets connectés.

Activer SSH sans écran ni clavier, depuis votre PC

Pour activer SSH, il va nous falloir créer un fichier sur la carte SD du Raspberry et il activera automatiquement SSH au prochain démarrage.

Insérez donc la carte SD de votre Pi dans votre PC, et rendez-vous dans la partition boot, qui est d’ailleurs la seule accessible depuis Windows.

Ceci fait, créez un fichier nommé ssh dans la partition boot de la carte. Pas d’extension, pas de contenu, juste un fichier vide nommé ssh.

Retirez la carte du PC, remettez-la dans la Pi, allumez celle-ci, et voilà, SSH est activé !

Source

Installation de PiVPN

Si vous préférez des tutoriels vidéo :

Pour procéder à l’installation, connectez-vous-en ssh à l’aide de Putty sur votre Raspberry Pi. Sous Raspbian, il faut faire :

ssh pi@ADRESSE_IP

Et utiliser comme mot de passe : raspberry

Ensuite, lancez la commande suivante qui aura pour effet de télécharger et lancer le script PiVPN.

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

Ça va faire quelques mises à jour…

Puis ça va vous expliquer ce qui se passe et vous poser quelques questions.

PiVPN vous indique que ça va utiliser l’adresse IP attribuée via DHCP par votre routeur ou votre box.

Puis on vous demandera de choisir un utilisateur local qui gérera toutes les configs OpenVPN. Ici, je n’en ai qu’un et c’est le user « pi ».

Et puis on enchaine sur une mise à jour de patchs de sécurité.

Optez ensuite pour l’UDP concernant le protocole :

Vous pouvez changer le port du serveur OpenVPN, mais par défaut c’est 1194. Pensez aussi à l’ouvrir sur votre box ou routeur si cela est filtré.

Et là, il faut choisir le niveau de chiffrement utilisé par OpenVPN… Plus le chiffre est élevé, plus le chiffrement sera dur à casser.

Le script PiVPN va alors générer les certificats de chiffrement…

Concernant la génération des paramètres Diffie Hellman, cela peut prendre beaucoup de temps à faire sur le Raspberry Pi. On parle de plusieurs heures. Évidemment, si vous n’êtes pas pressé, c’est ce que je vous recommande (choisir « No »). Mais si vous voulez aller plus vite, PiVPN vous propose de récupérer des paramètres générés aléatoirement sur un serveur public (choisir « Yes »). À vous de voir…

Une fois que c’est fait, on vous demandera si les clients vont se connecter en utilisant l’adresse IP publique de votre Raspberry Pi ou un nom de domaine (référencé sur DNS public).

À cette étape-là, je vous recommande personnellement et fortement la seconde option « DNS Entry ». Renseigner votre domaine créé lors de ce tuto :

Puis vous devrez choisir vos serveurs DNS… Ceux de Google, d’OpenDNS, de Level3…etc. Ou choisissez Custom pour mettre les vôtres. Par facilité pour ce tuto, j’ai choisi OpenDNS.

Voilà, la config est terminée. À ce moment, le script PiVPN nous indique une commande pour créer des profils pour pouvoir se connecter. On va donc s’en servir…

…mais avant, on a besoin de redémarrer le Raspberry Pi !

Une fois que c’est redémarré, reconnectez-vous via SSH à votre Rpi. Vous pouvez pour plus de sécurité changer aussi le mot de passe par défaut avec la commande « passwd ».   

Lancez ensuite la commande

pivpn add

Pour créer un nouveau profil de connexion à votre serveur OpenVPN. Donnez-lui un nom d’utilisateur, un mot de passe et paf, une clé sera générée et un fichier USERNAME.ovpn sera placé dans le dossier /home/pi/ovpns

Ce fichier *.ovpn est très important, car il contient les clés nécessaires à un client OpenVPN pour se connecter à votre serveur. Vous devez donc le copier et le transmettre aux appareils qui ont besoin de se connecter à votre serveur OpenVPN.

Par exemple, sous Android, vous pouvez télécharger et installer le client suivant et y importer ce fichier .ovpn. Il ne vous sera alors demandé uniquement votre mot de passe et la connexion s’établira.

Disponible sur Google Play

Ensuite pour la gestion, vous pouvez utiliser les commandes suivantes :

pivpn clients (pour afficher les clients connectés)

pivpn list (pour afficher les certificats valides et révoqués)

pivpn revoke (pour révoquer un certificat précis)

et

pivpn uninstall (pour désinstaller pivpn)

Et voilà ! Trop facile !

Source

Configuration de votre box

N’oubliez surtout pas d’aller dans votre box et d’ouvrir le port 1194 en UDP et de le rediriger vers l’adresse IP statique de votre Rapsberry Pi ! Celle-ci a été définie lors de la 5e capture d’écran de la partie PiVPN. Vous pouvez également retrouver cette information dans votre box internet.

Tester votre serveur VPN

Par exemple, à l’aide de votre smartphone Android, Wi-Fi désactivé, via le réseau mobile avec l’application OpenVPN for Android et avec le fichier de profil .ovpn importé dans l’application lancer le VPN. Si vous arrivez à vous connecter, c’est que votre serveur est opérationnel !

Romain D.

Passionné d'informatique perdu dans une trame Ethernet. Ce blog est mon bloc-notes public.

10 commentaires

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

  • Salut, merci pour ce tuto bien expliqué.
    Je voulais juste savoir si c’était normal que l’adresse IP des clients reste inchangé même connecté au VPN et s’il était possible de la changer.
    Merci,
    Bonne journée

  • Bonjour,
    Merci pour ce tuto.
    petites questions
    – Le Pi reste t-il accessible comme ordinateur (system classique) ou est-il complètement dédié?
    – Cela fonctionne avec un PI4?
    – Avec ce montage, peut-on naviguer sur son réseau interne ? Style lire via vlcplayer un serveur ou sa tv connectée?
    Merci par avance

    • Bonjour Olivier,

      Le Pi reste bien accessible comme un ordinateur traditionnel.
      Cela fonctionne indépendamment de la version matérielle du Raspberry Pi.
      Avec ce montage, peut-on naviguer sur son réseau interne ? Style lire via vlcplayer un serveur ou sa tv connectée? => C’est le but 😉 !

  • Bonjour Romain,
    Mon Pi4 en service avec Pivpn grâce à ce tuto.
    Les connexions entrantes sont ok mais je n’arrive pas à rentrer dans mon réseau

    De base j’ai l’adresse ip d’interconnexion sur 10.8.x.x j’ai modifié en 192.168.1.31, via ce tuto (https://github.com/pivpn/pivpn/wiki/OpenVPN), mais toujours rien,

    avec mon téléphone en 4G j’ai bien la connexion, mais impossible de voir dans VLC mes serveurs dlna.
    Je pense que j’ai un petit blocage dans le système. Mais OU??
    si utile: pour info je suis sur fibre orange livebox5

    Merci par avance pour votre retour
    Bien cordialement

    • Bonsoir Olivier,

      Dans un premier temps, deconnecté du VPN, arrives-tu à pinger un équipement (hors de la Livebox) sur ton réseau ? Si oui, tente de pinger ce même équipement avec le VPN actif, si tu y arrives c’est que la joignabilité de ton réseau est OK (tout équipement confondu).

      Lorsqu’on utilise un VPN, il est important que l’adresse IP du réseau VPN (10.8.x.x) diffère du réseau local visé 192.168.1.x pour des raisons de routage.

      DLNA s’appui sur le protocole UPnP. Et le protocole UPnP utilise de l’unicast et du multicast. Seulement l’unicast et le multicast opèreront uniquement sur le réseau 192.168.1.x et non sur le réseau 10.8.x.x. Ainsi ton scan de périphérique fera logiquement choux blanc.

      Si tu te sens d’attaque tu peux implémenter le protocole mDNS, mais c’est un autre sujet ;).

      Donc le plus simple pour toi est de fixer l’IP de ton équipement délivrant des médias et de l’interroger en VPN à l’aide d’un « raccourci » ?

Romain D.

Passionné d'informatique perdu dans une trame Ethernet. Ce blog est mon bloc-notes public.