Posts Tagged ‘linux’

Problème Linux : Opensuse 11

mardi, janvier 20th, 2009

Les versions d’opensuse 11 ne prennent pas en compte l’application de la route vers le serveur VPN lors de l’établissement du cannal VPN. De fait la liaison finit par s’interrompre au bout de quelques minutes (lié au timeout des connexions).
Il faut donc ajouter manuellement la route :
route add -host le_serveur_vpn gw votre_passerelle_actuelle

problème Linux : route par défaut surnuméraire

lundi, décembre 8th, 2008

avant d’activer le VPN vous avez des routes du style :
172.21.7.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
0.0.0.0 172.21.7.254 0.0.0.0 UG 0 0 0 eth1

Une fois activé le VPN (sur l’interface WIFI) vous avez :
194.57.91.250 172.21.7.254 255.255.255.255 UGH 0 0 0 eth1
192.168.255.202 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
172.21.7.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 ppp0

Mais il est possible qu’une fois activé ipsec vous ayez les routes suivantes en sus :
0.0.0.0 0.0.0.0 128.0.0.0 U 0 0 0 eth1
128.0.0.0 0.0.0.0 128.0.0.0 U 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth1

Les deux premières routes sont complètement inutile et nuisible à votre connexion. Il faut donc s’en débarrasser avec les commandes suivantes :
route del -net 128.0.0.0 netmask 128.0.0.0
route del -net 0.0.0.0 netmask 128.0.0.0

Vous pouvez aussi aller modifier le fichier /etc/ipsec.conf en décommentant la ligne suivante :
include /etc/ipsec.d/examples/no_oe.conf

Problème Linux : Interface WIFI capricieuse

lundi, décembre 8th, 2008

Si lors d’un test de connexion comme :
ping 194.57.89.208
vous obtenez la réponse :
connect: Resource temporarily unavailable
c’est que votre interface WIFI est momentanément inutilisable. En général cela ne dure que quelques secondes, mais si ce problème persiste il faut vérifier dans les logs que l’interface WIFI est bien présente.
Il est possible que votre portable demande une action manuelle pour démarrer le WIFI (bouton ON/OFF wifi/blutooth)

Vous pouvez aussi aller modifier le fichier /etc/ipsec.conf en décommentant la ligne suivante :
include /etc/ipsec.d/examples/no_oe.conf

Problème Linux : trop de route par défaut

lundi, décembre 8th, 2008

Si vous avez plusieurs routes par défaut, cela viens sans aucun doute que vous avez activez (volontairement ou non) le WIFI plus l’interface filaire de votre portable.
Dans ce cas, vous voyez quelque chose du style :
0.0.0.0 194.57.89.254 0.0.0.0 UG 0 0 0 eth0
0.0.0.0 172.21.7.254 0.0.0.0 UG 0 0 0 eth1

Le processus ipsec ne pourra pas démarrer, car il ne saura pas quel passerelle utiliser pour connecter le serveur VPN.

Dans ce cas, il faut donc fermer une connexion (filaire ou wifi au choix) et relancer ipsec.

Linux : script de connexion déconnexion

mercredi, novembre 5th, 2008

Avec la contribution de certains de nos collègues, nous publions quelques scripts pour Linux permettant de gérer la connexion et la déconnexion automatique au serveur VPN.
Jean-Michel Carricand nous à fait un script très simple de connexion :

#! /bin/bash
function usage() {
        echo "Usage: $0 {start|stop|restart} connection_name password"
        exit 1
}
CONN="$2"
PASS="$3"
DEFAULTROUTE=`route -n | grep '^0.0.0.0' | tr -s ' ' ' ' | cut -d' ' -f2`
case "$1" in
    start)
        [ -z "$2" -o -z "$3" ] && usage
        $0 stop
        /etc/init.d/ipsec start; sleep 2
        ipsec auto --up ufc-vpn; sleep 2
        route add 194.57.91.250 gw $DEFAULTROUTE
        /etc/init.d/xl2tpd start; sleep 2
        echo "c $CONN passwordfd $PASS" > /var/run/xl2tpd/l2tp-control
	;;
    stop)
        echo "d $CONN" > /var/run/xl2tpd/l2tp-control; sleep 2
        /etc/init.d/xl2tpd stop
        ipsec auto --down ufc-vpn
        /etc/init.d/ipsec stop
        route del 194.57.91.250 gw $DEFAULTROUTE
	;;
    restart)
        $0 stop
        $0 start
	;;
    *)
        usage
	;;
