Différences
Ci-dessous, les différences entre deux révisions de la page.
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 15/08/2014, 14:48] 94.23.168.216 [Avec gopenvpn] BeAVeR |
||
---|---|---|---|
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 |
./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 99: | Ligne 98: | ||
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 107: | ||
//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. | ||
+ | |||
+ | |||
+ |