Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
client_openvpn [Le 20/08/2013, 15:37]
82.249.147.161 [Utilisation]
client_openvpn [Le 14/05/2018, 21:39] (Version actuelle)
51.15.49.134 [Installation]
Ligne 1: Ligne 1:
-{{tag>​vpn réseau sécurité vétuste}}+{{tag>brouillon ​vpn réseau sécurité vétuste}}
  
 ---- ----
  
 ====== Client OpenVPN ====== ====== Client OpenVPN ======
-Le client OpenVPN permet de se connecter à un réseau privé virtuel sur lequel tourne un serveur OpenVPN. Ce type de réseau est fréquemment utilisé pour permettre un accès protégé à des réseaux d'​entreprise à partir de n'​importe quelle connexion internet. On pourra citer d'​autres types de VPN comme les VPN Cisco, IPSEC, PPTP, L2TP et SSH. Les plus répandus étant les Cisco (éventuellement propriétaire) et les OpenVPN+Le client OpenVPN permet de se connecter à un réseau privé virtuel ​[[:​vpn|VPN]] ​sur lequel tourne un serveur ​[[:OpenVPN]].\\ 
 +Ce type de réseau est [[:​vpn#​differentes_utilisations_de_vpn|fréquemment utilisé]] pour permettre un accès protégé à des réseaux d'​entreprise à partir de n'​importe quelle connexion internet. On pourra citer d'​autres types de VPN comme les VPN Cisco, IPSEC, PPTP, L2TP et SSH. Les plus répandus étant les Cisco (éventuellement propriétaire) et les OpenVPN
  
 ===== Installation ===== ===== Installation =====
  
-Pour installer le client OpenVPN, il suffit ​ d'​[[:​tutoriel:​comment_installer_un_paquet|installer le paquet]] **[[apt://​openvpn|openvpn]]** disponible dans les dépôts officiels. On pourra aussi [[:​tutoriel:​comment_installer_un_paquet|installer le paquet]] **[[apt://​network-manager-openvpn|network-manager-openvpn]]** ​(pour Ubuntu) ou [[:​tutoriel:​comment_installer_un_paquet|installer le paquet]] **[[apt://​kvpnc|kvpnc]]** (Kubuntu) ​pour avoir une interface graphique qui permet de simplifier l'​utilisation. +Pour installer le client OpenVPN, il suffit ​ d'​[[:​tutoriel:​comment_installer_un_paquet|installer le paquet]] **[[apt://​openvpn|openvpn]]** disponible dans les dépôts officiels.\\ 
- +On pourra aussi [[:​tutoriel:​comment_installer_un_paquet|installer le paquet]] **[[apt://​network-manager-openvpn|network-manager-openvpn]]** pour avoir une interface graphique qui permet de simplifier l'​utilisation.
  
 ===== Configuration ===== ===== Configuration =====
 ==== Sans interface graphique ==== ==== Sans interface graphique ====
  
-Pour définir une connexion à un VPN, il faut écrire ​un fichier contenant certaines informations. ​On pourra trouver des exemples de fichiers de configuration dans le dossier ​/usr/share/doc/openvpn/examples/​sample-config-files.+Pour définir une connexion à un VPN, il disposer d'un fichier contenant certaines informations. 
 +Ce fichier sera généralement fourni avec vos certificats et clés par le service informatique ou le fournisseur gérant le [[:​OpenVPN|serveur]]\\ 
 +L'​exemple de fichier client officiel se trouve : [[https://github.com/OpenVPN/openvpn/blob/​master/​sample/​sample-config-files/​client.conf|github/​OpenVPN/​client.conf]]
  
-Les champs les plus importants de ce fichier sont +Les champs les plus importants de ce fichier sont
 +<file - client.conf>​ 
 +##############################################​ 
 +# Sample client-side OpenVPN 2.0 config file # 
 +# for connecting to multi-client server. ​    # 
 +#                                            # 
 +# This configuration can be used by multiple # 
 +# clients, however each client should have   # 
 +# its own cert and key files. ​               # 
 +##############################################​
  
-**remote** ​ (hôte abritant ​le nœud d'​entrée)+# précise ​le mode client 
 +client
  
-**dev** (tun ou tap)+# le type d'​interface ​tun ou tap (comme définit par le serveur) 
 +dev tap 
 +;dev tun
  
-**proto** ​(udp ou tcp)+# défini le protocole ​(comme définit par le serveur) 
 +proto tcp 
 +;proto udp
  
-**comp-lzo** ​(compression lzo)+# adresse publique du serveur ​(adresse IP ou nom du serveuret port (1194 par défaut) 
 +remote ​ my-server-1 1194
  
-**fragment**+# les certificats et clés, le certificat et la clé client peuvent être communs à plusieurs clients (comme ci-dessous) 
 +# ou personnalisé (par exemple: mon_nom.crt et mon_nom.key) 
 +ca ca.crt 
 +cert client.crt 
 +key client.key
  
-**ca** (fichier ​certificat)+# vérification du certificat ​serveur 
 +remote-cert-tls server
  
-**ns-cert-type**+# si le serveur utilise une clé tls- 
 +tls-auth ta.key 1 
 + 
 +</​file>​
 ==== Avec network-manager-openvpn ==== ==== Avec network-manager-openvpn ====
  
 Un clic sur l'​icône de network-manager montre un champ **Connexions VPN**, qui permet de configurer le VPN. L'​interface est assez intuitive, mais aussi assez limitée par rapport aux nombreuses options disponibles dans le fichier de configuration. Un clic sur l'​icône de network-manager montre un champ **Connexions VPN**, qui permet de configurer le VPN. L'​interface est assez intuitive, mais aussi assez limitée par rapport aux nombreuses options disponibles dans le fichier de configuration.
 +
 +Sur Xubuntu 16.04 (au moins) il faut ajouter le paquet ​ [[apt>​network-manager-openvpn-gnome|network-manager-openvpn-gnome]] pour que l'​interface propose un VPN de type openvpn ou l'​importation d'un fichier de configuration openvpn.
  
 Pour une utilisation basique, ou si les réglages envoyés par le serveur au client vous conviennent ce moyen est suffisant. Pour une utilisation basique, ou si les réglages envoyés par le serveur au client vous conviennent ce moyen est suffisant.
Ligne 58: Ligne 85:
 <​code>​ <​code>​
 cd ~ cd ~
-svn co https://gopenvpn.svn.sourceforge.net/svnroot/gopenvpn gopenvpn +svn co https://​svn.code.sf.net/p/gopenvpn/svn/trunk/gopenvpn gopenvpn 
-cd gopenvpn/​trunk/​gopenvpn+cd gopenvpn
 ./​autogen.sh ./​autogen.sh
 intltoolize intltoolize
 ./configure ./configure
-sed -i s/'#​define USE_GKSU 1'//g config.h 
 make make
 sudo make install sudo make install
Ligne 73: Ligne 99:
 gsettings set com.canonical.Unity.Panel systray-whitelist "​`gsettings get com.canonical.Unity.Panel systray-whitelist |sed s/]/,\ \'​gopenvpn\'​]/​g`"​ gsettings set com.canonical.Unity.Panel systray-whitelist "​`gsettings get com.canonical.Unity.Panel systray-whitelist |sed s/]/,\ \'​gopenvpn\'​]/​g`"​
 </​code>​ </​code>​
 +
 +==== Avec l'​application propre ====
 +
 +Certains fournisseurs tels que [[https://​airvpn.org|AirVPN]] proposent leur propre interface graphique. C'est généralement la méthode la plus simple.
 ==== Routage ==== ==== Routage ====
  
Ligne 108: Ligne 138:
  
 //​Contributeurs principaux : [[:​utilisateurs:​gilles|Gilles]],​ [[:​utilisateurs:​Zenigata|Zenigata]].//​ //​Contributeurs principaux : [[:​utilisateurs:​gilles|Gilles]],​ [[:​utilisateurs:​Zenigata|Zenigata]].//​
 +
 +===== Sécurisation =====
 +Le serveur VPN peut se déconnecter intempestivement,​ ceci est gênant pour les clients VPN, lors de téléchargement de torrent(s) par exemple. Plusieurs solutions existent de type programme (vpnautoconnect) ou scripts
 +En voici un basé sur la publication ​   [[http://​ubuntuforums.org/​showthread.php?​t=1941380&​page=2]]
 +
 +<​code>#​--------------------------------------------------
 +#!/bin/bash
 +# auteur: alan524 --  06 Avril 2014
 +#
 +# surveillance de la liaison vpn 
 +#   -> arret du programme de transfert si le vpn se déconnecte
 +#   -> essai périodique de reconnexion vpn avec relance prpgramme
 +#
 +#​--------------------------------------------------
 +# ce programme est basé sur la note publiée ci-après:
 +#  --- cf  http://​ubuntuforums.org/​showthread.php?​t=1941380&​page=2
 +#​--------------------------------------------------
 +#
 +#
 +#
 +#Note: can not use a string to represent the program because the name 
 +#of the string will be stored as the job name instead of the program name.
 +#
 + function lanceprocess()
 + {
 +#​myprogram01 & # replace myprogram01 by program name 
 +#​qbittorrent &​ # ​
 +transmission-gtk &
 +
 +#​programID=`pidof myprogram01` #​ replace myprogram01 by program name 
 +#​programID=$(pidof qbittorrent) # ​
 +programID=$(pidof transmission-gtk) # ​
 + }
 +#
 +#​nameVPN="​myconnexionVPN"​ #​ replace myconnexionVPN by vpn name
 +#​nameVPN="​vyprvpn-PPTP"​ # ​
 +nameVPN="​mullvad_linux"​ # ​
 +#
 +#​myIPext="​xxx.xxx.xxx.xxx"​ #​ replace xxx par mon adresse ip externe (provider)
 +myIPext="​12.345.67.89"​
 +#​-----------------
 +#
 +#
 +#
 +#==== Test etat VPN ====
 + function testVPN()
 + #if vpn connected ​ vpn=1
 + {
 + connected=$(nmcli con status | awk -v nVPN=$nameVPN '​{if($1 == nVPN) {print $5;}; }')
 +
 + if [ "​$connected"​ = "​oui"​ ] || [ "​$connected"​ = "​yes"​ ]; then 
 + vpnuuid=$(nmcli con status | awk -v nVPN=$nameVPN '​{if($1 == nVPN) {print $2;}; }')
 + vpn=1
 + else
 + vpn=0
 + fi
 + }
 +
 +#==== Test etat VPN ====
 + function rwaitIPext()
 + {
 + IPext=$myIPext
 + vpn=0
 + testVPN
 +
 + while [ "​$IPext"​ = "​$myIPext"​ ]
 + do
 +    while [ "​$vpn"​ = 0 ]
 +     do
 +       sleep 5
 +       testVPN
 +    done
 +    nmcli -p con up uuid $vpnuuid #​Retry the VPN
 +    # essai sur un 2eme site si le premier est out
 +    ​IPext=$(wget -qO- www.adresseip.com | grep -Eo '​[0-9]{1,​3}(\.[0-9]{1,​3}){3}'​ | awk 'BEGIN {flag = 0}{if (flag == 0){print $1; flag = 1;}}')
 +    if [ "​$IPext"​ = ""​ ]; then 
 +    ​IPext=$(wget -qO- www.ipchicken.com | grep -Eo '​[0-9]{1,​3}(\.[0-9]{1,​3}){3}'​ | awk 'BEGIN {flag = 0}{if (flag == 0){print $1; flag = 1;}}')
 +    fi
 +    if [ "​$IPext"​ = ""​ ]; then 
 + IPext=$myIPext
 +    fi
 +    if [ "​$IPext"​ != "​$myIPext"​ ]; then 
 + break
 +    fi
 + sleep 10 # attente que le vpn soit effectif
 + done
 + }
 +
 +
 +#==== VPN nok ====
 + function nokVPN()
 + {
 + date
 + echo "VPN disconnected. Stoping VPN dependancies"​
 + if [ "​$programID"​ != 0 ]; then
 + kill -SIGKILL $programID #​Connection lost stop the VPN dependancy.
 + fi
 + echo "VPN dependancies stopped."​
 + jobs
 + rwaitIPext # ​ attente reconnexion
 + echo "VPN dependencies restarted."​
 + lanceprocess #​ relance du process
 + date
 + }
 +
 +#==== VPN OK ====
 + function okVPN()
 + {
 + sleep 1 # surveillance périodique 1 seconde
 + }
 +#​===================
 +#==== Main Proc ====
 +#​===================
 +#
 +#
 +programID=0
 +vpn=0
 +vpnuuid=''​
 +IPext=''​
 +
 + date
 + echo "-- lancement torrent --"
 + echo "-- Activation surveillance VPN --"
 +
 + rwaitIPext #​ connexion OK?
 + lanceprocess
 +
 +while true; do
 + testVPN
 + if [ $vpn = 1 ]; then 
 + okVPN ​
 + else ​
 + nokVPN ​
 + fi
 +done
 +
 +</​code>​
 +
 +
 +  * recopier le code dans un fichier texte  (//​veille-VPN.sh// ​ par exemple), ​
 +  * renseigner: votre adresse ip que vous voulez masquer sur internet, le nom de la connexion VPN ainsi que celui du processus a stopper en cas de défaut du serveur
 +  * sauvegarder le fichier en lui donnant les droits d’exécution
 +  * placer un raccourci sur le bureau.
 +
 +Son utilisation est simple:
 +  * Au niveau de la connexion ne pas cocher la case "​activer automatiquement"​ (fonction assurée par le script)
 +  * Activer le VPN (openVPN, PPTP) via le network manager
 +  * puis lancer dans un terminal le script crée
 +  * Tester le fonctionnement en déconnectant le VPN via le network manager: on constate l’arrêt de la transmission,​ la relance de la connexion puis la reprise du transfert.
 +
 +
 +
  • client_openvpn.1377005845.txt.gz
  • Dernière modification: Le 20/08/2013, 15:37
  • par 82.249.147.161