[Tuto/HowTo] [GNU/Linux] Monter un serveur VPN sur Raspberry Pi (Raspbian) avec PiVPN

Avatar du membre
voxdemonix
Messages : 1237
Enregistré le : lun. févr. 02, 2015 7:28 pm

[Tuto/HowTo] [GNU/Linux] Monter un serveur VPN sur Raspberry Pi (Raspbian) avec PiVPN

Message par voxdemonix » jeu. avr. 13, 2017 11:32 pm

musique d'ambiance : NEFFEX - Light It Up Best Songs for Playing LOL #24 Best Remixes Of Popular Songs 2017
Note : PiVPN fonctionne autant sur Raspbian, Debian qu'Ubuntu
Testé sur : Raspberry PI, Odroid

Qu'est-ce qu'OpenVPN ?
  • OpenVPN est un logiciel permettant de créer un Réseau Virtuel Privé (ou Virtual Private Network), plus communément appelé VPN. Le client et le serveur sont sous licence GPLv3 (libre).
    Dans ce tutoriel nous allons utiliser PiVPN qui est un ensemble de scripts permettant de faciliter l'installation et l'utilisation d'OpenVPN.
    Je vous conseil de choisir un Raspberry Pi type 2 ou supérieur (sur le 1 pour un seul client le CPU varie déjà entre 30% et 70%).
    Note : n'oubliez pas de maintenir à jours votre machine !

Légende
Farm Link
Modifié en dernier par voxdemonix le lun. sept. 11, 2017 2:17 pm, modifié 34 fois.
~ Infernalis Creatorem ~
  • Rejoins le côté obscure, on a des cookies !
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
Donation Dash : XmowiBRku3tsEREp7PhpheY4TgeLLDyKdM

Avatar du membre
voxdemonix
Messages : 1237
Enregistré le : lun. févr. 02, 2015 7:28 pm

Re: Monter un serveur VPN sur Raspberry Pi (Raspbian)

Message par voxdemonix » ven. avr. 14, 2017 1:45 pm

musique d’entrain : Selena Gomez - Kill Em With Kindness (Chartwell Remix)

