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
Prochaine révision Les deux révisions suivantes
client_openvpn [Le 28/07/2012, 14:33]
Youjin [Avec network-manager-openvpn]
client_openvpn [Le 09/04/2014, 16:10]
82.236.69.241 [Sécurisation]
Ligne 58: Ligne 58:
 <​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/​trunk/​gopenvpn
 ./​autogen.sh ./​autogen.sh
Ligne 99: Ligne 99:
 Si l'on veut passer des paramètres optionnels à openvpn, on doit alors spécifier aussi l'​option **--config** devant le nom du fichier de configuration. Parmi les option utiles, on remarquera **--auth-user-pass** qui permet de donner un fichier contenant le nom d'​utilisateur et le mot de passe, ce qui permet de ne pas avoir à rentrer ces derniers à l'​invite de commande, et donc de lancer plus facilement openvpn en tâche de fond. Si l'on veut passer des paramètres optionnels à openvpn, on doit alors spécifier aussi l'​option **--config** devant le nom du fichier de configuration. Parmi les option utiles, on remarquera **--auth-user-pass** qui permet de donner un fichier contenant le nom d'​utilisateur et le mot de passe, ce qui permet de ne pas avoir à rentrer ces derniers à l'​invite de commande, et donc de lancer plus facilement openvpn en tâche de fond.
  
-On notera qu'il faut les droits d'​administration pour se connecter, ce qui est normal car openvpn va créer une interface réseau virtuelle, la configurer avec ifconfig et changer les tables de routages.+On notera qu'il faut les droits d'​administration pour se connecter, ce qui est normal car openvpn va créer une interface réseau virtuelle, la configurer avec ifconfig et changer les tables de rout
  
 Avec network-manager,​ on évite d'​avoir son mot de passe à rentrer, ce plugin reposant sur un démon lancé au démarrage avec les privilèges d'​administration. Avec network-manager,​ on évite d'​avoir son mot de passe à rentrer, ce plugin reposant sur un démon lancé au démarrage avec les privilèges d'​administration.
Ligne 108: Ligne 108:
  
 //​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.txt
  • Dernière modification: Le 11/09/2022, 11:51
  • par moths-art