13-IPv6基础配置
本章节下载: 13-IPv6基础配置 (320.36 KB)
本系列设备仅管理用以太网接口支持IPv6功能。
IPv6(Internet Protocol Version 6,互联网协议版本6)是网络层协议的第二代标准协议,也被称为IPng(IP Next Generation,下一代互联网协议),它是IETF(Internet Engineering Task Force,互联网工程任务组)设计的一套规范,是IPv4的升级版本。IPv6和IPv4之间最显著的区别为:IP地址的长度从32比特增加到128比特。
通过将IPv4报文头中的某些字段裁减或移入到扩展报文头,减小了IPv6基本报文头的长度。IPv6使用固定长度的基本报文头,从而简化了转发设备对IPv6报文的处理,提高了转发效率。尽管IPv6地址长度是IPv4地址长度的四倍,但IPv6基本报文头的长度只有40字节,为IPv4报文头长度(不包括选项字段)的两倍。
图1-1 IPv4报文头和IPv6基本报文头格式比较
IPv6的源地址与目的地址长度都是128比特(16字节)。它可以提供超过3.4×1038种可能的地址空间,完全可以满足多层次的地址划分需要,以及公有网络和机构内部私有网络的地址分配。
IPv6的地址空间采用了层次化的地址结构,有利于路由快速查找,同时可以借助路由聚合,有效减少IPv6路由表占用的系统资源。
为了简化主机配置,IPv6支持有状态地址配置和无状态地址配置:
· 有状态地址配置是指从服务器(如DHCPv6服务器)获取IPv6地址及相关信息;
· 无状态地址配置是指主机根据自己的链路层地址及路由器发布的前缀信息自动配置IPv6地址及相关信息。
同时,主机也可根据自己的链路层地址及默认前缀(FE80::/10)形成链路本地地址,实现与本链路上其他主机的通信。
IPv6将IPsec作为它的标准扩展头,可以提供端到端的安全特性。这一特性也为解决网络安全问题提供了标准,并提高了不同IPv6应用之间的互操作性。
IPv6报文头的流标签(Flow Label)字段实现流量的标识,允许设备对某一流中的报文进行识别并提供特殊处理。
IPv6的邻居发现协议是通过一组ICMPv6(Internet Control Message Protocol for IPv6,IPv6互联网控制消息协议)消息实现的,管理着邻居节点间(即同一链路上的节点)信息的交互。它代替了ARP(Address Resolution Protocol,地址解析协议)、ICMPv4路由器发现和ICMPv4重定向消息,并提供了一系列其他功能。
IPv6取消了IPv4报文头中的选项字段,并引入了多种扩展报文头,在提高处理效率的同时还大大增强了IPv6的灵活性,为IP协议提供了良好的扩展能力。IPv4报文头中的选项字段最多只有40字节,而IPv6扩展报文头的大小只受到IPv6报文大小的限制。
IPv6地址被表示为以冒号(:)分隔的一连串16比特的十六进制数。每个IPv6地址被分为8组,每组的16比特用4个十六进制数来表示,组和组之间用冒号隔开,比如:2001:0000:130F:0000:0000:09C0:876A:130B。
为了简化IPv6地址的表示,对于IPv6地址中的“0”可以有下面的处理方式:
· 每组中的前导“0”可以省略,即上述地址可写为2001:0:130F:0:0:9C0:876A:130B。
· 如果地址中包含一组或连续多组均为0的组,则可以用双冒号“::”来代替,即上述地址可写为2001:0:130F::9C0:876A:130B。
在一个IPv6地址中只能使用一次双冒号“::”,否则当设备将“::”转变为0以恢复128位地址时,将无法确定“::”所代表的0的个数。
IPv6地址由两部分组成:地址前缀与接口标识。其中,地址前缀相当于IPv4地址中的网络号码字段部分,接口标识相当于IPv4地址中的主机号码部分。
地址前缀的表示方式为:IPv6地址/前缀长度。其中,前缀长度是一个十进制数,表示IPv6地址最左边多少位为地址前缀。
IPv6主要有三种类型的地址:单播地址、组播地址和任播地址。
· 单播地址:用来唯一标识一个接口,类似于IPv4的单播地址。发送到单播地址的数据报文将被传送给此地址所标识的接口。
· 组播地址:用来标识一组接口(通常这组接口属于不同的节点),类似于IPv4的组播地址。发送到组播地址的数据报文被传送给此地址所标识的所有接口。
· 任播地址:用来标识一组接口(通常这组接口属于不同的节点)。发送到任播地址的数据报文被传送给此地址所标识的一组接口中距离源节点最近(根据使用的路由协议进行度量)的一个接口。
IPv6中没有广播地址,广播地址的功能通过组播地址来实现。
IPv6地址类型是由地址前面几位(称为格式前缀)来指定的,主要地址类型与格式前缀的对应关系如表1-1所示。
|
地址类型 |
格式前缀(二进制) |
IPv6前缀标识 |
|
|
单播地址 |
未指定地址 |
00...0 (128 bits) |
::/128 |
|
环回地址 |
00...1 (128 bits) |
::1/128 |
|
|
链路本地地址 |
1111111010 |
FE80::/10 |
|
|
全球单播地址 |
其他形式 |
- |
|
|
组播地址 |
11111111 |
FF00::/8 |
|
|
任播地址 |
从单播地址空间中进行分配,使用单播地址的格式 |
||
IPv6单播地址的类型可有多种,包括全球单播地址、链路本地地址等。
· 全球单播地址等同于IPv4公网地址,提供给网络服务提供商。这种类型的地址允许路由前缀的聚合,从而限制了全球路由表项的数量。
· 链路本地地址用于邻居发现协议和无状态自动配置中链路本地上节点之间的通信。使用链路本地地址作为源或目的地址的数据报文不会被转发到其他链路上。
· 环回地址:单播地址0:0:0:0:0:0:0:1(简化表示为::1)称为环回地址,不能分配给任何物理接口。它的作用与在IPv4中的环回地址相同,即节点用来给自己发送IPv6报文。
· 未指定地址:地址“::”称为未指定地址,不能分配给任何节点。在节点获得有效的IPv6地址之前,可在发送的IPv6报文的源地址字段填入该地址,但不能作为IPv6报文中的目的地址。
表1-2所示的组播地址,是预留的特殊用途的组播地址。
表1-2 预留的IPv6组播地址列表
|
地址 |
应用 |
|
FF01::1 |
表示节点本地范围所有节点的组播地址 |
|
FF02::1 |
表示链路本地范围所有节点的组播地址 |
|
FF01::2 |
表示节点本地范围所有路由器的组播地址 |
|
FF02::2 |
表示链路本地范围所有路由器的组播地址 |
另外,还有一类组播地址:被请求节点(Solicited-Node)地址。该地址主要用于获取同一链路上邻居节点的链路层地址及实现重复地址检测。每一个单播或任播IPv6地址都有一个对应的被请求节点地址。其格式为:
FF02:0:0:0:0:1:FFXX:XXXX
其中,FF02:0:0:0:0:1:FF为104位固定格式;XX:XXXX为单播或任播IPv6地址的后24位。
IPv6单播地址中的接口标识符用来唯一标识链路上的一个接口。目前IPv6单播地址基本上都要求接口标识符为64位。
对于所有IEEE 802接口类型的接口,IEEE EUI-64格式的接口标识符是从接口的链路层地址(MAC地址)变化而来的。IPv6地址中的接口标识符是64位,而MAC地址是48位,因此需要在MAC地址的中间位置(从高位开始的第24位后)插入十六进制数FFFE(1111111111111110)。为了使接口标识符的作用范围与原MAC地址一致,还要将Universal/Local (U/L)位(从高位开始的第7位)进行取反操作。最后得到的这组数就作为EUI-64格式的接口标识符。
图1-2 MAC地址到EUI-64格式接口标识符的转换过程
对于Tunnel类型的接口,IEEE EUI-64格式的接口标识符的低32位为Tunnel接口的源IPv4地址,ISATAP隧道的接口标识符的高32位为0000:5EFE,其他隧道的接口标识符的高32位为全0。
对于其他接口类型(例如,Serial接口)的接口,IEEE EUI-64格式的接口标识符由设备随机生成。
相关的协议规范有:
· RFC 1881:IPv6 Address Allocation Management
· RFC 1887:An Architecture for IPv6 Unicast Address Allocation
· RFC 1981:Path MTU Discovery for IP version 6
· RFC 2375:IPv6 Multicast Address Assignments
· RFC 2460:Internet Protocol, Version 6 (IPv6) Specification
· RFC 2464:Transmission of IPv6 Packets over Ethernet Networks
· RFC 2526:Reserved IPv6 Subnet Anycast Addresses
· RFC 3307:Allocation Guidelines for IPv6 Multicast Addresses
· RFC 4191:Default Router Preferences and More-Specific Routes
· RFC 4291:IP Version 6 Addressing Architecture
· RFC 4443:Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification
· RFC 4862:IPv6 Stateless Address Autoconfiguration
IPv6基础配置任务如下:
配置IPv6地址
请选择以下至少一项任务进行配置:
IPv6全球单播地址可以通过下面几种方式配置:
· 采用EUI-64格式形成:当配置采用EUI-64格式形成IPv6地址时,接口的IPv6地址的前缀需要手工配置,而接口ID则由接口自动生成。
· 手工配置:用户手工配置IPv6全球单播地址。
· 引用前缀生成IPv6地址:引用前缀生成IPv6地址时,接口的IPv6地址的前缀可以通过手工配置或DHCPv6动态获取,同时该前缀还会分配给终端设备。
· 无状态自动配置:根据接收到的RA报文中携带的地址前缀信息,自动生成IPv6全球单播地址。
每个接口可以有多个全球单播地址。
手工配置的全球单播地址(包括采用EUI-64格式形成的全球单播地址)的优先级高于自动生成的全球单播地址。如果在接口已经自动生成全球单播地址的情况下,手工配置前缀相同的全球单播地址,不会覆盖之前自动生成的全球单播地址。如果删除手工配置的全球单播地址,设备还可以使用自动生成的全球单播地址进行通信。
采用EUI-64格式形成IPv6地址和无状态自动配置IPv6地址,都会用到接口标识符。接口标识符根据接口的MAC地址生成。因此,如果修改了接口的MAC地址,IPv6地址也会变化,导致相关协议表项重建。如需避免该问题,用户可以采用其他不依赖MAC地址的方式为接口配置IPv6地址,比如手工指定IPv6地址。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 采用EUI-64格式形成IPv6地址。
ipv6 address { ipv6-address prefix-length | ipv6-address/prefix-length } eui-64
缺省情况下,接口上未配置IPv6全球单播地址。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 手工指定IPv6地址。
ipv6 address { ipv6-address prefix-length | ipv6-address/prefix-length }
缺省情况下,接口上未配置IPv6全球单播地址。
在配置了无状态自动配置IPv6地址功能后,接口会根据接收到的RA报文中携带的地址前缀信息和接口ID,自动生成IPv6全球单播地址。如果接口是IEEE 802类型的接口(例如,以太网接口),其接口ID是由MAC地址根据一定的规则生成,此接口ID具有全球唯一性。对于不同的前缀,接口ID部分始终不变,攻击者通过接口ID可以很方便的识别出通信流量是由哪台设备产生的,并分析其规律,会造成一定的安全隐患。
如果在地址无状态自动配置时,自动生成接口ID不断变化的IPv6地址,就可以加大攻击的难度,从而保护网络。为此,设备提供了临时地址功能,使得系统可以生成临时地址。配置该功能后,通过地址无状态自动配置,IEEE 802类型的接口可以同时生成两类地址:
· 公共地址:地址前缀采用RA报文携带的前缀,接口ID由MAC地址产生。接口ID始终不变。
· 临时地址:地址前缀采用RA报文携带的前缀,接口ID由系统根据MD5算法计算产生。接口ID不断变化。
在配置了优先选择临时地址功能前提下发送报文,系统将优先选择临时地址作为报文的源地址。当临时地址的有效生命期过期后,这个临时地址将被删除,同时,系统会通过MD5算法重新生成一个接口ID不同的临时地址。所以,该接口发送报文的源地址的接口ID总是在不停变化。如果生成的临时地址因为DAD冲突不可用,就采用公共地址作为报文的源地址。
临时地址的首选生命期和有效生命期的确定原则如下:
· 首选生命期是如下两个值之中的较小者:“RA前缀中的首选生命期”和“配置的临时地址首选生命期减去DESYNC_FACTOR”。DESYNC_FACTOR是一个0~600秒的随机值。
· 有效生命期是如下两个值之中的较小者:“RA前缀中的有效生命期”和“配置的临时地址有效生命期”。
如果RA报文携带的前缀长度不是64位,则该接口自动生成IPv6全球单播地址失败。
设备的接口必须启用地址无状态自动配置功能才能生成临时地址,而且临时地址不会覆盖公共地址,因此会出现一个接口下有多个前缀相同但是接口ID不同的地址。
如果公共地址生成失败,例如前缀冲突,则不会生成临时地址。
在接口上开启无状态地址自动配置功能后,接口通过无状态自动配置方式生成全球单播地址。如果通过undo ipv6 address auto命令关闭该功能,将删除该接口上所有自动生成的全球单播地址和链路本地地址。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 开启无状态地址自动配置功能,使接口通过无状态自动配置方式生成全球单播地址。
ipv6 address auto
缺省情况下,接口上无状态地址自动配置功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 配置系统生成临时地址。
ipv6 temporary-address [ valid-lifetime preferred-lifetime ]
缺省情况下,系统不生成临时地址。
(3) 优先选择临时地址作为报文的源地址。
ipv6 prefer temporary-address
缺省情况下,不会用临时地址作为接口发送报文的源地址。
(1) 进入系统视图。
system-view
(2) 配置IPv6前缀。请选择其中一项进行配置。
¡ 手工配置静态的IPv6前缀。
ipv6 prefix prefix-number ipv6-prefix/prefix-length
缺省情况下,未配置静态IPv6前缀。
¡ 配置设备作为DHCPv6客户端动态获取IPv6前缀,并生成指定编号的IPv6前缀。
(3) 进入接口视图。
interface interface-type interface-number
(4) 引用前缀生成接口上的IPv6地址,并将此前缀分配给终端设备。
ipv6 address prefix-number sub-prefix/prefix-length
缺省情况下,接口上未引用前缀,也不会向终端设备分配该前缀。
IPv6的链路本地地址可以通过两种方式获得:
· 自动生成:设备根据链路本地地址前缀(FE80::/10)及接口的链路层地址,自动为接口生成链路本地地址;
· 手工指定:用户手工配置IPv6链路本地地址。
当接口配置了IPv6全球单播地址后,同时会自动生成链路本地地址。且与采用ipv6 address auto link-local命令生成的链路本地地址相同。此时如果手工指定接口的链路本地地址,则手工指定的有效。如果删除手工指定的链路本地地址,则接口的链路本地地址恢复为系统自动生成的地址。
undo ipv6 address auto link-local命令只能删除使用ipv6 address auto link-local命令生成的链路本地地址。即如果此时已经配置了IPv6全球单播地址,由于系统会自动生成链路本地地址,则接口仍有链路本地地址;如果此时没有配置IPv6全球单播地址,则接口没有链路本地地址。
每个接口只能有一个链路本地地址,为了避免链路本地地址冲突,推荐使用链路本地地址的自动生成方式。
配置链路本地地址时,手工指定方式的优先级高于自动生成方式。即如果先采用自动生成方式,之后手工指定,则手工指定的地址会覆盖自动生成的地址;如果先手工指定,之后采用自动生成的方式,则自动配置不生效,接口的链路本地地址仍是手工指定的。此时,如果删除手工指定的地址,则自动生成的链路本地地址会生效。
生成链路本地地址时,会用到接口ID。对于IEEE 802类型的接口(例如以太网接口),其接口ID根据接口的MAC地址生成。因此,如果修改了接口的MAC地址,链路本地地址也会变化,导致相关协议表项重建。如需避免该问题,用户可以采用其他不依赖MAC地址的方式为接口配置链路本地地址,比如手工指定接口的链路本地地址。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置自动生成链路本地地址。
ipv6 address auto link-local
缺省情况下,接口上没有链路本地地址。当接口配置了IPv6全球单播地址后,会自动生成链路本地地址。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 手工指定接口的链路本地地址。
ipv6 address { ipv6-address [ prefix-length ] | ipv6-address/prefix-length } link-local
缺省情况下,未指定接口的链路本地地址。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置IPv6任播地址。
ipv6 address { ipv6-address prefix-length | ipv6-address/prefix-length } anycast
缺省情况下,接口上未配置任播地址。
在完成上述配置后,在任意视图下执行display命令可以显示IPv6配置后的运行情况,用户可以通过查看显示信息验证配置的效果。
在用户视图下,执行reset命令可以清除相应的统计信息。
表1-3 IPv6基础显示和维护
|
操作 |
命令 |
|
显示IPv6 FIB信息 |
display ipv6 fib [ ipv6-address [ prefix-length ] ] |
|
显示IPv6 FIB表项数的使用率 |
display ipv6 fib usage |
|
显示IPv6 ICMP流量统计信息 |
display ipv6 icmp statistics [ slot slot-number ] |
|
显示接口的IPv6信息 |
display ipv6 interface [ interface-type [ interface-number ] ] [ brief [ description ] ] |
|
显示IPv6前缀信息 |
display ipv6 prefix [ prefix-number ] |
|
显示IPv6 RawIP连接摘要信息 |
display ipv6 rawip [ slot slot-number ] |
|
显示IPv6 RawIP连接详细信息 |
display ipv6 rawip verbose [ slot slot-number [ pcb pcb-index ] ] |
|
显示IPv6报文及ICMPv6报文的统计信息 |
display ipv6 statistics [ slot slot-number ] |
|
显示IPv6 TCP连接摘要信息 |
display ipv6 tcp [ slot slot-number ] |
|
显示IPv6 TCP连接详细信息 |
display ipv6 tcp verbose [ slot slot-number [ pcb pcb-index ] ] |
|
显示IPv6 TCP代理连接的简要信息 |
display ipv6 tcp-proxy slot slot-number |
|
显示IPv6 UDP连接摘要信息 |
display ipv6 udp [ slot slot-number ] |
|
显示IPv6 UDP连接详细信息 |
display ipv6 udp verbose [ slot slot-number [ pcb pcb-index ] ] |
|
清除IPv6报文及ICMPv6报文的统计信息 |
reset ipv6 statistics [ slot slot-number ] |
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!