esac

Jérôme Rabouille (UFR-STGI) :

#!/bin/bash
# Ecrit par Jérôme Rabouille / UFR STGI
# Montage du VPN UFC sous linux avec IPSEC(openswan) / xl2tpd
# Testé sous Ubuntu Hardy

VPN_NAME="ufc-vpn" #nom du vpn dans /etc/ipsec/conf
MACHINE_NAME_XL2TPD=ma_machine #nom de la machine dans /etc/xl2tpd/xl2tpd.conf

L2TPD_SCRIPT=/etc/init.d/xl2tpd
L2TPD_PIPE=/var/run/xl2tpd/l2tp-control
IPSEC_SCRIPT=/etc/init.d/ipsec
IPSEC_COMMAND=/usr/sbin/ipsec

if [ "$UID" = "0" ]; then
    case "$1" in
    start)
        echo "Saisir le mot de passe(ENT): "
        read -s PASSWORD
        $IPSEC_SCRIPT start > /dev/null
        $L2TPD_SCRIPT start > /dev/null
        sleep 2
        $IPSEC_COMMAND auto --up $VPN_NAME > /dev/null
        echo "c $MACHINE_NAME_XL2TPD passwordfd $PASSWORD" > $L2TPD_PIPE
        sleep 3
        ppp_ip="`/sbin/ifconfig ppp0 | grep 'inet adr' | awk '{print $2}' | sed -e 's/.*://'`"
        echo "IP LOCAL UFC:" $ppp_ip
        ;;
    stop)
        echo "d $MACHINE_NAME_XL2TPD" > $L2TPD_PIPE
        $IPSEC_COMMAND auto --down $VPN_NAME > /dev/null
        sleep 2
        $L2TPD_SCRIPT stop > /dev/null
        $IPSEC_SCRIPT stop > /dev/null
        ;;
    *)
        echo "usage: "$0 "[start|stop]"
        echo "Montage du VPN de l'UFC"
        ;;
    esac
else
    echo "ERREUR: Vous devez être super utilisateur!"
    exit 1
fi
exit 0

Cédric Clerget (FEMTO-ST) :
Alors j’ai noté quelques problèmes sur mon PC du boulot et mon PC perso. Les deux PC tournent avec une Debian ETCH 64 bits. La connexion se fait sans problème, petit hic, si je souhaite utiliser les DNS FEMTO-ST lorsque je me connecte au realm femto-st je dois éditer /etc/resolv.conf afin d’y ajouter :
search femto-st.fr
nameserver 172.20.208.80
C’est ce que fait le script une fois connecté (script intrusif, n’hésitez pas a sauvegarder /etc/l2tp et /etc/ipsec avant).


#! /bin/sh
# A changer selon le lieu d'ou vous vous connectez
PASSERELLE="192.168.1.254"
# A changer selon votre localisation géographique
SERVEUR_VPN="194.57.91.250"
# chemin du certificat utilisateur
USER_CERT="/etc/ipsec.d/certs/mycert.pem"
# La connexion au VPN impose l'utilisation unique du réseau de l'UFC,
# et par conséquent l'utilisation du proxy de l'UFC afin de pouvoir surfer.
# Si vous souhaitez utiliser votre connexion pour le surf ou autres choses
# tout en restant dans le réseau UFC, vous le pouvez en mettant la valeur
# du champs suivant à 1
DUALROUTE_ACTIVE=1
DUALROUTE_SCRIPT="/etc/ppp/ip-up.d/dualroute"

# Pour la restauration des DNS de votre connexion internet, car la restauration
# ne fonctionne pas avec pppd (bug ? feature ?)
RESOLV_BACKUP="/etc/resolv.conf.pppd-backup"

# si vous désirez remplacer les DNS par défaut attribuer lors de la connexion, sinon commentez les 5 lignes suivantes
RESOLV_CONF=`
cat << RESOLV_CONF
search femto-st.fr
nameserver 172.20.208.80
RESOLV_CONF`

