On peut déjà constater l'usage par des étudiants et des universitaires d'un client VPN Libre compatible avec le Client VPN Cisco Systems® : le Client VPN Vpnc.
Comparé au client VPN Cisco Systems®, la procédure d'installation est plus simple. Mais l'avantage principal réside dans le fait que la connexion VPN reste fonctionnelle même après les mises à jour du noyau système, contrairement au Client VPN Cisco Systems®.
À titre d'information, nous décrivons une procédure générique pour Debian/Ubuntu issue de diverses sources disponibles sur Internet (sites Web d'universités, forums, blogs, etc.).
Installez le paquet vpnc
Pour utiliser l'interface graphique dans les paramètres de gnome installez également network-manager-vpnc-gnome
Votre administrateur vous a peut-être fournis les infos qui composent le
IPSec gateway <gateway.to.use> IPSec ID <groupname> IPSec secret <passwordforgroup> Xauth username <myusername> Xauth password <mypassword>
Le poste étant connecté à Internet, on place le fichier-profil Cisco Systems® avec l'extension « .pcf » correspondant au fournisseur de réseau VPN dans son Dossier personnel (le répertoire /home/NOM_DE_L'UTILISATEUR ). Puis on lance un terminal et on tape :
/usr/share/vpnc/pcf2vpnc NOM_DU_PROFIL_CISCO.pcf
/usr/bin/pcf2vpnc 'Chemin/et/NOM_DU_PROFIL_CISCO.pcf'
Le résultat ressemble a ceci :
## generated by pcf2vpnc IPSec ID XXXXX IPSec gateway XXX.XXX.XXX.XXX IPSec secret XXXXXXXX IKE Authmode psk ## To add your username and password, ## use the following lines: # Xauth username <your username> # Xauth password <your password>
host ADRESSE_DU_SITE_WEB
On sauvegarde le résultat dans un fichier texte simple en lui rajoutant une extension « .conf » : le profil Vpnc est créé.
Pour la suite de ce tutoriel, nous nommerons ce fichier "vpn.conf".
vpnc: no response from target
vous pouvez améliorer vos chances de connexion en ajoutant :
NAT Traversal Mode cisco-udp
à la fin du fichier vpn.conf
On place en tant que super-utilisateur le fichier-profil « vpn.conf » dans le répertoire « /etc/vpnc/ ».
Une commande dans un Terminal permet de copier simplement le fichier vpn.conf depuis son Dossier personnel (le répertoire /home/NOM_DE_L'UTILISATEUR ).
sudo cp vpn.conf /etc/vpnc/
Le client Vpnc peut être lancé en tapant ces lignes dans un Terminal :
sudo vpnc vpn.conf
(On remarquera que l'extension .conf n'est pas obligatoire ).
/etc/vpnc/default.conf
" qui pointe vers votre fichier "vpn.conf
", alors pour se connecter il suffira de taper:sudo vpnc
sudo vpnc-disconnect
On crée un Lanceur-raccourcis en cliquant avec le bouton droit de la souris sur le bureau puis « Créer un Lanceur » puis en entrant comme commande :
gksudo "xterm -e vpnc-connect --no-detach vpn.conf"
Quand on clique sur le lanceur-raccourcis une demande de mot de passe super-utilisateur apparaît puis un Terminal avec les demandes d'identifiant et mot de passe VPN (le mot de passe ne s'affiche pas quand on le tape, c'est normal). Valider à chaque fois en tapant sur Entrée. La connexion est établie si la phrase "VPNC started in foreground…" s'affiche et elle se termine si l'on ferme la fenêtre du Terminal.
Cette solution permet de lancer une déconnexion avant de relancer une nouvelle connexion, notamment utile si votre débit est faible et que la connexion est instable. Bien sûr vous pouvez ajouter d'autres commandes dans ce script.
On crée un dossier vpn et le fichier de connexion dans le répertoire home:
mkdir ~/vpn && touch ~/vpn/vpn.sh
Ensuite on remplit le fichier texte contenant les commandes :
echo -e 'vpnc-disconnect\nxterm -e vpnc-connect vpn.conf\n' | tee ~/vpn/vpn.sh
pour voir le résultat :
cat ~/vpn/vpn.sh
Puis on crée un Lanceur-raccourcis en cliquant avec le bouton droit de la souris sur le bureau puis « Créer un Lanceur » puis en entrant comme commande :
gksudo bash /home/NOM_DE_VOTRE_SESSION/vpn/vpn.sh
(gksudo
est remplacé par kdesu
si on est sous KDE)
On utilise Kvpnc ou l'extension VPN de Network-manager (#aptitude install network-manager-vpnc)
NB : cette dernière solution peut ne pas fonctionner avec certains systèmes et pilotes de cartes WIFI.
Après avoir installé vpnc et converti le profil Cisco System®, ouvrir le Network-manager et aller dans l'onglet vpn.
Cliquer sur Ajouter
Dans le menu déroulant choisir VPN Compatible Cisco (vpnc)
Enter un nom voulu pour la connexion vpn et compléter en utilisant les informations récoltées dans le terminal :
Dans le second onglet, Paramètre IPv4, sous ID client DHCP, entrer : dh2
Clquer sur Valider et c'est configuré.
Pour se connecter, il suffit d'un petit clic gauche sur l'icône de connexion, et choisir la connexion vpn fraîchement configurée.
--- nm-vpnc-service.conf.fixed 2009-04-18 17:56:45.000000000 -0500 +++ nm-vpnc-service.conf 2009-04-18 17:57:37.000000000 -0500 @@ -6,6 +6,10 @@ <allow own="org.freedesktop.NetworkManager.vpnc"/> <allow send_destination="org.freedesktop.NetworkManager.vpnc"/> </policy> + <policy user="at_console"> + <allow own="org.freedesktop.NetworkManager.vpnc"/> + <allow send_destination="org.freedesktop.NetworkManager.vpnc"/> + </policy> <policy context="default"> <deny own="org.freedesktop.NetworkManager.vpnc"/> <deny send_destination="org.freedesktop.NetworkManager.vpnc"/>
vpnc-connect: peer selected (single) DES as "encrytion" method. This algorithm is considered to weak today If your vpn concentrator admin still insists on using DES use the "--enable-1des" option.
Utiliser l'option Faible dans Méthode de chiffrement
use the "--enable-no-encryption" option.
Utiliser l'option Aucun dans Méthode de chiffrement
use the "--natt-mode cisco-udp" option.
Utiliser l'option UDP Cisco dans Traversée du NAT
use the "--natt-mode none" option.
Utiliser l'option Désactivé dans Traversée du NAT
Il se peut que le logiciel vpnc demande deux mots de passe :
root@pc:/etc/vpnc# vpnc-connect vpn.conf Enter username for xxx.xxx.xxx.xxx: xxxx Enter password for xxxx@xxx.xxx.xxx.xxx: Password for VPN xxxx@xxx.xxx.xxx.xxx: Password for VPN xxxx@xxx.xxx.xxx.xxx: vpnc-connect: authentication unsuccessful
Ceci veut dire que vous avez fait une erreur dans votre login ou mot de passe.
Exemple d'erreur (un peu tordue) de login :
Sur un domaine Windows, il faut parfois écrire dans le fichier de conf.
Xauth username nom_du_domaine\utilisateur
au lieu et place de
Xauth username utilisateur Domain nom_du_domaine
L'interface graphique de firestarter ne permet pas d'autoriser les flux lorsque vpnc est lancé. Il faut modifier le fichier /etc/firestarter/user-pre pour qu'il contienne les commandes iptables suivantes:
iptables -A INPUT -j ACCEPT -s w.x.y.z -p esp iptables -A INPUT -j ACCEPT -s w.x.y.z -p udp -m multiport --sports isakmp,10000 iptables -A INPUT -j ACCEPT -i tun+ iptables -A OUTPUT -j ACCEPT -d w.x.y.z -p esp iptables -A OUTPUT -j ACCEPT -d w.x.y.z -p udp -m multiport --dports isakmp,10000 iptables -A OUTPUT -j ACCEPT -o tun+
il faut remplacer w.x.y.z par l'adresse IP de votre passerelle IPSEC. Il faut autoriser le protocole esp (données encryptées) dans les 2 sens. Il faut autoriser IKE (isakmp) dans le sens PC→passerelle. Certaines configurations de passerelles utilisent le port UDP/10000 pour encapsuler le flux ESP. Au lancement de firestarter, ces commandes sont prises en compte, et les connexions IPSEC sont autorisées.
Dans un cas courant, il peut être utile de se connecter automatiquement à l'ouverture de la session utilisateur de la machine (en supposant que l'interface réseau est déjà initialisée). Pour atteindre cet objectif, une des solutions consiste à créer un petit programme qui sera exécuté en root par l'utilisation du bit setuid. Son rôle est de placer aussi l'EUID, le GID et l'EGID à 0 (root), de sorte à pouvoir lancer vpnc à partir de l'espace utilisateur.
Le code source du programme, baptisé usvpnc pour l'occasion (User-Space vpnc), est le suivant :
/******************************************************************************* * * Lanceur du client VPN Cisco vpnc en user-space * Les options en ligne de commande sont passees directement a vpnc * * Le binaire resultant de la compilation de ce code doit appartenir a * l'utilisateur root et avoir son bit setuid a 1. * * == Rappels == * * Pour compiler: gcc -Wall -o usvpnc usvpnc.c * * Pour changer les droits: (en root) chown root:root usvpnc * chmod u+s usvpnc * * Il est ensuite possible de placer l'exécutable dans /usr/sbin (pour faire * plus propre), puis de l'ajouter dans Système->Préférences->Session (sous * Gnome). * ******************************************************************************/ #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <sys/types.h> int main(int argc, char **argv) { // UID est deja a 0 (=root) avec le bit setuid sur le binaire // placement de UID, GID et EGID a 0 aussi setuid(0); setgid(0); setegid(0); // positionnement de argv[0] a la valeur "vpnc" argv[0] = "vpnc"; // execution de vpnc execvp("vpnc", argv); // execute si le exec() s'est mal termine fprintf(stderr, "Impossible d'executer vpnc\n"); return EXIT_FAILURE; }
Copiez ce code dans un fichier usvpnc.c et ouvrez un terminal. Si vous n'avez pas le paquet build-essential, installez-le : . Puis, placez vous dans le répertoire ou vous avez créé usvpnc.c et compilez-le avec la commande suivante :
gcc -Wall -o usvpnc usvpnc.c
Passez ensuite dans un terminal root et placez les droits adaptés sur le fichier :
chown root:root usvpnc chmod u=rws,g=rx,o=rx usvpnc
Au passage, vous pouvez le copier dans un des répertoires standard :
cp usvpnc /usr/local/sbin chmod u=rws,g=rx,o=rx /usr/local/sbin/usvpnc
Et voila ! Vous pouvez désormais utiliser la commande usvpnc à partir d'un terminal utilisateur (non administrateur) avec les même arguments que la commande vpnc (ils sont passés de manière transparente). Une des utilisations possible est de configurer Gnome pour lancer la connexion VPN automatiquement au démarrage de la session (Système→Préférences→Session→Ajouter) :
Contributeurs : andatiep, NerOlph, Mike17, wsmind, guigouz, …