网络安全 频道

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:1A 

          inet6 addr: fec0:106:1000:0:290:7dff:fef3:31a/64 Scope:Site

          inet6 addr: fec0:106:1100:0:290:7dff:fef3:31a/64 Scope:Site

          inet6 addr: fec0:106:2700:0:290:7dff:fef3:31a/64 Scope:Site

          inet6 addr: fec0:106:2700::4/64 Scope:Site                 

          inet6 addr: fe80::290:7dff:fef3:31a/64 Scope:Link          

          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 Mobile IPv6: OK

Starting Mobile IPv6: OK

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:31a

        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:31a  943       2

5.6   返回家乡网络

您可以执行以下命令使MN返回家乡网络:

# iwconfig eth0 essid homenet

因为HA使用设置了HA-位(AdvHomeAgentFlag)发送出了radvd报文,所以MN就知道其返回了家乡网络,见4.2.4节。

因为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不支持IPsec2.6系列的MIPL一开始就会支持IPsec。您可使用第三方的IPsec实现。

4. 问:我怎样能控制用于MNCN之间通信的路由的类型(通过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 del

7. 问:主机B有两块网卡,分配了两个不同的子网。当我在主机ApingB时,没有任何响应!为什么?主机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工作组(IETFhttp://www.ietf.org/html.charters/mobileip-charter.html

3.移动IPv6移动性支持(RFC3775http://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 BieringerLinux 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

http://netadmin.77169.com/HTML/20051226000723.html

0
相关文章