Mise en place d'OpenVPN serveur sur Raspbian (debian pour Raspberry Pi)
Note : on part de zéro (fresh install)
  1. Balayage du système (pour Raspbian Jessie normal)
    • Code : Tout sélectionner

      sudo apt-get purge libreoffice* wolfram-engine sonic-pi minecraft-pi greenfoot pcmanfm realvnc-vnc-server supercollider-ide

      Code : Tout sélectionner

      sudo apt-get autoremove -y && sudo apt-get autoclean

      Code : Tout sélectionner

      sudo dpkg -P $(dpkg -l | grep "^rc" | tr -s ' ' | cut -d ' ' -f 2)
  2. Mises à jours du système
  3. Fixez l'IP de votre Raspberry Pi (source)
    1. Éditez /etc/dhcpcd.conf
    2. Et collez à la fin les lignes suivantes en adaptant à vos souhaits et votre réseau.
      • Code : Tout sélectionner

            interface eth0
            static ip_address=192.168.1.42/24
            static routers=192.168.1.1
            static domain_name_servers=192.168.1.1
        
        • interface eth0 => ou eth0 est votre interface réseau
          static ip_address=192.168.1.42/24 => ou 192.168.1.42 est l'adresse IP que vous souhaitez
          static routers=192.168.1.1 => ou 192.168.1.1 est l'adresse IP de la passerelle (le routeur)
          static domain_name_servers=192.168.1.1 => ou 192.168.1.1 est l'adresse IP du serveur DNS à utiliser
  4. Redémarrer la machine
  5. Créer un utilisateur dédié
  6. Ouvrez un screen (sera utile si l'installation s'attarde plus que votre patience, surtout si vous générez les clés de chiffrement)
  7. Lancement de l'installation
  8. Lorsque l'installeur vous demande :
    • quel user utiliser => utilisez les flèches et la barre d'espace pour choisir l'utilisateur créé précédemment ( pivpn ).
      quel protocole choisir => laissez UDP sauf si vous souhaitez pouvoir vous connecter à votre VPN depuis le réseau Tor, à ce moment là choisissez TCP
      quel port choisir => laissez celui par défaut
      la taille de la clés de chiffrement => choisissez la plus élevée (actuellement 4028bit)
      s'il faut télécharger ou générer la clés Diffie-Hellman => choisissez télécharger (download) sauf si vous avez du temps devant vous (on parle de plusieurs heures et même, pour le RPI 1b, plus de 30 heures)
  9. Éditez le fichier /etc/sysctl.conf
    • Code : Tout sélectionner

      sudo nano /etc/sysctl.conf
      Et dé-commentez (supprimez les # au début) les deux lignes suivantes
      net.ipv4.ip_forward=1
      net.ipv6.conf.all.forwarding=1
  10. Demandez au système de prendre en compte la précédente commande
  11. Redémarrez

Forcer toutes les connexions à passer par le VPN
Note : Par défaut les clients ne transitent par le VPN que pour contacter d'autres machines à l'intérieur du VPN. Si vous souhaitez faire passer toutes les communications des clients par le serveur VPN suivez cette procédure.
Attention : Cela rend inaccessible les clients depuis l'extérieur du VPN.
  1. Éditez le fichier /etc/openvpn/server.conf
  2. Cherchez (CTRL+W) push "redirect-gateway def1" et remplacez par push "redirect-gateway def1 bypass-dhcp" OU dé-commentez la ligne en supprimant le point virgule (;) au début de la ligne suivant les fichiers de config. Enfin sauvez et quittez (CTRL+X).
Modifié en dernier par voxdemonix le lun. juin 19, 2017 2:54 am, modifié 21 fois.
~ Infernalis Creatorem ~
  • Rejoins le côté obscure, on a des cookies !
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
Donation Dash : XmowiBRku3tsEREp7PhpheY4TgeLLDyKdM

Avatar du membre
voxdemonix
Messages : 1237
Enregistré le : lun. févr. 02, 2015 7:28 pm

Re: Monter un serveur VPN sur Raspberry Pi (Raspbian)

Message par voxdemonix » ven. avr. 14, 2017 2:06 pm

musique d’entrain : New Melbourne Bounce Music Mix ♫ Popular Electro House Remixes 2017 ♫

Utilisation côté serveur
  • Comment créer un client/utilisateur pour serveur (sans mot de passe) ?
    • Réponse : Entrez la commande suivante dans votre terminal puis choisissez un nom d'utilisateur et un mot de passe. La fin de la commande va vous sortir un paragraphe du style
      Done! myUser.ovpn successfully created!
      myUser.ovpn was copied to:
      /home/pivpn/ovpns
      for easy transfer.
      Le fichier indiqué doit être envoyé (peut importe comment) au client.
  • Comment ajouter un client/utilisateur (avec mot de passe) ?
    • Réponse : Entrez la commande suivante dans votre terminal puis choisissez un nom d'utilisateur et un mot de passe. La fin de la commande va vous sortir un paragraphe du style
      Done! myUser.ovpn successfully created!
      myUser.ovpn was copied to:
      /home/pivpn/ovpns
      for easy transfer.
      Le fichier indiquez doit être envoyé (peut importe comment) au client.
    Comment supprimer un client/utilisateur ?
    • Réponse : Entrez la commande suivante dans votre terminal puis choisissez le nom de l'utilisateur.

    Peut-on afficher la liste des clients connecté au serveur ?
    • Réponse : Bien sur, entrez la commande suivante sur le serveur.
    Ligne de commande : fixer l'adresse IP d'un client ou plusieurs clients sur le VPN
Modifié en dernier par voxdemonix le dim. mai 07, 2017 6:00 pm, modifié 7 fois.
~ Infernalis Creatorem ~
  • Rejoins le côté obscure, on a des cookies !
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
Donation Dash : XmowiBRku3tsEREp7PhpheY4TgeLLDyKdM

Avatar du membre
voxdemonix
Messages : 1237
Enregistré le : lun. févr. 02, 2015 7:28 pm

Re: Monter un serveur VPN sur Raspberry Pi (Raspbian)

Message par voxdemonix » ven. avr. 14, 2017 2:06 pm

musique d'ambiance : Best Music Mix 2017 Easter Mix
Ce topic est une copie de celui-ci.

Utilisation d'OpenVPN côté client
Bonus : Si besoin, vous pouvez vérifier votre IP (publique) à cette adresse (PHP) ou encore ici (PHP + javascript). Si vous voulez checker votre IPv4 en ligne de commande :
Interface Graphique : installer OpenVPN client sur Ubuntu, Xubuntu, Kubuntu, Voyager OS, Linux Mint et le connecter
Note : vous devez utiliser le même nom de domaine que configuré sur le serveur VPN. Ainsi si votre serveur VPN est configuré pour être accédé depuis vpn.helloWorld.com, vous ne pourrez pas y accéder en entrant directement son ip (par exemple 192.168.1.42). Vous pouvez modifier votre fichier /etc/hosts pour corriger ce problème facilement :)
  1. Installez les pré-requis
  2. Vous devez disposer de votre fichier nomUtilisateur.ovpn si vous ne l'avez pas importez le ou demandez le à l'admin du VPN
  3. Lancez le gestionnaire réseau de votre distribution et choisissez "Modifications des connexions" puis "Ajouter" et enfin "Importer une configuration VPN enregistrée" et finalisez avec "Créer".
  4. Le logiciel vous demande le fichier .ovpn
  5. Enfin entrez le mot de passe associé à l'utilisateur (qui permet d'accéder à la clés) et si vous désirez ou non que le VPN soit disponible aux autres utilisateurs du système.
  6. Enregistrez puis tentez de vous connecter à votre VPN pour le tester :)


