Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
client_openvpn [Le 17/08/2009, 20:06] – Zenigata | client_openvpn [Le 02/09/2019, 14:41] (Version actuelle) – [Sans interface graphique] 86.253.24.222 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ====== Client OpenVPN ====== | ||
+ | Le client OpenVPN permet de se connecter à un réseau privé virtuel [[: | ||
+ | Ce type de réseau est [[: | ||
+ | |||
+ | ===== Installation ===== | ||
+ | |||
+ | Pour installer le client OpenVPN, il suffit | ||
+ | On pourra aussi [[: | ||
+ | |||
+ | ===== Configuration ===== | ||
+ | ==== Sans interface graphique ==== | ||
+ | |||
+ | Pour définir une connexion à un VPN, il faut 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 [[: | ||
+ | L' | ||
+ | |||
+ | 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. | ||
+ | ############################################## | ||
+ | |||
+ | # précise le mode client | ||
+ | client | ||
+ | |||
+ | # le type d' | ||
+ | dev tap | ||
+ | ;dev tun | ||
+ | |||
+ | # défini le protocole (comme définit par le serveur) | ||
+ | proto tcp | ||
+ | ;proto udp | ||
+ | |||
+ | # adresse publique du serveur (adresse IP ou nom du serveur) et port (1194 par défaut) | ||
+ | remote | ||
+ | |||
+ | # 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 | ||
+ | |||
+ | # vérification du certificat serveur | ||
+ | remote-cert-tls server | ||
+ | |||
+ | # si le serveur utilise une clé tls- | ||
+ | tls-auth ta.key 1 | ||
+ | |||
+ | </ | ||
+ | ==== Avec network-manager-openvpn ==== | ||
+ | |||
+ | Un clic sur l' | ||
+ | |||
+ | Sur Xubuntu 16.04 (au moins) il faut ajouter le paquet | ||
+ | |||
+ | Pour une utilisation basique, ou si les réglages envoyés par le serveur au client vous conviennent ce moyen est suffisant. | ||
+ | |||
+ | À noter que le plugin propose d' | ||
+ | |||
+ | < | ||
+ | Depuis Maverick Meerkat (10.10), il faut activer la compression LZO dans les paramètres avancés, sinon vous ne pourrez pas avoir accès à Internet, quand bien même vous seriez connecté à votre VPN. | ||
+ | </ | ||
+ | |||
+ | ==== Avec kvpnc ==== | ||
+ | |||
+ | Kvpnc est une interface graphique très complète pour gérer de nombreux types de VPN. Elle vous permettra de configurer presque aussi finement votre configuration qu'en éditant à la main le fichier de configuration. Il prend notament en charge les scripts up et down qui peuvent être nécessaires dans certains cas et permet même d'en générer automatiquement. | ||
+ | |||
+ | Kvpnc permet en outre d' | ||
+ | |||
+ | ==== Avec gopenvpn ==== | ||
+ | |||
+ | Si vous voulez utiliser une interface graphique simple, légère, uniquement pour la connexion et la déconnexion et non pour la configuration de votre VPN, gopenvpn est probablement fait pour vous. Il s'agit d'un petit programme se mettant dans le //tray// d' | ||
+ | |||
+ | Il existe un paquet binaire pour Jaunty (9.04), malheureusement, | ||
+ | |||
+ | < | ||
+ | cd ~ | ||
+ | svn co https:// | ||
+ | cd gopenvpn | ||
+ | ./ | ||
+ | intltoolize | ||
+ | ./configure | ||
+ | make | ||
+ | sudo make install | ||
+ | </ | ||
+ | |||
+ | Si vous utilisez Unity, il vous faudra ajouter l' | ||
+ | |||
+ | < | ||
+ | gsettings set com.canonical.Unity.Panel systray-whitelist " | ||
+ | </ | ||
+ | |||
+ | ==== Avec l' | ||
+ | |||
+ | Certains fournisseurs tels que [[https:// | ||
+ | ==== Routage ==== | ||
+ | |||
+ | Il y a certaines options qui vont vous permettre de définir la table de routage pour votre connexion en fonction de ce que vous donnera le serveur vpn. | ||
+ | |||
+ | Classiquement, | ||
+ | |||
+ | Le serveur vpn peut envoyer certaines directives de routage, qui peuvent être suivies ou non. //A priori// openvpn ne les suit pas sans qu'on le lui demande, network-manager-openvpn semble les suivre et kvpnc se comporte plutôt comme openvpn. | ||
+ | |||
+ | Pour refuser les directives de routage du serveur, il suffit de passer l' | ||
+ | |||
+ | '' | ||
+ | |||
+ | Il est à noter que dans le fichier de configuration d' | ||
+ | |||
+ | Ainsi pour diriger le traffic destiné au vpn par la passerelle du vpn, on pourra rentrer un | ||
+ | |||
+ | '' | ||
+ | (en général les vpn sont configurés de telle sorte que 10.0.0.0 255.0.0.0 soit le réseau auquel on accède) | ||
+ | |||
+ | ===== Utilisation ===== | ||
+ | Pour se connecter au VPN, il faut lancer dans un terminal | ||
+ | |||
+ | < | ||
+ | |||
+ | Si l'on veut passer des paramètres optionnels à openvpn, on doit alors spécifier aussi l' | ||
+ | |||
+ | On notera qu'il faut les droits d' | ||
+ | |||
+ | Avec network-manager, | ||
+ | |||
+ | Avec kvpnc, votre mot de passe est demandé au lancement de l' | ||
+ | |||
+ | ---- | ||
+ | |||
+ | // | ||
+ | |||
+ | ===== Sécurisation ===== | ||
+ | Le serveur VPN peut se déconnecter intempestivement, | ||
+ | En voici un basé sur la publication | ||
+ | |||
+ | < | ||
+ | #!/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:// | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | #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() | ||
+ | { | ||
+ | # | ||
+ | # | ||
+ | transmission-gtk & | ||
+ | |||
+ | # | ||
+ | # | ||
+ | programID=$(pidof transmission-gtk) # | ||
+ | } | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | nameVPN=" | ||
+ | # | ||
+ | # | ||
+ | myIPext=" | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | #==== Test etat VPN ==== | ||
+ | function testVPN() | ||
+ | #if vpn connected | ||
+ | { | ||
+ | connected=$(nmcli con status | awk -v nVPN=$nameVPN ' | ||
+ | |||
+ | if [ " | ||
+ | vpnuuid=$(nmcli con status | awk -v nVPN=$nameVPN ' | ||
+ | vpn=1 | ||
+ | else | ||
+ | vpn=0 | ||
+ | fi | ||
+ | } | ||
+ | |||
+ | #==== Test etat VPN ==== | ||
+ | function rwaitIPext() | ||
+ | { | ||
+ | IPext=$myIPext | ||
+ | vpn=0 | ||
+ | testVPN | ||
+ | |||
+ | while [ " | ||
+ | do | ||
+ | while [ " | ||
+ | do | ||
+ | sleep 5 | ||
+ | testVPN | ||
+ | done | ||
+ | nmcli -p con up uuid $vpnuuid # | ||
+ | # essai sur un 2eme site si le premier est out | ||
+ | | ||
+ | if [ " | ||
+ | | ||
+ | fi | ||
+ | if [ " | ||
+ | IPext=$myIPext | ||
+ | fi | ||
+ | if [ " | ||
+ | break | ||
+ | fi | ||
+ | sleep 10 # attente que le vpn soit effectif | ||
+ | done | ||
+ | } | ||
+ | |||
+ | |||
+ | #==== VPN nok ==== | ||
+ | function nokVPN() | ||
+ | { | ||
+ | date | ||
+ | echo "VPN disconnected. Stoping VPN dependancies" | ||
+ | if [ " | ||
+ | kill -SIGKILL $programID # | ||
+ | fi | ||
+ | echo "VPN dependancies stopped." | ||
+ | jobs | ||
+ | rwaitIPext # | ||
+ | echo "VPN dependencies restarted." | ||
+ | lanceprocess # | ||
+ | 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 # | ||
+ | lanceprocess | ||
+ | |||
+ | while true; do | ||
+ | testVPN | ||
+ | if [ $vpn = 1 ]; then | ||
+ | okVPN | ||
+ | else | ||
+ | nokVPN | ||
+ | fi | ||
+ | done | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | * recopier le code dans un fichier texte (// | ||
+ | * 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 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, | ||
+ | |||
+ | |||