网络安全 频道

Linux下移动IPv6实现指南

4.2   配置过程详解

4.2.1               搭建功能完备的IPv6网络

在我们开始测试移动IP以前,需要一个功能完备的IPv6网络。所有节点之间应能相互ping通。这是关键部分。比如,若AR无法pingHA,就没有绑定更新。

我会给出搭建网络的方法和使用IPv6运行的简单步骤。搭建IPv6网络的更多信息,参见Peter BieringerLinux IPv6 HOWTO

为简单起见,我禁用了加密功能-注意:在与无线网络打交道时,您应总使用加密!
也请注意不同的无线网络有不同的ESSID

1.MN:移动节点有一个无线网卡。应禁用转发功能,但应接受自动配置与路由广播:

# iwconfig eth0 mode ad-hoc essid homenet enc off

# ifconfig eth0 inet6 add fec0:106:2700::4/64

# echo "0" > /proc/sys/net/ipv6/conf/eth0/forwarding

# echo "1" > /proc/sys/net/ipv6/conf/eth0/autoconf

# echo "1" > /proc/sys/net/ipv6/conf/eth0/accept_ra

# echo "1" > /proc/sys/net/ipv6/conf/eth0/accept_redirects

# /etc/init.d/mobile-ip6 start

2.HA家乡代理有一个无线网卡。应启用转发,因为它使用正常路由来将截获的报文分组从物理网卡发送到虚拟隧道网卡。注意:必须添加缺省路由,否则在与位于外地LAN上的MN通信时会出现问题。一个可能的解决方法是使用HA作为家乡网络的缺省路由。

# iwconfig eth0 mode ad-hoc essid homenet enc off

# ifconfig eth0 inet6 add fec0:106:2700::2/64

# echo "1" > /proc/sys/net/ipv6/conf/eth0/forwarding

# echo "0" > /proc/sys/net/ipv6/conf/eth0/autoconf

# echo "0" > /proc/sys/net/ipv6/conf/eth0/accept_ra

# echo "0" > /proc/sys/net/ipv6/conf/eth0/accept_redirects

# ip route add ::/0 via fec0:106:2700::1

# /etc/init.d/mobile-ip6 start

3.R(家乡)路由器有两个网卡;一个无线与一个有线。路由器必须启用转发功能。

 

# ifconfig eth0 inet6 add fec0:106:2300::2/64

# iwconfig eth1 mode ad-hoc essid homenet enc off

# ifconfig eth1 inet6 add fec0:106:2700::1/64

# echo "1" > /proc/sys/net/ipv6/conf/all/forwarding

# echo "0" > /proc/sys/net/ipv6/conf/all/autoconf

# echo "0" > /proc/sys/net/ipv6/conf/all/accept_ra

# echo "0" > /proc/sys/net/ipv6/conf/all/accept_redirects

# ip route add fec0:106:1100::/64 via fec0:106:2300::1

4.AR:接入路由器(位于外地链路上)也有两个网卡;一个无线和一个有线。必须启用转发功能。

# ifconfig eth0 inet6 add fec0:106:2300::1/64

# iwconfig eth1 mode ad-hoc essid visitnet enc off

# ifconfig eth1 inet6 add fec0:106:1100::1/64

# echo "1" > /proc/sys/net/ipv6/conf/all/forwarding

# echo "0" > /proc/sys/net/ipv6/conf/all/autoconf

# echo "0" > /proc/sys/net/ipv6/conf/all/accept_ra

# echo "0" > /proc/sys/net/ipv6/conf/all/accept_redirects

# ip route add fec0:106:2700::/64 via fec0:106:2300::2

您可不修改proc变量,而使用sysctl

注意:我们在实验床设置了静态路由。所有主机之间应该都可以相互ping通。

4.2.2               配置移动IPv6

MIPv6设置中最后要在network-mip6.conf中进行配置。RedHat系统中,该文件位于/etc/sysconfig/。该文件内容应非常容易理解。

1.HA:HA配置文件应包含以下设置:# cat /etc/network-mip6.conf

   

    # Home Agent configuration file

    FUNCTIONALITY=ha

    DEBUGLEVEL=1

    MIN_TUNNEL_NR=1

    MAX_TUNNEL_NR=5

    TUNNEL_SITELOCAL=yes

2.MN:MN配置文件看起来应该像这样:

# cat /etc/network-mip6.conf

 

