mipl
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| mipl [2005/07/22 10:47] – schreiner | mipl [2019/01/22 11:18] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== MIPL2 ====== | ||
| + | ===== Installation ===== | ||
| + | |||
| + | ==== Téléchargement ==== | ||
| + | |||
| + | * Télécharger les sources de la dernière version de [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | | ||
| + | |||
| + | * L' | ||
| + | * Télécharger les sources du noyau 2.6.14 sur votre miroir favori ou sur [[ftp:// | ||
| + | |||
| + | ==== Recompilation du noyau ==== | ||
| + | |||
| + | * Installer les sources : | ||
| + | |||
| + | # tar xvjf linux-2.6.14.tar.bz2 -C /usr/src | ||
| + | # ln -s / | ||
| + | # cp mipv6-2.0-linux-2.6.14.patch.gz / | ||
| + | |||
| + | * patcher le noyau : | ||
| + | | ||
| + | |||
| + | # cd / | ||
| + | # zcat mipv6-2.0-linux-2.6.14.patch.gz | patch -p1 | ||
| + | # make menuconfig | ||
| + | |||
| + | * Configurer les options du noyau. Le script **chkconf_kernel.sh**, | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | The Home Agent and Mobile Node also need: | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | The Mobile Node also needs: | ||
| + | |||
| + | | ||
| + | |||
| + | For some additional movement indicators on the Mobile Node you may set: | ||
| + | |||
| + | | ||
| + | |||
| + | For IPsec support you need at least: | ||
| + | |||
| + | | ||
| + | |||
| + | If you plan to use IPsec tunnel you need: | ||
| + | |||
| + | | ||
| + | | ||
| + | |||
| + | </ | ||
| + | |||
| + | # make && make modules_install | ||
| + | |||
| + | :!: La compilation du noyau 2.6.8.1 de la précédente version (MIPL2.0-rc2) nécessite une version 3.3 de gcc. | ||
| + | |||
| + | * Copier le noyau de le répertoire /boot | ||
| + | |||
| + | # cp arch/ | ||
| + | |||
| + | * Editer le fichier / | ||
| + | |||
| + | ==== Compilation du démon mip6d ==== | ||
| + | |||
| + | * Construire les exécutables. Sous Debian, installer les packages //indent// et // | ||
| + | |||
| + | # tar xvzf mipv6-2.0.tar.gz -C / | ||
| + | # cd / | ||
| + | # ./configure | ||
| + | |||
| + | * préciser éventuellement le répertoire des entêtes du noyaux fraichement compilé | ||
| + | | ||
| + | # CPPFLAGS=' | ||
| + | |||
| + | * puis la compilation | ||
| + | | ||
| + | # make | ||
| + | |||
| + | Attention, des problèmes lors de la génération du fichier d' | ||
| + | |||
| + | < | ||
| + | #ifndef __PMGR_H__ | ||
| + | #define __PMGR_H__ 1 | ||
| + | |||
| + | #ifdef HAVE_CONFIG_H | ||
| + | #include < | ||
| + | #endif | ||
| + | #include < | ||
| + | #include " | ||
| + | |||
| + | 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 / | ||
| + | A noter que les temps d' | ||
| + | |||
| + | < | ||
| + | interface eth0 | ||
| + | { | ||
| + | AdvSendAdvert on; | ||
| + | MaxRtrAdvInterval 0.07; | ||
| + | MinRtrAdvInterval 0.03; | ||
| + | AdvIntervalOpt off; | ||
| + | AdvHomeAgentFlag on; | ||
| + | HomeAgentLifetime 10000; | ||
| + | HomeAgentPreference 20; | ||
| + | AdvHomeAgentInfo on; | ||
| + | |||
| + | prefix 2001: | ||
| + | { | ||
| + | AdvRouterAddr on; | ||
| + | AdvOnLink on; | ||
| + | AdvAutonomous on; | ||
| + | AdvPreferredLifetime 10000; | ||
| + | AdvValidLifetime 12000; | ||
| + | }; | ||
| + | }; | ||
| + | </ | ||
| + | |||
| + | ==== ha.conf ==== | ||
| + | |||
| + | Fichier de configuration du HA, / | ||
| + | |||
| + | < | ||
| + | NodeConfig HA; | ||
| + | |||
| + | ## If set to > 0, will not detach from tty | ||
| + | DebugLevel 10; | ||
| + | |||
| + | ## List of interfaces where we serve as Home Agent | ||
| + | Interface " | ||
| + | #Interface " | ||
| + | |||
| + | ## | ||
| + | ## IPsec configuration | ||
| + | ## | ||
| + | |||
| + | UseMnHaIPsec disabled; | ||
| + | |||
| + | ## Key Management Mobility Capability | ||
| + | KeyMngMobCapability disabled; | ||
| + | |||
| + | IPsecPolicySet { | ||
| + | HomeAgentAddress 2001: | ||
| + | HomeAddress 2001: | ||
| + | |||
| + | # | ||
| + | |||
| + | IPsecPolicy HomeRegBinding UseESP; | ||
| + | IPsecPolicy MobPfxDisc UseESP; | ||
| + | IPsecPolicy TunnelMh UseESP; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== mn.conf ==== | ||
| + | Fichier de configuration de la node mobile, / | ||
| + | |||
| + | < | ||
| + | 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 " | ||
| + | |||
| + | MnRouterProbesRA 0; | ||
| + | MnRouterProbesLinkUp 0; | ||
| + | |||
| + | MnHomeLink " | ||
| + | HomeAgentAddress 2001: | ||
| + | HomeAddress 2001: | ||
| + | |||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | } | ||
| + | |||
| + | ## | ||
| + | ## IPsec configuration | ||
| + | ## | ||
| + | |||
| + | UseMnHaIPsec disabled; | ||
| + | |||
| + | ## Key Management Mobility Capability | ||
| + | KeyMngMobCapability disabled; | ||
| + | |||
| + | IPsecPolicySet { | ||
| + | HomeAgentAddress 2001: | ||
| + | HomeAddress 2001: | ||
| + | |||
| + | IPsecPolicy HomeRegBinding UseESP; | ||
| + | IPsecPolicy MobPfxDisc UseESP; | ||
| + | IPsecPolicy TunnelMh UseESP; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== Utilisation ===== | ||
| + | |||
| + | ==== Home Agent ==== | ||
| + | |||
| + | On peut alors lancer le HA, il convient de fixer l' | ||
| + | |||
| + | < | ||
| + | #!/bin/sh | ||
| + | ifconfig eth0 inet6 add 2001: | ||
| + | echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | #ajout de la route par défaut | ||
| + | ip -6 route add ::/0 via 2001: | ||
| + | </ | ||
| + | |||
| + | lancement du démon : | ||
| + | |||
| + | # mip6d -c / | ||
| + | |||
| + | ==== Node mobile ==== | ||
| + | |||
| + | Et on peut lancer la node mobile, initialisation de l' | ||
| + | |||
| + | < | ||
| + | #!/bin/sh | ||
| + | ifconfig eth0 inet6 add 2001: | ||
| + | echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | </ | ||
| + | |||
| + | lancement du démon : | ||
| + | |||
| + | # mip6d -c / | ||
| + | |||
| + | ==== 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|logiciels clients]]. | ||
| + | |||
| + | ===== Sécurisation ===== | ||
| + | |||
| + | Rajout de IPsec pour l' | ||
| + | Dans notre même exemple, | ||
| + | * le HA a l'ip 2001: | ||
| + | * la MN a l'ip 2001: | ||
| + | Voici les points à vérifier pour activer l' | ||
| + | |||
| + | ==== ha.conf | ||
| + | Portion identique pour les deux fichiers de configuration du HA et de la MN. Bien Mettre la variable // | ||
| + | |||
| + | < | ||
| + | UseMnHaIPsec enabled; | ||
| + | |||
| + | ## Key Management Mobility Capability | ||
| + | KeyMngMobCapability disabled; | ||
| + | |||
| + | IPsecPolicySet { | ||
| + | HomeAgentAddress 2001: | ||
| + | HomeAddress 2001: | ||
| + | |||
| + | IPsecPolicy HomeRegBinding UseESP; | ||
| + | IPsecPolicy MobPfxDisc UseESP; | ||
| + | IPsecPolicy TunnelMh UseESP; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ==== sa.conf ==== | ||
| + | voici le fichier d' | ||
| + | |||
| + | < | ||
| + | # sa.conf | ||
| + | # | ||
| + | # 2001: | ||
| + | # and 2001: | ||
| + | |||
| + | # MN -> HA transport SA for BUs | ||
| + | add 2001: | ||
| + | -m transport | ||
| + | -E des-cbc " | ||
| + | -A hmac-sha1 "this is the test key" ; | ||
| + | |||
| + | # HA -> MN transport SA for BAs | ||
| + | add 2001: | ||
| + | -m transport | ||
| + | -E des-cbc " | ||
| + | -A hmac-sha1 "this is the test key" ; | ||
| + | |||
| + | # MN -> HA tunnel SA for HoTIs | ||
| + | add 2001: | ||
| + | -m tunnel | ||
| + | -E des-cbc " | ||
| + | -A hmac-sha1 "this is the test key" ; | ||
| + | |||
| + | # HA -> MN tunnel SA for HoTs | ||
| + | add 2001: | ||
| + | -m tunnel | ||
| + | -E des-cbc " | ||
| + | -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' | ||
| + | |||
| + | ===== Tests ===== | ||
| + | |||
| + | ==== Stabilité ==== | ||
| + | Dans la pratique, MIPL2 est relativement stable (version rc2, noyau 2.6.8.1). En simulant des déplacements d'un MN entre différents sous-réseaux (changement de vlans avec **commutateur**) , il apparait quelques limitations. | ||
| + | * Rapidité de mise à jour de la //Home Address// | ||
| + | * Echec de la mise à jour de la route vers la MN lors de changements successifs de sous-réseaux trop rapides. Il semblerait que la MN doit rester au moins quelques secondes dans le sous-réseau visité avant de repartir pour un autre. | ||
| + | * Pour des changements de sous-réseaux réels (**WiFi** par ex.), Linux ne permet pas d' | ||
| + | |||
| + | ==== Optimisations ==== | ||
| + | Pour avoir des //Router Advertisement// | ||
| + | |||
| + | **Note:** sur le sous-réseau mère, si le HA n'est pas la passerelle, il doit quand même faire tourner lui-même radvd avec les options spéficiques au HA. | ||
| + | |||
| + | |||
| + | ==== Exemples ==== | ||
| + | |||
| + | === Topologie === | ||
| + | |||
| + | {{wiki_mipl2_1.png}} | ||
| + | |||
| + | === Configuration des démons radvd sur les routeurs Linux === | ||
| + | |||
| + | < | ||
| + | |||
| + | ## | ||
| + | interface ethX | ||
| + | { | ||
| + | AdvSendAdvert on; | ||
| + | AdvIntervalOpt on; | ||
| + | |||
| + | MaxRtrAdvInterval 0.07; | ||
| + | MinRtrAdvInterval 0.03; | ||
| + | AdvHomeAgentFlag off; | ||
| + | |||
| + | prefix 2001: | ||
| + | { | ||
| + | AdvRouterAddr on; | ||
| + | AdvOnLink on; | ||
| + | AdvAutonomous on; | ||
| + | }; | ||
| + | }; | ||
| + | |||
| + | ## | ||
| + | interface ethY | ||
| + | { | ||
| + | AdvSendAdvert on; | ||
| + | AdvIntervalOpt on; | ||
| + | |||
| + | MaxRtrAdvInterval 0.07; | ||
| + | MinRtrAdvInterval 0.03; | ||
| + | AdvHomeAgentFlag off; | ||
| + | |||
| + | prefix 2001: | ||
| + | { | ||
| + | AdvRouterAddr on; | ||
| + | AdvOnLink on; | ||
| + | AdvAutonomous on; | ||
| + | }; | ||
| + | }; | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | === Configuration de radvd sur le HA === | ||
| + | |||
| + | < | ||
| + | |||
| + | interface eth0 | ||
| + | { | ||
| + | AdvSendAdvert on; | ||
| + | MaxRtrAdvInterval 0.07; | ||
| + | MinRtrAdvInterval 0.03; | ||
| + | AdvIntervalOpt off; | ||
| + | AdvHomeAgentFlag on; | ||
| + | HomeAgentLifetime 10000; | ||
| + | HomeAgentPreference 20; | ||
| + | AdvHomeAgentInfo on; | ||
| + | |||
| + | prefix 2001: | ||
| + | { | ||
| + | AdvRouterAddr on; | ||
| + | AdvOnLink on; | ||
| + | AdvAutonomous on; | ||
| + | AdvPreferredLifetime 10000; | ||
| + | AdvValidLifetime 12000; | ||
| + | }; | ||
| + | }; | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ===== Liens ===== | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