Ligne de commande : Installer OpenVPN client sur Raspbian/Ubuntu et le connecter
Note : vous devez utiliser le même nom de domaine que configuré sur le serveur VPN. Ainsi si votre serveur VPN est configuré pour être accédé depuis vpn.helloWorld.com, vous ne pourrez pas y accéder en entrant directement son ip (par exemple 192.168.1.42). Vous pouvez modifier votre fichier /etc/hosts pour corriger ce problème facilement :)
  1. Installez les pré-requis
  2. Vous devez disposer de votre fichier nomUtilisateur.ovpn si vous ne l'avez pas importez le ou demandez le à l'admin du VPN
  3. Placez le fichier nomUtilisateur.ovpn dans /etc/openvpn/
  4. Accordez le droit de lecture uniquement pour l'utilisateur qui en a besoin.
    • Code : Tout sélectionner

      sudo chown root:root /etc/openvpn/*.ovpn
      sudo chmod 770 /etc/openvpn/*.ovpn
  5. Lancez openvpn avec le fichier de configuration
    • Code : Tout sélectionner

      sudo openvpn --daemon --cd /etc/openvpn --config nomUtilisateur.ovpn
      Note : par défaut Ubuntu et Raspbian font transiter TOUT le trafic par le VPN et rend isole la machine du LAN. SI vous souhaitez juste avoir accès aux machines connectées à votre VPN, ajoutez l'argument --route-nopull comme suit
      • Code : Tout sélectionner

        sudo openvpn --daemon --route-nopull --cd /etc/openvpn --config nomUtilisateur.ovpn
  6. Testez ! :)
    • Si vous avez forcé le passage par le VPN Si vous n'avez pas forcé le passage par le VPN



Ligne de commande : joindre une machine à l'intérieur du VPN depuis l'extérieur

Android : installer le client OpenVPN et le connecter au serveur
https://play.google.com/store/apps/deta ... nvpn&hl=fr
Modifié en dernier par voxdemonix le mar. mai 23, 2017 6:14 pm, modifié 7 fois.
~ Infernalis Creatorem ~
  • Rejoins le côté obscure, on a des cookies !
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
Donation Dash : XmowiBRku3tsEREp7PhpheY4TgeLLDyKdM

Avatar du membre
voxdemonix
Messages : 1237
Enregistré le : lun. févr. 02, 2015 7:28 pm

Re: Monter un serveur VPN sur Raspberry Pi (Raspbian)

Message par voxdemonix » mar. avr. 18, 2017 2:30 pm

Erreurs et Problèmes
~ Infernalis Creatorem ~
  • Rejoins le côté obscure, on a des cookies !
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
Donation Dash : XmowiBRku3tsEREp7PhpheY4TgeLLDyKdM

Avatar du membre
voxdemonix
Messages : 1237
Enregistré le : lun. févr. 02, 2015 7:28 pm

Re: Monter un serveur VPN sur Raspberry Pi (Raspbian)

Message par voxdemonix » mer. avr. 19, 2017 7:37 pm

Astuces & Questions
Note : ceci est une copie de ce topic dédié

Checker si openvpn est bien lancé
Lancez la commande suivante :
Afficher la version d'openvpn installée (autant client que serveur)
Est-ce qu'OpenVPN consomme beaucoup de ressources ?
  • Voici un screenshot pris lorsque j'ai connecté mon serveur ZoneMinder à un OpenVPN installé sur un RPI 1B+ puis affiché une des cameras de surveillance (qui est passé de +-21FPS a 1fps, tout le trafic réseau de ZoneMinder transitant par le VPN soit un flux variable entre 1Mo/s et 2Mo/s)
    • screenshot-2017_05_08-top-ZoneMinder_Over_tunnel_OpenVPN.png

As-tu une commande pour changer le protocole réseau de tout les certificats sur le serveur ?
  • Code : Tout sélectionner

    sed -i -- 's/proto udp/proto tcp/g' /home/pivpn/ovpns/*.ovpn
    Ici on remplace proto udp par proto tcp. Pensez a éventuellement adapter le path.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
~ Infernalis Creatorem ~
  • Rejoins le côté obscure, on a des cookies !
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
Donation Dash : XmowiBRku3tsEREp7PhpheY4TgeLLDyKdM

Qui est en ligne

Utilisateurs parcourant ce forum : CommonCrawl [Bot] et 0 invité