initialisation () {
# Demande de saisi de l'utilisateur et du mot de passe
    echo -n "Utilisateur (ex : identifiant@realm) : "
    read USER
    echo -n "Mot de passe : "
    read -s PASSWORD
    echo ""
    echo "Connexion en cours ..."

# génération du fichier /etc/ppp/ip-up.d/dualroute
DUALROUTE=`
cat << DUALROUTE
#!/bin/sh
route add -net 172.20.0.0 netmask 255.255.0.0 dev \\$1
DUALROUTE`

# génération du fichier /etc/ipsec.conf
IPSEC_CONF=`
cat << IPSEC_CONF
version 2
config setup
uniqueids=yes
nhelpers=0
nat_traversal=yes

conn %default
authby=rsasig
leftrsasigkey=%cert
rightrsasigkey=%cert
type=transport
keyingtries=1

include /etc/ipsec.d/examples/no_oe.conf

conn ufc-vpn
rightprotoport=17/1701
leftprotoport=17/1701
keyexchange=ike
pfs=no
auto=add
left=%defaultroute
leftcert=$USER_CERT
leftrsasigkey=%cert
right=$SERVEUR_VPN
rightrsasigkey=%cert
rightca=%same
leftnexthop=$PASSERELLE
IPSEC_CONF`

# génération du fichier /etc/xl2tpd/xl2tpd.conf
XL2TP_CONF=`
cat << XL2TP_CONF
[global]
port = 1701
access control = no

[lac machine_lambda]
lns = $SERVEUR_VPN
redial = yes
redial timeout = 10
max redials = 10
length bit = yes
refuse authentication = yes
refuse chap = yes
require pap = yes
name = perso
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd.client
XL2TP_CONF`

# génération du fichier /etc/ppp/options.l2tpd.client
if [ $DUALROUTE_ACTIVE == 0 ]; then
    REPLACEROUTE_OPTION="replacedefaultroute"
else
    REPLACEROUTE_OPTION="noreplacedefaultroute"
fi
OPTIONS_L2TP=`
cat << OPTIONS_L2TP
defaultroute
$REPLACEROUTE_OPTION
debug
lock
user $USER
noipdefault
usepeerdns
noauth
lcp-echo-interval 20
lcp-echo-failure 10
noaccomp
OPTIONS_L2TP`

}

case "$1" in
start)
    initialisation
    echo -e "$IPSEC_CONF" > /etc/ipsec.conf
    echo -e "$XL2TP_CONF" > /etc/xl2tpd/xl2tpd.conf
    echo -e "$OPTIONS_L2TP" > /etc/ppp/options.l2tpd.client
    if [[ ! -e $DUALROUTE_SCRIPT && $DUALROUTE_ACTIVE == 1 ]]; then
        echo -e "$DUALROUTE" > $DUALROUTE_SCRIPT
        chmod +x $DUALROUTE_SCRIPT
    fi
    /etc/init.d/ipsec start > /dev/null && /etc/init.d/xl2tpd start > /dev/null
    sleep 3
    if [ ! -z "$PASSWORD" ]; then
        ipsec auto --up ufc-vpn > /dev/null && echo "c machine_lambda passwordfd $PASSWORD" > /var/run/xl2tpd/l2tp-control
    fi
    if [ ! -z "$RESOLV_CONF" ]; then
        sleep 6
        echo -e "$RESOLV_CONF" > /etc/resolv.conf
    fi
;;
stop)
    echo -e "Déconnexion en cours ..."
    echo "d machine_lambda" > /var/run/xl2tpd/l2tp-control && ipsec auto --down ufc-vpn > /dev/null
/etc/init.d/ipsec stop > /dev/null && /etc/init.d/xl2tpd stop > /dev/null
# restauration du fichier /etc/resolv.conf écraser par la connexion VPN
    if [ -e "$RESOLV_BACKUP" ]; then
        mv $RESOLV_BACKUP /etc/resolv.conf
    fi
# restauration de la route par défaut afin de pouvoir utiliser de nouveau sa connexion internet
    if [ $DUALROUTE_ACTIVE == 0 ]; then
        route add default gw $PASSERELLE
    fi
    rm -f $DUALROUTE_SCRIPT
;;
*)
    echo "Usage: connexion-vpn {start|stop}" >&2
    exit 3
;;
esac
:

Documentation : Windows, MacOS, Linux

jeudi, septembre 25th, 2008

La documentation windows a été validée pour XP et VISTA
config_windows-xp-20081020
config_windows-vista-20081020

La documentation MACOS a été validée pour TIGER et LEOPARD
config_macos-20081020

La documentation Linux a été validée pour DEBIAN 4.0, UBUNTU 7.10
config_linux-20081127

