IPv6 ND配置举例
关键词:IPv6 ND
摘 要:本文主要介绍IPv6 ND的应用及其典型配置。
缩略语:
缩略语 |
英文全名 |
中文解释 |
ARP |
Address Resolution Protocol |
地址解析协议 |
FIB |
Forwarding Information Base |
转发信息表 |
ICMPv6 |
Internet Control Message Protocol version 6 |
因特网控制报文协议第6版 |
IPv6 |
Internet Protocol version 6 |
IP协议第6版 |
NA |
Neighbor Advertisement |
邻居通告 |
ND |
Neighbor Discovery |
邻居发现 |
NS |
Neighbor Solicitation |
邻居请求 |
RA |
Router Advertisement |
路由器通告 |
RS |
Router Solicitation |
路由器请求 |
目 录
1 特性简介... 3
2 应用场合... 3
3 配置举例... 4
3.1 组网需求... 4
3.2 配置思路... 4
3.3 配置步骤... 5
3.3.1 Device A的配置... 5
3.3.2 Device B的配置... 6
3.3.3 Host的配置... 6
3.3.4 验证结果... 7
4 相关资料... 9
4.1 相关协议和标准... 9
IPv6邻居发现协议(IPv6 ND,简称ND)是IPv6的一种基础协议,它利用NA、NS、RA、RS和重定向五种类型的ICMPv6消息,来确定邻居节点之间关系和地址信息,实现地址解析、验证邻居是否可达、重复地址检测、路由器发现/前缀发现、地址自动配置和重定向等功能。
邻居发现协议代替了IPv4中的ARP、ICMP路由器发现(Router Discovery)和ICMP重定向消息(Redirect Message),并提供了一系列增强功能,保障了设备的安全性。
在IPv6通信过程中始终需要运行ND协议。例如,通信节点间转发IPv6报文、主机和路由器间交换IPv6地址配置信息时,都需要使用ND协议获得链路层地址、邻居可达性等必要的信息。
主机通过ND可以实现:
l 发现邻居路由器;
l 自动获取地址前缀和其他相关配置参数。
路由器通过ND可以实现:
l 发布路由器的存在、主机配置参数和地址前缀;
l 通知主机向特定目的地址转发报文的理想下一跳地址。
通过ND,主机和路由器还可以实现:
l 解析邻居节点的链路层地址;
l 按照一定机制维护邻居信息。
一般情况下,ND默认的配置就可以满足普通用户的需求,但是,下面两种情况下,需要在设备上进行ND的配置:
l 网络状态不稳定或网络中存在安全隐患时,为了保证设备间通信稳定,需要调整部分参数;
l 设备为其他主机提供地址前缀信息时,需要对设备进行设置。
Device A作为网关设备,在2001::/64网段内发布地址前缀信息。该网段内的主机根据获得的地址前缀信息自动配置IPv6地址,并实现通过该地址与外部网络设备通信。
图1 IPv6ND典型配置组网图
(1) 为了使网关设备Device A发布IPv6地址前缀,需要在Device A上进行如下配置:
l 使能IPv6报文转发功能,并配置各个接口的IPv6地址(必选)。
l 取消对RA消息发布的抑制,使设备能够从接口上发送RA消息(必选)。
l 配置RA消息中的前缀信息,以便主机根据该前缀信息自动配置IPv6地址(可选,缺省情况下,使用发送RA消息的接口IPv6地址作为RA中的前缀信息)。
l 修改RA消息中的被管理地址配置标志位。该标志位为1时,主机将通过有状态自动配置(例如DHCP服务器)来获取IPv6地址;该标志位为0时,将通过无状态自动配置获取IPv6地址,即根据自己的链路层地址及路由器发布的前缀信息生成IPv6地址。在本配置举例中,被管理地址配置标志位需要配置为0(可选,缺省情况下,被管理地址的配置标志位为0)。
(2) 为了使主机能够根据收到的地址前缀信息自动配置IPv6地址,主机上需要安装IPv6协议(必选)。
(3) 为了保证主机可以和Device B通信,在Device B上需要进行如下配置:
l 使能IPv6报文转发功能,并配置各个接口的IPv6地址(必选)。
l 配置静态路由或动态路由协议,使得Device B上存在到达主机所在网段的路由(必选)。
& 说明:
l 以下配置均是在实验室环境下进行的配置和验证,配置前设备的所有参数均采用出厂时的缺省配置。如果您已经对设备进行了配置,为了保证配置效果,请确认现有配置和以下配置不冲突。
l 本文档不严格与具体软、硬件版本对应。
# 使能IPv6报文转发功能。
<DeviceA> system-view
[DeviceA] ipv6
# 配置接口Ethernet1/1的IPv6地址。
[DeviceA] interface ethernet 1/1
[DeviceA-Ethernet1/1] ipv6 address 2001::1/64
# 允许接口Ethernet1/1发送RA消息。
[DeviceA-Ethernet1/1] undo ipv6 nd ra halt
# 指定发布的地址前缀为2001::/64,该前缀的有效生命期为86400秒,首选生命期为3600秒。
[DeviceA-Ethernet1/1] ipv6 nd ra prefix 2001::/64 86400 3600
[DeviceA-Ethernet1/1] quit
# 配置接口Ethernet1/2的IPv6地址。
[DeviceA] interface ethernet 1/2
[DeviceA-Ethernet1/2] ipv6 address 3001::1/64
[DeviceA-Ethernet1/2] quit
[DeviceA] display current-configuration
#
ipv6
#
interface Ethernet1/1
port link-mode route
ipv6 address 2001::1/64
ipv6 nd ra prefix 2001::/64 86400 3600
undo ipv6 nd ra halt
#
interface Ethernet1/2
port link-mode route
ipv6 address 3001::1/64
#
return
# 使能IPv6报文转发功能。
<DeviceB> system-view
[DeviceB] ipv6
# 配置接口Ethernet1/1的IPv6地址。
[DeviceB] interface ethernet 1/1
[DeviceB-Ethernet1/1] ipv6 address 3001::2/64
# 配置到达Host所在网络2001::/64的IPv6静态路由,下一跳地址为3001::1。
[DeviceB] ipv6 route-static 2001:: 64 3001::1
[DeviceB] display current-configuration
#
ipv6
#
interface Ethernet1/1
port link-mode route
ipv6 address 3001::2/64
#
ipv6 route-static 2001:: 64 3001::1
#
return
Host上需安装IPv6协议,根据IPv6邻居发现协议,自动发现链路上路由器并配置IPv6地址。下面仅以安装了Windows XP操作系统的PC作为Host为例,说明IPv6 ND的配置过程。
(1) 进入命令行模式,运行如下命令安装IPv6协议。
C:\> ipv6 install
Installing...
Succeeded.
(2) 安装成功后,检查网卡是否已经获得IPv6链路本地地址。
C:\> ipconfig
Windows IP Configuration
Ethernet adapter 本地连接:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 192.168.1.17
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IP Address. . . . . . . . . . . . : fe80::20d:88ff:fef8:dd7%6
Default Gateway . . . . . . . . . :
其中,地址后面的“%6”指的是第6个IPv6接口,通过ipv6 if命令可以查看PC上有哪些IPv6接口。
(3) 当PC收到Device A对外定期发布的IPv6地址前缀2001::/64时,无需任何命令,就会自动生成以2001::/64为前缀的全球单播地址。
通过以下方式可以验证配置是否成功:
(1) 检查PC上是否自动生成IPv6全球单播地址
l 在PC上利用如下命令可以查看自动生成的IPv6地址:
C:\> ipconfig
Windows IP Configuration
Ethernet adapter 本地连接:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 192.168.1.17
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IP Address. . . . . . . . . . . . : 2001::dc36:939:d072:7d3f
IP Address. . . . . . . . . . . . : 2001::20d:88ff:fef8:dd7
IP Address. . . . . . . . . . . . : fe80::20d:88ff:fef8:dd7%6
Default Gateway . . . . . . . . . : fe80::20f:e2ff:fe00:1024%6
通过上面的信息可以看出:Host获得的IPv6全球单播地址为2001::DC36:939:D072:7D3F和2001::20D:88FF:FEF8:DD7;Host的缺省网关为Device A上接口Ethernet1/1的链路本地地址FE80::20F:E2FF:FE00:1024。
& 说明:
l 需要注意的是获得网络地址前缀后,Windows XP会生成两个全球单播地址,其中一个地址的接口ID根据接口的MAC地址自动生成,另一个地址的接口ID为随机生成,通信时可以选用接口ID随机生成的全球单播地址,以确保根据MAC地址自动生成的接口ID不会被泄漏出去。
l 在Windows Server 2003上,取消了随机生成接口ID的功能。
l 也可以从发布RA消息的对端设备Device A上获得Host的IPv6地址信息:
[DeviceA] display ipv6 neighbors interface ethernet 1/1
Type: S-Static D-Dynamic
IPv6 Address Link-layer VID Interface State T Age
FE80::20D:88FF:FEF8:DD7 000d-88f8-0dd7 N/A Eth1/1 REACH D 1
2001::20D:88FF:FEF8:DD7 000d-88f8-0dd7 N/A Eth1/1 REACH D 11
(2) 在Host、Device A和Device B上可以使用Ping命令检查和其它设备的互通性
# 在Device B上检查是否可以Ping通Device A。
[DeviceB] ping ipv6 -c 1 3001::1
PING 3001::1 : 56 data bytes, press CTRL_C to break
Reply from 3001::1
bytes=56 Sequence=1 hop limit=64 time = 6 ms
--- 3001::1 ping statistics ---
1 packet(s) transmitted
1 packet(s) received
0.00% packet loss
round-trip min/avg/max = 6/6/6 ms
# 在Device B上检查是否可以Ping通Host。
[DeviceB] ping ipv6 -c 1 2001::20D:88FF:FEF8:DD7
PING 2001::20D:88FF:FEF8:DD7 : 56 data bytes, press CTRL_C to break
Reply from 2001::20D:88FF:FEF8:DD7
bytes=56 Sequence=1 hop limit=63 time = 17 ms
--- 2001::20D:88FF:FEF8:DD7 ping statistics ---
1 packet(s) transmitted
1 packet(s) received
0.00% packet loss
round-trip min/avg/max = 17/17/17 ms
同样,在Host上也可以Ping通Device A和Device B。
l RFC 2461: Neighbor Discovery for IP version 6 (IPv6)
l RFC 2463: Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification