> >

OpenVPN [TUTO] Création d'un serveur et client VPN avec Raspberry Pi et OpenVPN

Vous êtes peut être équipé dans votre foyer d'un routeur 4G et il vous est venu à l'idée de vous connecter à votre réseau local informatique ou de gestion de votre domotique, depuis l'extérieur, à savoir en pensant par une connexion 4G par exemple.
Si vous avez essayé, vous avez du vous retrouver bloqué, quand vous avez voulu vous connecter à l'adresse IP locale de vos appareils ou de votre routeur.
Comment se connecter à un routeur 4G depuis l'extérieur ?
Quelle configuration pour accéder à son réseau local depuis un routeur 4G ?
Je vous explique en détail la procédure dans cet article.


Sommaire :

  • Objectifs
  • 1. Serveur OpenVPN
  • 2. Client OpenVPN
  • 3. Aide mémoire des commandes du terminal


Terminal Objectifs :

L'objectif de ce tutoriel est de créer un réseau virtuel privé (VPN).
Possédant un routeur 4G (TP-Link MR200) pour me connecter à internet avec le réseau mobile partir d'une carte SIM j'ai voulu comme je le fait avec ma box internet classique me connecter à ma domotique depuis l'extérieur.
TP-Link MR200
Le soucis c'est que l'opérateur téléphonique "bride" la connexion internet.
L'opérateur mobile ne donne pas d'adresse IP publique, l'IP est dynamique, il bloque les connexions entrantes sur le réseau mobile (Orange, free, SFR...) afin de ne pas saturer les réseaux.

En cherchant sur la toile j'ai trouvé la solution c'est le VPN pour Virtual Private Network (Réseau Privé Virtuel en français).
C'est un réseau sécurisé permettant d'aller sur internet, de se connecter depuis l'extérieur sur son réseau local, accéder à ses données personnelles depuis n'importe où.
Schéma OpenVPN
J'utiliserai deux Raspberry Pi pour cet exemple. Sur la première RPI je vais installer le serveur VPN et la seconde sera mon client.
matériel nécessaire OpenVPN
Le serveur VPN est placé sous un routeur ADSL classique (box ADSL) et le client VPN sous un routeur 4G.
Configuration tutoriel openVPN
L'intérêt de cette configuration est de pouvoir accéder à mon réseau local placé sous le routeur 4G qui ne délivre pas d'adresse IP publique, ce qui m'empêche en temps normal de pouvoir voir de l'extérieur mon réseau local.
L'inconvénient des abonnements téléphonique 4G données (data) c'est que l'on ne dispose pas d'une adresse IP publique et ni d'IP fixe (WAN) c'est à dire que l'on ne peut pas s'y connecter comme on le fait avec une box internet en ADSL ou fibre.
Routeur 4G pas de connexion depuis l'extérieur
Ce problème est contournable en créant un VPN Virtual Private Network (Réseau Privé Virtuel), un tunnel chiffré par lequel transiteront toutes nos données.

Connexion sur raspberry pi depuis routeur 4G avec openVPN

Terminal 1. Serveur OpenVPN :

On va utiliser la première raspberry Pi en tant que serveur, pour cela il faudra suivre les étapes suivantes : serveur VPN raspberry pi
Configuration pour le serveur OpenVPN


Terminal Etape à suivre :


Se connecter en SSH avec putty (Login + mot de passe). Si vous ne savez pas comment activer le serveur SSH, la solution est par ici !
Connexion SSH Putty

Mettre à jour la Raspberry Pi, répondre Y (yes) à la question pour utiliser l'espace de disque.
sudo apt-get update
sudo apt-get upgrade


Installer l'application OpenVPN et OpenSSL qui permettra de sécuriser la connexion Serveur - Client VPN.
Répondre Y (yes) à la question pour utiliser l'espace de disque.
sudo apt-get install openvpn openssl
installation d'openVPN et OpenSSl sur raspberry PI

Copier les scripts "easy-rsa" présents dans le répertoire ("/usr/share/easy-rsa") dans le dossier d'installation d'Open VPN en tapant :
sudo cp -r /usr/share/easy-rsa /etc/openvpn/easy-rsa
déplacer le dossier easy-rsa

Editer le fichier présent dans le répertoire ("/etc/openvpn/easy-rsa/vars") :
sudo nano /etc/openvpn/easy-rsa/vars
édition du fichier vars

