目前有两个可用的 Linux 移动 IPv6 实现。英国兰卡斯特大学拥有最旧的(?)实现 ( http://www.cs-ipv6.lancs.ac.uk/MobileIP/)。 它支持的最新内核是 2.1.90,并且与 IETF mobile IPv6 draft-v5 兼容(当前修订版是 v24)。 代码和网站自 1998 年以来就未更新,因此被认为是过时的。
另一个最新的实现是赫尔辛基理工大学的 MIPL 项目。 它支持的最新内核是 2.4.22,并且他们有适用于即将推出的 2.6 内核的补丁(请参阅 FAQ)。 访问 http://www.mobile-ipv6.org/ 以获取论文、软件或浏览邮件存档。
MIPL MIPv6 实现需要内核补丁。 该实现修改了 IPv6 内核堆栈,因此需要重新编译内核。 安装过程有详细的文档记录,但我将简要地逐步介绍。
请注意! 需要两个不同的内核(一个用于 MN,一个用于 HA)的需求已经过时。 只需在同一内核中编译对 MN 和 HA 的支持即可。 不可能同时作为 MN 和 HA 运行; 选择哪种模式取决于加载了哪些模块。
从 http://www.mobile-ipv6.org/ 下载最新的 Linux MIPv6 源代码。 今天最新的版本是:mipv6-1.0-v2.4.22。 后四位数字对应于应应用补丁的 Linux 内核
# cd /usr/local/src # wget http://www.mobile-ipv6.org/download/mipv6-1.0-v2.4.22.tar.gz # tar zxfv mipv6-1.0-v2.4.22.tar.gz |
从 ftp.kernel.org 下载并解压相应的 Linux 内核版本
# cd /usr/src # wget ftp://ftp.kernel.org/pub/linux/kernel/v2.4/linux-2.4.22.tar.bz2 # tar jxvf linux-2.4.22.tar.bz2 # ln -s linux-2.4.22 linux # cd linux |
应用 MIPv6 补丁
# patch -p1 --dry-run < /usr/local/src/mipv6-1.0-v2.4.22/mipv6-1.0-v2.4.22.patch |
--dry-run 选项检查补丁是否可以正确应用。 如果您收到任何失败的 hunk,则不应继续。 如果一切顺利,请执行
# patch -p1 < /usr/local/src/mipv6-1.0-v2.4.22/mipv6-1.0-v2.4.22.patch |
现在您的内核树已准备好进行配置。 运行您最喜欢的 make *config。 MIPv6 选项位于 “Networking Options” 下。 以下选项应存在于 “.config” 中
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 |
使用调试消息,可以更容易地弄清楚发生错误时发生了什么。 此外,在报告错误时,调试消息非常有帮助。
为了确保您拥有所有正确的选项,您可以运行chkconf_kernel.sh,这是一个包含在 MIPL tarball 中的小型 shell 脚本。
接下来,您应该编译并安装您的内核。
提示:为了轻松区分此内核与其他内核,您可以更改 “EXTRAVERSION” 变量在/usr/src/linux/Makefile例如 “-MIPv6-1”。
阅读 Linux 内核 HOWTO 以获取有关如何打补丁、编译和安装新内核的详细说明。
用户空间工具mipdiag,配置文件和 init 脚本必须安装才能使模块正常工作
# cd /usr/local/src/mipv6-1.0-v2.4.22 # ./configure # make && make install |
Red Hat
所有 init 脚本都位于/etc/init.d/,它们被符号链接到正确的运行级别(/etc/rcX.d/)。 您可以发出命令
# chkconfig --add mobile-ip6 |
以在启动时启用 MIPv6,或
# chkconfig --del mobile-ip6 |
以从启动中删除 MIPv6。
Debian
如果您很幸运地运行 Debian,则可以发出命令
# update-rc.d -n mobile-ip6 start 75 3 4 5 . stop 05 1 2 6 . |
以设置所有必要的链接。
Slackware
Slackware 用户将其所有启动/运行级别脚本放在/etc/rc.d。 由于 'configure' 不检查 “/etc/rc.d”,您可以添加 INIT_SLACK="/etc/rc.d",然后将 INIT_SLACK 添加到 'configure' 中的 INITDIRS(在 configure 中搜索 INITDIR)。 既然您正在运行 Slackware,您可能已经知道了这一点。 然后,以下命令应该可以解决问题
# echo '/etc/rc.d/mobile-ip6 start' >> /etc/rc.d/rc.local |
如果您不修改 Makefile,则mobile-ip6脚本安装在 '/'(然后您可以将其移动到 /etc/rc.d/)。