# Mobile Node configuration file

FUNCTIONALITY=mn

DEBUGLEVEL=1

TUNNEL_SITELOCAL=yes

MIN_TUNNEL_NR=1

MAX_TUNNEL_NR=3

HOMEDEV=mip6mnha1    

HOMEADDRESS=fec0:106:2700::4/64  # MN''s home adress

HOMEAGENT=fec0:106:2700::2/64    # HA''s address

3.接着,启动移动IP

# /etc/init.d/mobile-ip6 start

Starting Mobile IPv6: OK

您通过在HA上执行ifconfig命令来验证其是否启动。若建立了隧道,ip6tnl1,则启动了移动ip6

# ifconfig

 eth1     Link encap:Ethernet  HWaddr 00:02:2D:2D:DE:79 

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

          inet6 addr: fe80::202:2dff:fe2d:de79/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:618 errors:6 dropped:6 overruns:0 frame:6

          TX packets:1485 errors:22 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:100

          RX bytes:87914 (85.8 KiB)  TX bytes:252596 (246.6 KiB)

          Interrupt:3 Base address:0x100

 

 ip6tnl1  Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00

          UP POINTOPOINT RUNNING NOARP  MTU:1460  Metric:1

          RX packets:6 errors:0 dropped:0 overruns:0 frame:0

          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:576 (576.0 b)  TX bytes:624 (624.0 b)

 

 ip6tnl2  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00

          UP RUNNING NOARP  MTU:1460  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

 

 lo       Link encap:Local Loopback 

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:16436  Metric:1

          RX packets:8 errors:0 dropped:0 overruns:0 frame:0

          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:560 (560.0 b)  TX bytes:560 (560.0 b)

①隧道建立,准备连接。

②另外一条隧道就绪。

您也会看到mipv6模块被加载(MN)。

# lsmod

Module                  Size  Used by    Not tainted

mip6_mn                59888   0  (unused)

ipv6_tunnel            11448   1  [mip6_mn]

mip6_base              40728   0  [mip6_mn]

ipv6                  179764  -1  [mip6_mn ipv6_tunnel mip6_base]

...

4.2.3               AR上配置radvd

MN来到一个新网络时,它进行链路本地地址配置,若成功则进入下一阶段。[RFC2462]IPv6无状态地址自动配置)描述了下一阶段:

“自动配置的下一阶段包括获得一条路由广播或确定没有路由器的存在。若存在路由器,则它们会发送具体规定主机应进行何种自动配置的路由器广播。若路由器不存在,则应当触发有状态自动配置。”

“路由器定期发送路由器广播,但连续广播之间的延迟通常比执行自动配置的主机愿意等待的时间更长。为快速获得一条广播,主机向全路由器组播组发送一条或多条路由器请求”。—第8页。

这是我们使用RADVD所在。

IPv6无状态地址自动配置相关的更多细节请阅读[RFC2462]

我们在AR的无线网卡上配置RADVDradvd.conf文件应包含以下内容:

# cat /etc/radvd.conf

interface eth1

{

AdvSendAdvert on;

AdvIntervalOpt on;

 

MinRtrAdvInterval 3;

MaxRtrAdvInterval 10;

AdvHomeAgentFlag off;

 

prefix fec0:106:1100::/64

{

AdvOnLink on;

AdvAutonomous on;

AdvRouterAddr on;

};

};

然后我们启动它:

# /etc/init.d/radvd start

您现在应可使用radvdump命令来确定所有radvd报文都正确的定期发送:

# radvdump

Router advertisement from fe80::202:2dff:fe54:d1b2 (hoplimit 255)

Received by interface eth1

# Note: {Min,Max}RtrAdvInterval cannot be obtained with radvdump

AdvCurHopLimit: 64

AdvManagedFlag: off

AdvOtherConfigFlag: off

AdvHomeAgentFlag: off

AdvReachableTime: 0

AdvRetransTimer: 0

Prefix fec0:106:1100::/64

AdvValidLifetime: 2592000

AdvPreferredLifetime: 604800

AdvOnLink: on

AdvAutonomous: on

AdvRouterAddr: off

AdvSourceLLAddress: 00 02 2D 54 D1 B2

注意!当在HA上使用radvd并启用“autoconf”(在proc中)时,除静态地址以外,您也会在MN上得到一个自动生成的IPv6地址:

0
相关文章