Linux下移动IPv6实现指南
5.4 内核IP路由表
MIPv6所做的一件有意思的事情是改变到隧道的缺省路由。新的缺省路由成为:
# route -A inet6
Kernel IPv6 routing table
Destination Next Hop Flags Metric Ref Use Iface
::/0 :: UD 64 0 0 ip6tnl1
....
若这样没有添加缺省路由,则可手动进行添加:
# ip route ::/0 via dev ip6tnl
5.5 移动时经过数个外地LAN
移动到数个所访问的网络,与移动到一个网络完全相同。您所必考虑的唯一一点是将为每个所访问的网络生成新地址。
MN移动经过数个不同的LAN
1.MN先访问''visitnet'',我们前面已经实现。
2.接着MN从''visitnet'' t移动到''visitnet2''。
3.在''visitnet2''时,MN生成一个新IPv6地址并向HA发送一条新的绑定更新。
4.然后MN返回家乡网络(见下一部分)。
除使用地址fec0:106:1000::/6代替fec0:106:1100::/64之外,位于"visitnet2"的AR被配置为另一个AR(位于"visitnet")。
执行以下命令(在MN上),使移动节点从''visitnet''移动到''visitnet2'':
# iwconfig eth0 essid visitnet2
然后您会看到MN配置自身到新网络:
# ifconfig eth0
eth1 Link encap:Ethernet HWaddr 00:90:7D:F3:03:
inet6 addr: fec0:106:1000:0:290:7dff:fef3:
inet6 addr: fec0:106:1100:0:290:7dff:fef3:
inet6 addr: fec0:106:2700:0:290:7dff:fef3:
inet6 addr: fec0:106:2700::4/64 Scope:Site
inet6 addr: fe80::290:7dff:fef3:
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1073 errors:212 dropped:212 overruns:0 frame:204
TX packets:371 errors:72 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:120340 (117.5 Kb) TX bytes:56912 (55.5 Kb)
Interrupt:3 Base address:0x100
①
在''visitnet2''的新的自动配置的地址。
注意!当到达一个新网络时,您可能要在MN上重新启动移动ipv6。
# /etc/init.d/mobile-ip6 restart
Stopping
Starting
则MN会向HA发送一条新绑定更新。注意新的“转交地址”:
# mipdiag -l
Mobile IPv6 Binding update list
Recipient CN: fec0:106:2700::2
BINDING home address: fec0:106:2700::4 care-of address: fec0:106:1000:0:290:7dff:fef3:
expires: 973 sequence: 14 state: 1
delay: 3 max delay 32 callback time: 773
您也会看到HA上的“绑定缓存”已经更新:
# mipdiag -c
Mobile IPv6 Binding cache
Home Address Care-of Address Lifetime Type
fec0:106:2700::4 fec0:106:1000:0:290:7dff:fef3:
5.6 返回家乡网络
您可以执行以下命令使MN返回家乡网络:
# iwconfig eth0 essid homenet
因为HA使用设置了HA-位(AdvHomeAgentFlag)发送出了radvd报文,所以MN就知道其返回了家乡网络,见
因为HA的绑定缓存信息已经清除(空的),所以您可看到MN“返回了家乡网络”:
Mobile IPv6 Binding cache
Home Address Care-of Address Lifetime Type
5.7 实时测试-平滑切换
为获得对移动IP机制的生动体验,启动GnomeMeeting程序。注意!您必须使用最新的GnomeMeeting以获得对IPv6的支持!然后进行“移动”,您可看到几乎平滑的切换。
使用提供IPv6支持的GnomeMeeting测试两个无线网络之间的漫游情况。
6 FAQ
1.问:为何必须创建/dev/mipv6_dev表项?
答:dev文件主要是为了用户空间工具、mipdiag能够通过设备文件使用ioctl调用对内核参数进行修改。mknod使用移动ip6模块可识别的参数创建了特殊的设备文件。
2. 问:有任何对内核2.6.x支持吗?
答:这是MIPL邮件列表上Henrik Petander的回答:
“这是对MIPL 2.6内核系列状态的简要概述:”
“我们已与USAGI计划组合作完成了移动IPv6的内核基础设施。基础设施实现了路由优化、隧道与策略路由。”
“现在我们正在对用户空间daemon进行开发,它负责处理MIPv6信令并对内核部分的运行进行控制。用户空间部分的进展也相当顺利。但是,仍缺乏协议逻辑性,因此实际上还没有可供用户进行测试的部分。我们应该在三月底准备好功能正常,可供测试的原型。”
3. 问:MIPL是否支持IPsec?
答:2.4.x不支持IPsec。2.6系列的MIPL一开始就会支持IPsec。您可使用第三方的IPsec实现。
4. 问:我怎样能控制用于MN与CN之间通信的路由的类型(通过HA的隧道或使用绑定更新/确认的直接通信)?
答:您可采用以下方法实现控制:
/proc/sys/conf/net/ipv6/mobility/accept_return_routability
若您不想使用返回路由可达性与路由优化,就设置其为0:
# echo 0 > /proc/sys/..../accept_return_routability
则MN会仅通过家乡隧道与CN进行通信。
5. 问:不同的无线网络能否使用不同的ESSID/WEP密钥?
答:可以,但您必须在到达新网络时进行改变。MIPv6无法自动这么做。
6. 问:如果MN已移动经过几个所访问的LAN,然后返回家乡网络;网卡还是有来自所有所访问网络的自动生成的IPv6地址!有任何方法能够“清空/删除”这些地址吗?
答:不,我不知道任何能够自动删除这些地址的方法,但您可以手动删除:
# ifconfig eth0 inet6
7. 问:主机B有两块网卡,分配了两个不同的子网。当我在主机A上pingB时,没有任何响应!为什么?主机A知道主机B(子网)的位置!
答:主机B不知道主机A的位置(B不知道A所在网络的位置),因此您必须添加一条路由表项:
# ip route add fec0:106:2700::/64 via fec0:106:2300::1
或
# route -A inet6 add fec0:106:2700::/64 gw fec0:106:2300::1 dev eth0
8. 问:在IPv6中如何设置缺省网关?
答:使用传统“路由”:
# route -A inet6 add default gw
或更加新的 "ip" 命令:
# ip route ::/0 via
9. 问:为何主机在要求路由器请求时,发送组播地址而不是任播地址?
答:因为主机需要从所有而不仅仅是任何一台路由器得到答案。这样就能获得所有参数并选择最“佳”的缺省路由器。
10. 问:为何MN没注意到它已经移动了?
答:它认为以前的路由器仍然可达。可能是路由器广播的很长寿命导致的。检查路由器上发送路由器广播的程序的配置。若程序支持路由器广播间隔配置,则您可通过设置间隔使用为on来帮助MN进行移动检测。细节见man radvd.conf的执行结果。
7 有用资源
1.Linux下移动IPv6实现http://www.mipl.mediapoli.com/
2.移动IP工作组(IETF)http://www.ietf.org/html.charters/mobileip-charter.html
3.移动IPv6移动性支持(RFC3775)http://www.ietf.org/rfc/rfc3775.txt
4. IPv6工作组 (IETF) http://www.ietf.org/html.charters/ipv6-charter.html
5. RFC2460 Internet协议,第6版(IPv6)规范http://www.ietf.org/rfc/rfc2460.txt
6. RFC2461 IP 第6版(IPv6)邻居发现http://www.ietf.org/rfc/rfc2461.txt
7. RFC2462 IPv6 Stateless Address Autoconfiguration http://www.ietf.org/rfc/rfc2462.txt
8. Peter Bieringer的Linux IPv6 指南(英文) http://ldp.linux.no/HOWTO/Linux+IPv6-HOWTO/
9. IPv6目前对网络用程序支持情况http://www.deepspace6.net/docs/ipv6_status_page_apps.html
10. linux内核编译手记http://www.20cn.net/ns/cn/zs/data/20030317231808.htm