网络安全 频道

Linux下移动IPv6实现指南

1 介绍

本文档描述了在Linux平台下的软件和建立与使用移动IPv6的步骤。draft-ieft.mipv6-ipv6回答了移动IP的概念与使用它的原因。

1.1    移动IP的概念

    每个移动节点总是由其家乡地址识别,而于其当前接入Internet位置无关。当离开家乡链路时,移动节点也与一个转交地址相关联,该转交地址包含了移动节点当前位置的信息。寻址到移动节点家乡地址的IPv6报文分组经过其家乡代理(HA)被透明的路由到其转交地址。该协议使IPv6节点能够缓存移动节点家乡地址和其转交地址的绑定,然后在直接发送目的为移动节点的所有报文分组到该转交地址。

1.2   为何使用移动IP

若在IPv6中没有对移动性的特定支持,因为路由是根据报文分组目的IP地址中的子网前缀进行路由,则当移动节点离开其家乡链路(其家乡IPv6子网前缀使用的链路)时,发送给移动节点(主机或路由器)的报文分组不能够到达。为保证移动情况下的持续通信,移动节点在每次移动到一个新链路时都能改变其IP地址,但移动节点在改变位置时就无法保持传输层和更高层的连接。因为移动计算机在IPv6部署期间可能占Internet上通信设备的大多数或起码是可观比例,所以IPv6移动性支持尤为重要。

全部细节,参见移动IPv6移动性支持RFC3775)(见“资源”部分)。

1.3   工作机制

 

1:移动IP

 

1.       移动节点(MN)到达外地网络并得到一个新转交地址。

2.       MN执行与其家乡代理(HA)的绑定更新(新转交地址在HA那里注册)。HA发送一条绑定确认给MN

3.       通信对端(CR)要联系MNHA截获目的是MN的报文分组。

4.       然后HA使用MN的转交地址从CR通过隧道发送所有报文分组到MN

5.       MN应答CR时,它可以使用其当前的转交地址(执行与CR的绑定)并与CR直接通信(优化路由)或者通过隧道经过HA传输所有报文分组。

解释如图1所示意。

2       IPv6

IP版本6IPv6)是一个新版本的Internet协议,作为IP版本4IPv4[RFC-791]的后续版本而设计。IPv6IPv4相比主要有以下变化:

  扩展的寻址功能

  首部格式简化

  对扩展与选项的改善支持

  流标签功能

  认证与保密功能

  为充分理解MIPv6的工作原理,您应当对IPv6无状态自动配置有基本了解。您可对RFC2462中的IPv6无状态地址自动配置进行研究。

  通常需了解IPv6更多信息,请访问IPv6工作组(IETF)网站-见链接的资源部分。

3         Linux下的MIPv6实现

