This is an old revision of the document!
Table of Contents
MIPL2
Installation
- Télécharger les sources de la dernière version de MIPL ainsi que le patch pour le noyau 2.6.8.1
- L'installation de MIPL2 requiert une recompilation du noyau. Actuellement, le dernier patch n'est disponible que pour le noyau 2.6.8.1 .
- Télécharger les sources du noyau 2.6.8.1 sur votre miroir favori ou sur kernel.org.
- Installer les sources :
# tar xvjf linux-2.6.8.1.tar.bz2
- patcher le noyau :
# cd /usr/src/linux # zcat mipv6-patch.gz | patch -p1 # make menuconfig
- Configurer les options du noyau. Le script chkconf_kernel.sh, fourni avec l'application mipv6-2.0-rc2, vérifie la présence de certains éléments compilés dans le noyau. Ce script devrait alors répondre “All kernel options are as they should”.
CONFIG_EXPERIMENTAL=y
CONFIG_SYSVIPC=y
CONFIG_PROC_FS=y
CONFIG_NET=y
CONFIG_INET=y
CONFIG_IPV6=y
CONFIG_IPV6_MIP6=y
CONFIG_XFRM=y
CONFIG_XFRM_USER=y
CONFIG_XFRM_ENHANCEMENT=y
The Home Agent and Mobile Node also need:
CONFIG_IPV6_TUNNEL=y
CONFIG_IPV6_ADVANCED_ROUTER=y
CONFIG_IPV6_MULTIPLE_TABLES=y
The Mobile Node also needs:
CONFIG_IPV6_SUBTREES=y
For some additional movement indicators on the Mobile Node you may set:
CONFIG_ARPD=y
For IPsec support you need at least:
CONFIG_INET6_ESP=y
If you plan to use IPsec tunnel you need:
CONFIG_NET_KEY=y
CONFIG_NET_KEY_MIGRATE=y
# make && make modules_install
- Construire les exécutables. Sous Debian, installer les packages indent et libssl-dev.
# tar xvzf mipv6-2.0-rc2.tar.gz # cd mipv6-2.0-rc2 # ./configure
- préciser éventuellement le répertoire des entêtes du noyaux fraichement compilé
# CPPFLAGS='-isystem /usr/src/linux/include' ./configure
- puis la compilation
# make
Attention, des problèmes lors de la génération du fichier d'entête src/pmgr.h (mipv6-2.0-rc2) peuvent survenir. Vérifier que vous avez bien l'exécutable ident et que sed est suffisamment récent. Finalement vous pouvez toujours remplir le fichier src/pmgr.h à la main (déconseillé tout de même) :
#ifndef __PMGR_H__
#define __PMGR_H__ 1
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <limits.h>
#include "policy.h"
struct pmgr_cb {
int (*discard_binding) (const struct in6_addr_bundle * in_addrs,
const struct ip6_mh_binding_update * bu,
const struct mh_options * opts);
int (*use_keymgm) (const struct in6_addr_bundle * addrs);
char so_path[_POSIX_PATH_MAX + 1];
void *handle;
struct pmgr_cb *old;
};
int pmgr_init(char *libpath, struct pmgr_cb *lb);
int pmgr_close(struct pmgr_cb *lb);
#endif
relancer
# make
puis
# make install
Configuration
radvd.conf
Le fichier de configuration du RA /etc/radvd.conf. A noter que les temps d'annonces ont été considérablement baissé dans le but de créer un lien local le plus rapidement possible pour la MN.
interface eth0
{
AdvSendAdvert on;
MaxRtrAdvInterval 0.07;
MinRtrAdvInterval 0.03;
AdvIntervalOpt off;
AdvHomeAgentFlag on;
HomeAgentLifetime 10000;
HomeAgentPreference 20;
AdvHomeAgentInfo on;
prefix 2001:660:2402:f003::aa/64
{
AdvRouterAddr on;
AdvOnLink on;
AdvAutonomous on;
AdvPreferredLifetime 10000;
AdvValidLifetime 12000;
};
};
ha.conf
Fichier de configuration du HA, /usr/local/etc/ha.conf
NodeConfig HA;
## If set to > 0, will not detach from tty
DebugLevel 10;
## List of interfaces where we serve as Home Agent
Interface "eth0";
#Interface "eth1";
##
## IPsec configuration
##
UseMnHaIPsec disabled;
## Key Management Mobility Capability
KeyMngMobCapability disabled;
IPsecPolicySet {
HomeAgentAddress 2001:660:2402:f003::aa;
HomeAddress 2001:660:2402:f003::666/64;
#HomeAddress 3ffe:2620:6:1::1235/64;
IPsecPolicy HomeRegBinding UseESP;
IPsecPolicy MobPfxDisc UseESP;
IPsecPolicy TunnelMh UseESP;
}
mn.conf
Fichier de configuration de la node mobile, /usr/local/etc/mn.conf
NodeConfig MN;
## If set to > 0, will not detach from tty
DebugLevel 10;
## Support route optimization with other MNs
DoRouteOptimizationCN disabled;
## Use route optimization with CNs
DoRouteOptimizationMN disabled;
UseCnBuAck disabled;
Interface "eth0";
MnRouterProbesRA 0;
MnRouterProbesLinkUp 0;
MnHomeLink "eth0" {
HomeAgentAddress 2001:660:2402:f003::aa;
HomeAddress 2001:660:2402:f003::666/64;
# proto type code route opt.
# MnRoPolicy ICMP 129 0 enabled;
# MnRoPolicy ICMP any any disabled;
# proto dst src route opt.
# MnRoPolicy TCP 80 any enabled;
# MnRoPolicy TCP any any disabled;
}
##
## IPsec configuration
##
UseMnHaIPsec disabled;
## Key Management Mobility Capability
KeyMngMobCapability disabled;
IPsecPolicySet {
HomeAgentAddress 2001:660:2402:f003::aa;
HomeAddress 2001:660:2402:f003::666/64;
IPsecPolicy HomeRegBinding UseESP;
IPsecPolicy MobPfxDisc UseESP;
IPsecPolicy TunnelMh UseESP;
}
Utilisation
Home Agent
On peut alors lancer le HA, il convient de fixer l'adresse de l'interface, la route par défaut, avec le script suivant :
#!/bin/sh ifconfig eth0 inet6 add 2001:660:2402:f003::aa/64 echo "1" > /proc/sys/net/ipv6/conf/eth0/forwarding echo "0" > /proc/sys/net/ipv6/conf/eth0/autoconf echo "0" > /proc/sys/net/ipv6/conf/eth0/accept_ra echo "0" > /proc/sys/net/ipv6/conf/eth0/accept_redirects #ajout de la route par défaut ip -6 route add ::/0 via 2001:660:2402:f003:ff::
lancement du démon :
# mip6d -c /usr/local/etc/ha.conf
Node mobile
Et on peut lancer la node mobile, initialisation de l'interface réseau avec le script suivant :
#!/bin/sh ifconfig eth0 inet6 add 2001:660:2402:f003::666/64 echo "0" > /proc/sys/net/ipv6/conf/eth0/forwarding echo "1" > /proc/sys/net/ipv6/conf/eth0/autoconf echo "1" > /proc/sys/net/ipv6/conf/eth0/accept_ra echo "1" > /proc/sys/net/ipv6/conf/eth0/accept_redirects
lancement du démon :
# mip6d -c /usr/local/etc/mn.conf
Déplacements
Faire se déplacer la MN entre différents sous-réseaux et vérifier que le binding update avec le HA a bien lieu. On peut tester que les flux ne sont pas coupés avec un des logiciels clients.
Sécurisation
Rajout de IPsec pour l'authentification lors des BU/BA. Permet de restreindre l'utilisation du HA à des utilisateurs authentifiés. Dans notre même exemple,
- le HA a l'ip 2001:660:2402:f003::666 2001:660:2402:f003::aa
- la MN a l'ip 2001:660:2402:f003::666 2001:660:2402:f003::666
Voici les points à vérifier pour activer l'authentification sécurisée.
ha.conf et mn.conf
Portion identique pour les deux fichiers de configuration du HA et de la MN. Bien Mettre la variable UseMnHaIPsec à enabled
UseMnHaIPsec enabled;
## Key Management Mobility Capability
KeyMngMobCapability disabled;
IPsecPolicySet {
HomeAgentAddress 2001:660:2402:f003::aa;
HomeAddress 2001:660:2402:f003::666/64;
IPsecPolicy HomeRegBinding UseESP;
IPsecPolicy MobPfxDisc UseESP;
IPsecPolicy TunnelMh UseESP;
}
sa.conf
voici le fichier d'échange des clés, il doit être identique sur le HA et le MN.
# sa.conf
#
# 2001:660:2402:f003::666 is home address of MN
# and 2001:660:2402:f003::aa is address of HA
# MN -> HA transport SA for BUs
add 2001:660:2402:f003::666 2001:660:2402:f003::aa esp 2000
-m transport
-E des-cbc "TAHITEST"
-A hmac-sha1 "this is the test key" ;
# HA -> MN transport SA for BAs
add 2001:660:2402:f003::aa 2001:660:2402:f003::666 esp 2001
-m transport
-E des-cbc "TAHITEST"
-A hmac-sha1 "this is the test key" ;
# MN -> HA tunnel SA for HoTIs
add 2001:660:2402:f003::666 2001:660:2402:f003::aa esp 2004
-m tunnel
-E des-cbc "TAHITEST"
-A hmac-sha1 "this is the test key" ;
# HA -> MN tunnel SA for HoTs
add 2001:660:2402:f003::aa 2001:660:2402:f003::666 esp 2005
-m tunnel
-E des-cbc "TAHITEST"
-A hmac-sha1 "this is the test key" ;
Les règles sont donc lancées manuellement sur le HA et la MN avec la commande :
# setkey -f sa.conf
L'enregistrement et l'authenfication sur le HA sont protégés, mais le traffic entre le HA et la MN n'est pas crypté.
Tests
Résumé des tests avec MIPL2 sur cette page