Références utiles :
site du CRI
site du VPN
– pour linux le site de Jacco de Leeuw

VPN sous Linux à travers la solution UCOPIA (accès WIFI)

mercredi, juillet 9th, 2008

Votre portable est sous linux et vous voulez effectuer une connexion VPN sur un serveur de l’UFC.

Or votre accès réseau passe par du WiIFi managé par une solution de contrôle de type UCOPIA.

Le principe d’UCOPIA est simple :vous vous connectez au SSID WiFi que l’on vous a fourni puis vous ouvrez votre navigateur et un portail captif se présente à vous à la place de la page que vous vouliez voir afficher. Vous entrez alors votre login/password et vous conservez une session active tant que la fenêtre de connexion UCOPIA reste ouverte. Dès la fermeture de la page UCOPIA vous perdez immédiatement le lien réseau.

Vous avez donc modifié votre /etc/ipsec.conf (avec la gateway que vous voyez [route -n]) :
leftnexthop=192.168.138.10

Premier problème : le fichier hosts
Malheureusement dès que vous lancez le VPN, vous perdez le lien réseau. Cela vient du fait qu’une fois le lien VPN monté votre DNS devient celui de l’UFC.
Or vous avez besoin (votre navigateur) de connaître l’ip de https://controller.ucopia.mobile/secure/index.php?blablabla
Pour corriger ce problème il suffit de déclarer le host controller.ucopia.mobile dans le fichier /etc/hosts

Deuxième problème : le proxy
Si vous activez le proxy par “Adresse de configuration automatique du proxy” (proxy.pac) vous perdez le lien presque aussitôt. Pour éviter cela il suffit de cliquer sur “Configuration manuelle du proxy” (mettre proxy-www.univ-fcomte.fr 3128) et surtout d’ajouter dans “Pas de proxy pour :” le nom controller.ucopia.mobile.

Dès que cela est fait, vous n’aurez plus de problème pour faire fonctionner votre connexion VPN.

Problème Linux : route vers le serveur VPN absente

vendredi, mai 23rd, 2008

Lors de l’établissement L2TP/PPP entre le client et le serveur, L2TP change la route par défaut de la machine pour indiquer PPP à la place. ex :
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 ppp0
Or en effectuant cette opération le système doit aussi ajouter une route pour garantir le lien vers le serveur VPN ex :
194.57.91.250 172.21.7.254 255.255.255.255 UGH 0 0 0 eth1
dans cet exemple le serveur VPN est 194.57.91.250 et la passerelle par défaut 172.21.7.254 sur l’interface eth1.

Si cette route est absente le lien entre le client et le serveur est immédiatement mis en défaut et la connexion se coupe au bout de quelques minutes => aucun échange avec quiconque n’est possible sans cette route.

Solution : relancer ipsec. Cette opération doit être également effectuée après chaque changement (up/down) d’interface.

LINUX serveur : script

vendredi, mai 2nd, 2008

Un script spécifique lors de la création d’un lien PPPXX à été écrit pour éliminer dans IPTABLES (mangle) les restes des connexions mal fermé. Le problème est l’accumulation dans la tabe mangle de connexion lié au même PPP alors que la connexion en cours à besoin d’un ajout en cours pour sa propre connexion PPP.

Le script effectue donc une élimination de toutes les lignes dans mangle traitant du PPP en cours ; ensuite il y a ajout de la bonne ligne PPP dans la table mangle.

Le fichier se trouve dans : ip-pre-up.d/vpn-pre-connect

LINUX : L2TP contre XL2TP

vendredi, mai 2nd, 2008

Ces deux programmes permettent d’identifier par une surcouche à PPP un utilisateur à travers un lien IPSEC actif.

Au cours des travaux de mise en oeuvre du projet VPN, nous avons souvent oscillé entre les deux, pour plusieurs raisons :

– L2TP n’est plus maintenur officielement

– XL2TP est maintenu

– pour un client L2TP permet une authentification sans passer par un fichier pap-secret avec un mot de passe en clair

– L2TP est en standard dans les distributions LINUX

– L2TP à été modifié est un repository au LIFC le maintient à jour

Lors des tests beta, nous avons remarquer que L2TP du côté serveur tombait régulièrement sans raison et sans information dans les fichiers de logs.

Le serveur est donc recofiguré avec XL2TP.

Côté client L2TP peu être maintenu.