Remplacer la ligne export EASY_RSA="'pwd' par export EASY_RSA="/etc/openvpn/easy-rsa".
export EASY_RSA="/etc/openvpn/easy-rsa"
édition du fichier vars

• Pour la sécurité, définir le type de chiffrement 1024 bits, 2048 bits ou 4096 bits.
Attention plus la valeur de la clé est élevé plus les performances de la Raspberry Pi vont se dégrader.
export KEY_SIZE=2048
édition du fichier vars


• Il est possible d'adapter selon votre localisation les données suivantes (non obligatoire).
édition du fichier vars
• Pour quitter il faut appuyer sur les touches Ctrl+X puis , répondre Y (yes) à la question pour modifier le fichier, valider en appuyant sur Entrée Entrée.


Taper les commandes suivantes :
cd /etc/openvpn/easy-rsa
sudo su
source vars
ln -s openssl-1.0.0.cnf openssl.cnf

Initialiser et créer les clés pour OpenVPN.
./clean-all
./build-ca OpenVPN
Appuyer sur Entrée à chaque fois.


Créer les clés pour le serveur VPN.
./build-key-server server
Répondre Y (yes) 2 fois .
Build Clé serveur VPN

Créer la clé pour votre client VPN dans mon exemple le client s'appelle RPI2.
Définir un mot de passe qu'il faudra taper 2 fois pour éviter les erreurs.
./build-key-pass MONCLIENT1
Génération clé avec mot de passe client OpenVPN
Répondre Y (yes) 2 fois .
Génération clé avec mot de passe client OpenVPN

• Pour terminer la génération des certificats en tapant :
./build-dh
Cette étape peut être longue en fonction du type de chiffrement choisis (1024, 2048 ou 4096 bits).
generation certificat key openVPN

• Pour Générer les fichiers de configuration du serveur OpenVPN :
sudo nano /etc/openvpn/openvpn.conf

Taper les réglages suivants :
dev tun
proto udp
port 1194
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh2048.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.4.4"
push "dhcp-option DNS 8.8.8.8"
log-append /var/log/openvpn
persist-key
persist-tun
user nobody
group nogroup
status /var/log/openvpn-status.log
verb 3
client-to-client
comp-lzo
configuration serveur OpenVPN
• Pour quitter en enregistrant, pour cela il faut appuyer sur les touches Ctrl+X puis , répondre Y (yes) à la question pour modifier le fichier, valider en appuyant sur Entrée Entrée.


Créer un fichier qui contiendra un script dans "/etc/init.d/rpivpn" :
sudo nano /etc/init.d/rpivpn
• Le script permettra au client du tunnel VPN de se connecter sur internet, il doit contenir :
#! /bin/sh
### BEGIN INIT INFO
# Provides: rpivpn
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: VPN initialization script
### END INIT INFO
echo 'echo "1" > /proc/sys/net/ipv4/ip_forward' | sudo -s
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
script connexion internet client VPN
MASQUERADE
• Pour quitter en enregistrant, pour cela appuyer sur les touches Ctrl+X puis , répondre Y (yes) à la question pour modifier le fichier, valider en appuyant sur Entrée Entrée.


Ajouter les droits au script et l'affecter en script Init.
sudo chmod +x /etc/init.d/rpivpn
sudo update-rc.d rpivpn defaults

Lancer le script et relancer le serveur OpenVPN.
sudo /etc/init.d/rpivpn
sudo /etc/init.d/openvpn restart
exécution script redémarrage client VPN

Créer le fichier .ovpn du client VPN :
cd /etc/openvpn/easy-rsa/keys

Editer le fichier .ovpn du client VPN :
nano MONCLIENT1.ovpn


Taper en adaptant les paramètres suivants :
dev tun
client
proto udp
remote IP_ROUTEUR_ADSL 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert MONCLIENT1.crt
key MONCLIENT1.key
comp-lzo
verb 3
parametres client openVPN

Installer l'application Zip :
apt-get install zip
installation paquet Zip

Compresser les fichiers Client :
zip /home/pi/MONCLIENT1.zip ca.crt MONCLIENT1.crt MONCLIENT1.key MONCLIENT1.ovpn
compression Zip Client OpenVPN

