[TUTO] Création d'un serveur et clientVPN 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.
L'objectif de ce tutoriel est de créer un réseauvirtuelprivé (VPN).
Possédant un routeur 4G (TP-LinkMR200)
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.
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ù.
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.
Le serveur VPN est placé sous un routeur ADSL classique (box ADSL) et le client VPN sous un routeur 4G.
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.
Ce problème est contournable en créant un VPNVirtual Private Network (Réseau Privé Virtuel), un tunnel chiffré par lequel transiteront toutes nos données.
1. ServeurOpenVPN :
On va utiliser la première raspberry Pi en tant que serveur, pour cela il faudra suivre les étapes suivantes :
• Mettre à jour la Raspberry Pi, répondreY (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épondreY (yes) à la question pour utiliser l'espace de disque. sudo apt-get install openvpn openssl
• 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
• Editer le fichier présent dans le répertoire ("/etc/openvpn/easy-rsa/vars") : sudo nano /etc/openvpn/easy-rsa/vars
• Remplacer la ligne export EASY_RSA="'pwd' par export EASY_RSA="/etc/openvpn/easy-rsa". export EASY_RSA="/etc/openvpn/easy-rsa"
• 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
• Il est possible d'adapter selon votre localisation les données suivantes (non obligatoire).
• Pour quitter il faut appuyer sur les touches puis
, répondreY (yes) à la question pour modifier le fichier,
valider en appuyant sur 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épondreY (yes) 2 fois .
• 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
• RépondreY (yes) 2 fois .
• 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).
• 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
• Pour quitter en enregistrant, pour cela il faut appuyer sur les touches puis
, répondreY (yes) à la question pour modifier le fichier,
valider en appuyant sur 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
MASQUERADE
• Pour quitter en enregistrant, pour cela appuyer sur les touches puis
, répondreY (yes) à la question pour modifier le fichier,
valider en appuyant sur 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
• 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
• Installer l'application Zip : apt-get install zip
• Compresser les fichiers Client : zip /home/pi/MONCLIENT1.zip ca.crt MONCLIENT1.crt MONCLIENT1.key MONCLIENT1.ovpn
• Se connecter à la raspberry pi avec le logiciel WinSCP pour
télécharger sur votre ordinateur les fichiers de configuration du client OpenVPN :
• Télécharger le fichier MONCLIENT1.zip sur votre ordinateur.
2. ClientOpenVPN :
On va maintenant utiliser la seconde raspberry Pi en tant que client, pour cela il faudra suivre les étapes suivantes :
Etape à suivre :
• Se connecter en SSH avec putty (Login + mot de passe).
• Mettre à jour la Raspberry Pi. sudo apt-get update sudo apt-get upgrade
• RépondreY (yes) à la question pour utiliser l'espace de disque.
• Pour empêcher le lancement d'OpenVPN au démarrage de la Raspberry PItaper : sudo update-rc.d -f openvpn remove
• LancerWinSCP pour
transférer sur la Raspberry Pi les fichiers de configuration du client OpenVPN :
• Créer un nouveau répertoire "VPN" dans "/home/pi/VPN" :
• Aller dans le répertoire VPN crée : cd /home/pi/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 clientVPN : sudo openvpn --config MONCLIENT1.ovpn
• Une erreur survient : 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
• Pour voir les clients connectés au serveurOpenVPN (openvpn-status.log est dans le répertoire /var/log/) : sudo nano /var/log/openvpn-status.log
• 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.
3.Aidemémoire des commandes du terminal :
• Pour désinstallerOpenVPN, répondreY (yes) à la question pour libérer l'espace de disque : sudo apt-get autoremove openvpn
• Pour désinstallerOpenSSL, répondreY (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 du contenu sponsorisé et rémunérédes, des liens d'affiliation, notamment des liens Amazon (programme Partenaire Amazon EU) me permettant de toucher une commission au pourcentage sur la vente des produits affiliés (sans augmentation de prix pour l'acheteur).
❤️💟 Si vous aimez les articles et pour soutenir le développement du site n'hésitez pas à partager sur les réseaux sociaux