目前有两个可用的Linux下移动IPv6实现的版本。英国的兰开夏大学有最早(?)的实现(http://www.c8-ipv6.lancs.ac.uk/MobileIP/)。所支持的最新内核版本为2.1.90,与IETF移动IPv6草案第五版(目前是第24版)相兼容。代码与站点从1998开始就一直未更新,因此它被认为是过时的。

另外一个不断更新的实现由HUT(赫尔辛基技术大学)开发。所支持的最新内核版本是2.6.8.1。需要文档与软件请访问http://www.mipl.mediapoli.com/或浏览邮件压缩文档。

3.1   给内核打补丁

HUT MIPv6需要内核补丁。该实现对IPv6内核栈作了修改,因此需要重新编译内核。实现软件包中有很好的安装过程帮助文档,但我会给出一个简要的指南。

请注意!MNHA不再需要两个不同的内核。只需对一个内核进行编译以提供对MNHA的支持。不可能同时作为MNHA运行;而是根据所加载的模块来进行选择。

1.       http://www.mobile-ipv6.org下载最新的Linux MIPv6源代码。目前最新发布的版本是:mipv6-2.0-rc2-linux-2.6.8.1。考虑到稳定性问题,我们使用mipv6-1.1-v2.4.26。最后4个数字对应于应使用补丁的Linux内核版本。

# cd /usr/local/src

# wget http://www.mobile-ipv6.org/download/mipv6-1.1-v2.4.26.tar.gz

# tar zxfv mipv6-1.1-v2.4.26.tar.gz

 

2.ftp.kernel.org 下载并解压对应的Linux内核版本:

# cd /usr/src

# wget ftp://ftp.kernel.org/pub/linux/kernel/v2.4/linux-2.4.26.tar.bz2

# tar jxvf linux-2.4.26.tar.bz2

# ln -s linux-2.4.26 linux

# cd linux

3.应用MIPv6补丁:

# patch -p1 --dry-run < /usr/local/src/mipv6-1.1-v2.4.26/mipv6-1.1-v2.4.26.patch

--dry-run检查补丁能否正确应用。若返回任何错误结果,则不应继续进行。若一切正常,则

# patch -p1 < /usr/local/src/mipv6-1.0-v2.4.22/mipv6-1.1-v2.4.26.patch

4.删除源代码中残留的.o文件以及其它从属文件。

#make mrproper

5.现在开始对内核树进行配置。运行make menuconfigMIPv6选项在“Networking Options”内。以下选项应当出现。

CONFIG_EXPERIMENTAL=y

CONFIG_SYSCTL=y

CONFIG_PROC_FS=y

CONFIG_MODULES=y

CONFIG_NET=y

CONFIG_NETFILTER=y

CONFIG_UNIX=y

CONFIG_INET=y

CONFIG_IPV6=m

CONFIG_IPV6_SUBTREES=y

CONFIG_IPV6_IPV6_TUNNEL=m

CONFIG_IPV6_MOBILITY=m

CONFIG_IPV6_MOBILITY_MN=m

CONFIG_IPV6_MOBILITY_HA=m

因为MIPL开发工作还在进行中,所以您可能设置:

CONFIG_IPV6_MOBILITY_DEBUG=y

使用调试信息,更易于发现问题所在。调试信息也非常有助于报告bug

为确保开启了所有正确选项,您可运行包含在MIPL中的一个小的shell脚本:chkconf_kernel.sh

 

6.接下来您应当编译并安装内核。

提示:为更容易的将该内核与其它内核相区分,您可以改变/usr/src/linux/Makefile中的"EXTRAVERSION"变量,比如"-MIPv6-1"

#make dep

#make bzImage

#make clean

#make modules

#make modules_install //生成了/lib/modules/2.4.26

7.把bzImage复制到boot目录并在/boot下生成 initrd img文件:

#cp /usr/src/linux/arch/i386/boot/bzImage /boot

#cd /boot

#mkinitrd initrd-2.4.26.img 2.4.26

8.修改grub设置:

#vi /etc/grub.conf

添加以下几行:

title Red Hat Linux (test)

root (hd0,2)

kernel /boot/bzImage ro root=/dev/hda3(根据实际情况)

initrd /boot/initrd-2.4.26.img

 

3.2   用户空间工具

用户空间工具mipdiag,配置文件和初始化脚本必须作为模块安装才能正确运行:

# cd /usr/local/src/mipv6-1.1-v2.4.26

# ./configure

# make && make install

3.3   MIPv6设备节点

MIPv6模块也需要一个新的设备节点表项。执行命令:

# mknod /dev/mipv6_dev c 0xf9 0

3.4   自动启动

1.       Red Hat:

所有初始化脚本都位于/etc/init.d/,它们符号链接到正确的运行级(/etc/rcX.d/),您可执行命令:

# chkconfig --add mobile-ip6

以使MIPv6随系统启动,或

# chkconfig --del mobile-ip6

使MIPv6不随系统启动。

4       实验床

现在您应该有了一个打上MIPL补丁的可正常运行的内核,安装了用户级工具并启用了引导时的自动启动。若出现任何错误,仔细对照以上各部分。

4.1   实验场景

我们在实验床中使用站点本地地址。您也可使用全球地址,但一定要注意链路本地地址无效!实验床包含4个节点;见图“移动IPv6实验床”。

1.HA-家乡代理:HA位于家乡网络,地址为fec0:106:2700::2,有一个无线网络网卡。

2.       MN-移动节点:MN在“家乡网络”时,其地址为fec0:106:2700::4。当MN移动到另一个网络时,它获得一个新的“转交”地址。

3.R-Router这是位于家乡网络和Internet之间的路由器。它有一个无线网卡,地址为fec0:106:2700::1和一个有线网卡,地址为fec0:106:2300::2

4.AR-Access Router:ARR之间的链路是我们的“internet-但在该实验场景中只是一根网线(可以是任何网络)。AR有两个网卡;有线网卡地址为fec0:106:2300::1,无线网卡地址为fec0:106:1100::1

 

移动IPv6实验床

0
相关文章