Se connecter à la raspberry pi avec le logiciel WinSCP WinSCP pour télécharger sur votre ordinateur les fichiers de configuration du client OpenVPN :
WinSCP connexion raspberry PI

Télécharger le fichier MONCLIENT1.zip sur votre ordinateur.
Télécharger le fichier Zip du client OpenVPN

Terminal 2. Client OpenVPN :

On va maintenant utiliser la seconde raspberry Pi en tant que client, pour cela il faudra suivre les étapes suivantes : Client VPN raspberry pi
Configuration pour le client OpenVPN

Terminal Etape à suivre :

Se connecter en SSH avec putty (Login + mot de passe).
Connexion SSH Putty

Mettre à jour la Raspberry Pi.
sudo apt-get update
sudo apt-get upgrade

Installer openVPN sur votre Raspberry Pi.
sudo apt install openvpn
Installation OpenVPN
Répondre Y (yes) à la question pour utiliser l'espace de disque.


• Pour empêcher le lancement d'OpenVPN au démarrage de la Raspberry PI taper :
sudo update-rc.d -f openvpn remove

Lancer WinSCP WinSCP pour transférer sur la Raspberry Pi les fichiers de configuration du client OpenVPN :
connexion WinSCP

Créer un nouveau répertoire "VPN" dans "/home/pi/VPN" :
créer nouveau dossier


Aller dans le répertoire VPN crée :
cd /home/pi/VPN
dir VPN


Lancer OpenVPN avec la configuration adaptée "ma_config_OpenVPN.ovpn" pour moi c'est MONCLIENT1.ovpn puis taper le mot de passe (Password)du client VPN :
sudo openvpn --config MONCLIENT1.ovpn
password client OpenVPN


• Une erreur survient :
ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such device (errno=19)
ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such device (errno=19)


• Pour résoudre le problème il faut redémarrer la Raspberry Pi pour éteindre la Raspberry Pi, taper :
sudo shutdown -h now


Redémarrer la Raspberry PI, puis relancer la connexion au serveur VPN :
cd /home/pi/VPN
sudo openvpn --config MONCLIENT1.ovpn
connexion au serveur OpenVPN


• Pour voir les clients connectés au serveur OpenVPN (openvpn-status.log est dans le répertoire /var/log/) :
sudo nano /var/log/openvpn-status.log
statut log client OpenVPN


• Vous pourrez à présent accéder à votre Raspberry Pi Client 1 (placée derrière le routeur 4G) à partir de n'importe quel autre appareil (client 2) en utilisant la connexion sécurisée VPN.
illustration connexion client 2 vers client 1



Terminal 3. Aide mémoire des commandes du terminal :

• Pour désinstaller OpenVPN, répondre Y (yes) à la question pour libérer l'espace de disque :
sudo apt-get autoremove openvpn

• Pour désinstaller OpenSSL, répondre Y (yes) à la question pour libérer l'espace de disque :
sudo apt-get autoremove openssl

• Pour supprimer un fichier (il faut être placé dans le dossier du fichier).
sudo rm NOM_DU_FICHIER

• Pour supprimer un répertoire.
sudo rm -r /CHEMIN/DU/REPERTOIRE

• Pour redémarrer la Raspberry PI.
sudo shutdown -r now

• Pour arrêter la Raspberry PI.
sudo shutdown -h now

Si vous êtes à la recherche d'un fournisseur VPN, vous pouvez consulter l'article NordVPN Avis et Test qui peut vous aider à faire votre choix.
Il liste toutes les applications compatibles proposées sur les différentes plateformes ordinateur, smartphone ou tablette et les multiples systèmes d'exploitation compatibles : Android, iOS, Windows, Mac, etc.
L'article détaille également dans un descriptif toutes les fonctionnalités et caractéristiques de ce fournisseur, telles les connexions multiples, l'accès à Netflix, le cache de l'adresse IP, les nombreux serveurs disponibles à la fois rapides et sécurités, la disponibilité dans divers pays, le double cryptage pour garantir une sécurité optimale.

📌 Politique de Confidentialité | Cet article peut inclure des liens d'affiliation, notamment des liens Amazon (programme Partenaire Amazon EU)
ou du contenu sponsorisé me permettant de tester du matériel récent et de couvrir les frais d'hébergement du site.
Si vous aimez les articles et pour soutenir le développement du site c'est ici !