Sommaire
- Qu'est-ce qu'OpenVPN ?
- Mise en place d'OpenVPN serveur sur Raspbian (debian pour Raspberry Pi)
-
Utilisation côté serveur
- Comment créer un client/utilisateur pour serveur (sans mot de passe) ?
- Comment ajouter un client/utilisateur (avec mot de passe) ?
- Comment supprimer un client/utilisateur ?
- Peut-on afficher la liste des clients connecté au serveur ?
- Ligne de commande : fixer l'adresse IP d'un client ou plusieurs clients sur le VPN
- Utilisation d'OpenVPN côté client
- Astuces
- Farm Link
musique d'ambiance : Tryo - Watson Tryo - La misère d'en face
Note : PiVPN fonctionne autant sur Raspbian, Debian qu'Ubuntu
_
_
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 !
_
_
Mise en place d'OpenVPN serveur sur Raspbian (debian pour Raspberry Pi)
Note : on part de zéro (fresh install)
- Passez en administrateur (root)
- sur Raspbian/Ubuntu
sudo su
- sur Debian
su
- Balayage du système (pour Raspbian Jessie normal)
apt-get purge libreoffice* wolfram-engine sonic-pi minecraft-pi greenfoot pcmanfm realvnc-vnc-server supercollider-ide
apt-get autoremove && apt-get autoclean
dpkg -P $(dpkg -l | grep "^rc" | tr -s ' ' | cut -d ' ' -f 2)
- Mises à jours du système
apt-get update
apt-get dist-upgrade -y
#raspberry pi uniquement
rpi-update
- Si rpi-update et raspi-config ne sont pas installé (Raspbian Jessie Light) :
apt-get install rpi-update raspi-config
-
Fixez l'IP de votre Raspberry Pi (source, pour Debian checkez ici)
- Éditez /etc/dhcpcd.conf
nano /etc/dhcpcd.conf
- Et collez à la fin les lignes suivantes en adaptant à vos souhaits et votre réseau.
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
- Redémarrez la machine
reboot
- Re-passez en administrateur (root)
- sur Raspbian/Ubuntu
sudo su
- sur Debian
su
- Créer un utilisateur dédié
adduser pivpn
- 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)
screen -R installation
- Lancement de l'installation
curl -L https://install.pivpn.io | bash
- 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 => Je vous conseil de les générer néanmoins il faut un peu plus de 30 heures pour un RPI 1b donc c'est suivant votre motivation (vous pouvez quitter le screen sans l’arrêter via le raccourcis clavier CTRL+A => CTRL+D)
- Éditez le fichier /etc/sysctl.conf
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
- Demandez au système de prendre en compte la précédente commande
sysctl -p
- Redémarrez
reboot
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.
- Éditez le fichier /etc/openvpn/server.conf
sudo nano /etc/openvpn/server.conf
- 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).
_
_
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.
sudo pivpn add nopass
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.
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.
sudo pivpn add
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.
Comment supprimer un client/utilisateur ?
- Réponse : Entrez la commande suivante dans votre terminal puis choisissez le nom de l'utilisateur.
sudo pivpn revoke
Peut-on afficher la liste des clients connecté au serveur ?
- Réponse : Bien sur, entrez la commande suivante sur le serveur.
sudo pivpn -c
Ligne de commande : fixer l'adresse IP d'un client ou plusieurs clients sur le VPN
- Voyez ce tutoriel : [Tuto/HowTo] Fixer ip des clients sur openvpn
_
_
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 :
curl -s -k -L https://www.0rion.netlib.re/outils/myIP.php | cat
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 :)
- Installez les pré-requis
sudo apt-get install openvpn network-manager-openvpn-gnome
Vous devez disposer de votre fichier nomUtilisateur.ovpn si vous ne l'avez pas importez le ou demandez le à l'admin du VPN
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".
Le logiciel vous demande le fichier .ovpn
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.
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 :)
- Installez les pré-requis
sudo apt-get install openvpn
Vous devez disposer de votre fichier nomUtilisateur.ovpn si vous ne l'avez pas importez le ou demandez le à l'admin du VPN
Placez le fichier nomUtilisateur.ovpn dans /etc/openvpn/
sudo mv ~/Download/nomUtilisateur.ovpn /etc/openvpn/
- Accordez le droit de lecture uniquement pour l'utilisateur qui en a besoin.
sudo chown root:root /etc/openvpn/nomUtilisateur.ovpn
sudo chmod 770 /etc/openvpn/nomUtilisateur.ovpn
- Lancez openvpn avec le fichier de configuration
sudo openvpn --daemon --cd /etc/openvpn --config nomUtilisateur.ovpn
Note : Si vous êtes sur Ubuntu ou Raspbian et que vous souhaitez pouvoir accéder aux machines connectées à votre VPN sans pour autant que tout le trafic ne transitent par le VPN, alors ajoutez dans la commande --route-nopull comme suit
sudo openvpn --daemon --route-nopull --cd /etc/openvpn --config nomUtilisateur.ovpn
- Testez ! :)
Si vous avez forcé le passage par le VPN
curl -s -k -L https://www.0rion.netlib.re/outils/myIP.php | cat
Si vous n'avez pas forcé le passage par le VPN
ping -c 10 10.8.0.1
_
_
Astuces
Checker si openvpn est bien lancé
- Lancez la commande suivante :
ps -aux | grep -E '[o]penvpn'
Afficher la version d'openvpn installée (autant client que serveur)
openvpn --version
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 que j'ai 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)
_
_
Farm Link
- [Tuto/HowTo] Configurer un nom de domaine gratuit Netlib.re
- [Tuto/HowTo] Garder un contrôle discret sur son serveur avec tor et ssh
- ubuntu-FR - Wiki : OpenVPN
- ubuntu-FR - Wiki : Client OpenVPN
- Ubuntu 16.04 » Guide du serveur Ubuntu » VPN
- Setting up a Home VPN Server Using Your Raspberry Pi
- PiVPN - Simplest OpenVPN setup and configuration, designed for Raspberry Pi.
- [RPI] Raspbian Optimization
- PiVPN – Pour transformer un Raspberry Pi en serveur OpenVPN
- OpenVPN - Downloads
- No Internet Access and No LAN Access #151
- How To Set Up an OpenVPN Server on Ubuntu 16.04
- [Tuto/HowTo] [GNU/Linux] Monter un serveur VPN sur Raspberry Pi (Raspbian) avec PiVPN (tutoriel d'origine)
- [Tuto/HowTo] [GNU/Linux] Monter un serveur VPN sur Odroid (Ubuntu Minimal) avec PiVPN
# dépêche ?
Posté par papap . Évalué à 0.
Ca pourrait se mettre en dépêche ça non ?
[^] # Re: dépêche ?
Posté par EauFroide . Évalué à 0.
ou dans le wiki :)
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
[^] # Re: dépêche ?
Posté par papap . Évalué à 2.
En tout cas, merci pour le tuto : c'est imprimé et mis de côté. Je ne sais pas encore si je vais m'en servir.
[^] # Re: dépêche ?
Posté par EauFroide . Évalué à -3.
Merci à toi pour ton retour positif :) N'hésites pas à rapporter toute amélioration/question qui te passerait à l'esprit :)
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
[^] # Re: dépêche ?
Posté par papap . Évalué à 2.
Bien, vu les élections, j'aurais peut-être moins besoin que prévu…
# PiVPN vs Yunohost
Posté par EauFroide . Évalué à -2. Dernière modification le 07 mai 2017 à 19:15.
Pour ceux qui ne le savent pas, on peut aussi faire un serveur VPN avec Yunohost. Néanmoins ce dernier (vpn sur yunohost) est, pour le moment, buggé (mais pas abandonné).
Comme PiVPN et Yunohost ne sont pas totalement pareil, voici se que j'ai remarqué :
VPN sur Yunohost
Yunohost apporte l'avantage du LDAP pré-installé et gérable depuis une WEBUI.
Les clients peuvent télécharger le fichier de config directement depuis la WEBUI en se loggant.
Par contre les fichiers de configuration (.conf et .ovpn) que yunohost fournis aux utilisateurs sont éronné (un problème avec "user" et "group", corrigeable en éditant les fichiers manuellement après téléchargement).
L'installeur de Yunohost refuse de fonctionner si on est loggé sur l'utilisateur "pi" se qui pose problème lorsqu'on veut l'installer sur raspberry pi.
PiVPN
Déjà il fonctionne !
Très simple d'utilisation.
Pas d'interface graphique.
On a plus de choix lors de l'installation (taille des clés, faut-il télécharger la Diffie-Hellman ou la générer) que Yunohost.
Comme ce n'est qu'un ensemble de script, on dispose d'une installation normale d'openvpn se qui permet de suivre les autres tuto sur le net pour apporter telle ou telle modification
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
# Essais et correction des bugs/erreurs
Posté par EauFroide . Évalué à -3.
Je suis en train de tester le tuto dans tout les sens :
Le client fonctionne sans problème avec Debian Jessie et Raspbian. Par contre sur Ubuntu 16.04 j'arrive à me connecter au VPN, à ping les machines connectées au VPN mais je perd l'accès au LAN et au WAN.
Je suis actuellement en train de chercher comment corriger ce problème (n'hésitez pas à participer, je n'ai qu'une vie).
J'ai rédigé un tuto sur comment connecter le client OpenVPN au démarrage de la machine, je reposte dans un nouveau topic où je le poste ici même? (j'ai peur qu'on me reproche encore de faire trop long ^ ^ ).
Notez que si vous voulez aidez à l'améliorer, par exemple en utilisant un service plutôt que rc.local, vous êtes le bienvenu.
Pour les ubbers hackers, les hardcores bidouilleurs : j'ai fini de rédiger le pire cauchemar des grandes oreilles et une solution au harpinning en IPv4: [Tuto/HowTo] [GNU/Linux] Accéder à son VPN depuis le réseau Tor via SSH Tunneling. Il reste à l'essayer/corriger/améliorer (je le testerai quand j'aurai le temps).
Petite question si quelqu'un lit ce thread :
Peut-on utiliser un répartiteur de charge avec OpenVPN? (genre déployer le VPN sur deux raspberry pi et si l'un plante tout continue de fonctionner) Si oui, quel logiciel conseillez-vous ?
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
[^] # Re: Essais et correction des bugs/erreurs
Posté par EauFroide . Évalué à -2. Dernière modification le 08 mai 2017 à 20:00.
Voila c'est corrigé.
Via Interface Graphique :
Via Ligne de Commandes :
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
# UUOG Detected !
Posté par Flyounet (site web personnel) . Évalué à 1.
Non au
grep -v "grep"
!Peut facilement devenir un
Suivant le
grep
, un simpleps -aux | grep '[o]penvpn'
juste marche (le-E
est POSIX).[^] # Re: UUOG Detected !
Posté par EauFroide . Évalué à 2.
Ca fonctionne , par contre on perd les couleurs et la mise en gras.
J'ajoute au tuto de suite, merci pour ton amélioration. :)
Pourrais-tu, stp, expliquer la différence?
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
[^] # Re: UUOG Detected !
Posté par NeoX . Évalué à 3.
ou pas
ou bien si
c'est donc le faite d'utiliser les [ ] qui force grep à faire une regex et donc à ne prendre que cela et surtout à s'ignorer lui meme
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.