金梦然
(国家信息中心 北京市 100045)
IPv6 可以同时定义无状态和有状态的地址自动配置机制,进而有效实现实际的分配和管理。其中,有状态地址自动配置是使用DHVPv6 的协议来有效实现相关节点动态的IPv6 的地址和相关参数的分配;而无状态的地址自动配置是利用邻居发现协议来有效实现的,也就是其中的相关节点利用接收并存储于本地链路上的路由器所发出的路由器通告内容,充分结合本地接口的相关表示来生成一个全局式的单播公用地址。无状态地址自动配置是不需要利用节点手工配置相关地址和参数的,也可以让节点获取相关地址,进而实现真正意义上的即插即用。当某一个站点的网络前缀发生变化的时候,只需要在实际发送RA 相关消息的路由器上进行地址前缀信息的重新编制,就可以重新定制通告的前缀,节点就可以方便进行重新编制来完成切换,且并不会对网络的连接出现影响。
IPv6 节点在无状态自动配置上重新定义了IPv6 节点在实际使用相关节点的可用信息和相关路由器所分发出的信息配置每个实际应用范围地址的必要过程,其在实际配置中,除了要使用路由器以外,是不需要任何的人为干预的,也并不需要任何一种类型的服务器。其在实际配置过程中会涉及三个部分的机制,即为路由器发现、重复性的地址检测和前缀的地址新编。路由器的发现可以让相关节点在实际获取的链路上的相关前缀和路由器所发出的信息;重复地址检测则保证了其实际配置的每一个IPv6 地址在链路上的唯一性;前缀重新编址则会在上述两个机制的基础上,进行通告前缀的重新编制,进而完成网络前缀的自由切换。如图1所示。
实际的配置过程主要是以链路本地地址的自动生成来时的,并在过程中启用了IPv6 协议栈的节点,根据链路本地前缀FE80::/64 和EUI-64 格式的接口标识符号,从而生成一个临时性的链路本地的地址;其次,使用重复地址检测来有效检验此临时链路在本地地址中的唯一性,在实际检测过程中发出的临时节点请求内容的实际目标地址字段的数值为临时性的链路本地的地址;如果在实际接收中收到邻节点的相关响应请求内容的时候。也说明了本地的链路上也有另一个节点在同时使用该临时性的链路本地地址,此时地址将会自动的停止为其停止进行配置,如果出现此种情况,就需要使用人为的方式为其进行手动的配置;如果没有收到邻节点的响应请求和公告内容,此时的临时性的链路的本地地址就看做其是唯一且有效的,接口的地址为链路本地的地址。
图1:IPv6 节点无状态自动配置方式
图2:地址状态与生存周期之间的关系
节点接着会以链路自身的地址为基本地址向全部的路由器目的地址发送路由器的请求内容(RS)。在路由器的伪周期性的地址发送路由器公告(RA)内容的同时,节点也会发送路由器的请求内容,并请求路由器能够立即发送路由器公告内容进行积极的响应,而不是等待一个伪周期所发出的路由器公告内容。在默认的情况之下,节点最多可以发送3 个路由器的请求内容。如果没有接收到有路由器所发出的公告内容,节点就会使用原有的状态地址自动的和其他的参数进行配置;如果接收到了相关路由器所发出的请求内容,节点会根据实际内容类设置限制、可以到达的实际时间、重发定时器和MTU 等参数的数值。对于每一个接收到RA 中的前缀信息选项,如果在相关链路上的实际标志是1,节点就会将内容中的前缀添加到实际的前缀列表中去;如果自治配置的标志是1,则会使用前缀和符合其接口的标识符生成的一个临时性的地址。接下来,所使用的重复地址检测在唯一性方面的具体情况。如果临时性的地址是正在使用中的状态,就不会使用这一临时性的地址来初始化接口;如果临时性的地址并没有被使用,则会根据实际情况来选择这一临时性的地址来初始化接口,实际也包括了根据请求内容中的前缀信息选项的有效性和优先的生存期字段的数值来设置相关地址的有效生存时间和优先的生存时间。如果路由器的公告内容中的实际管理地址配置标志位是1 的话,就会使用有状态的地址自动配置相关协议,进而获取其他的地址;如果路由器的公共内容中有其他有状态的配置标志位且为1 的话,就会使用有状态的地址自动配置协议来获取除了地址以外的其他参数和配置。
节点的无状态地址自动配置完成以后,在现阶段的链路接口上就会存在一个链路本地范围的链路本地地址和1 个全库范围之内的公用IPv6 地址。自动配置的IPv6 全局地址有一个实际的生存周期,在这个生存周期中,这一地址会根据优先时间和有效时间中间的关系,会划分为临时性的、优先性的、反对性的无效性4 种状态,如图2所示。
其中临时性状态表示此时主机所获得的地址正在被重复性的检测;优先状态则表示通过重复性检测出唯一性,该节点可以有效使用该地址所发送的和所接收到的内容;在反对的状态之下,相关协议则不建议使用这一地址去进行通信,但原有的通信还是可以继续使用这一反对状态的地址的;无效状态的节点是不可以再进行相关内容的接收和发送的。自动进行配置的全局公用的IPv6 地址的缺省有效期为30 天左右,实际优先的生存时间为7 天左右。
无状态地址的自动配置所产生的全局IPv6 地址的64 为接口标识符是由EUI-64 这一格式产生的,而EUI-64 接口标识符则是由节点MAC 地址进行一对一的映射而得来的,不论相关路由器的所发出的内容前缀是什么样的,64 为接口的实际标识符都是一样的。也正是因为这样,类似的地址一定会是全局性的且唯一性的,这样的现象也被叫做全局应用范围的公用地址。对于其地址管理方面来讲,利用IPv6 的相关数据包的原地址可以推断出这部分的节点MAC 地址,前提是只要该节点MAC 地址是经过注册的,就可以从该IPv6数据包的原地址对应到MAC 的实际注册用户。处于对IPv6 原地址安全性能的思考,IEEE 也制定了一个IPv6 无状态地址自动配置的私密性扩展的特性,启用这一属性的IPv6 节点会通过无状态地址自动的配置从而获得地址的接口标识符。由多个通告的前缀将会产生多个有着同样随机接口标识符的地址,这样的地址也被叫做全局临时地址。由节点所发起的向外部通信也会首选全局临时性的地址作为原地址建立也一个有效的连接。临时地址也同样有着4 个地址的生存状态和2 个生存周期,不同的是,其优先生存期和实际的有效生存期全部小于全局公用的IPv6 地址。全局的临时性的IPv6 地址的缺省有效生存期为7 天左右,优先生存期限为1 天。
利用重复检测之后的全局临时性的地址会首先进入到有效的状态中,实际可以使用的地址会在发送和接收IPv6 的数据包。在经过了1 天的优先生存期之后,节点将会从重新产生一个全新的随机数值作为已有的前缀的全新的接口标识符,而原有的全局临时的地址则会就进入一个反对的状态中,全新的全局性的临时地址在经过了一天的优先生存期之后,节点将会再产生一个全新的随机的数值,并将其作为也一个已有的前缀新接口标识符,新的全局性的临时地址则又会进入也一个反对的状态中共。由于此时处于反对状态的全局性的临时性的地址在达到有效的生存期之后才会从节点之中删除。所以,随着时间的变化,会出现节点因为使用了多个有着不同随机接口标识符的IPv6 地址来接收和发送相关内容。
启用了IPv6 无状态地址自动配置的私密性和扩展性的节点地址也会随着时间的变化而不断的生产变化,这会给实际的地址管理带来地址身份确认上的诸多困难,也可以理解为低密性和扩展性也有效提升了节点地址的实际安全性能,却增加了在地址管理方面的资金投入。
利用相关协议有效实现IPv6 节点无状态地址的自动配置,不仅实现了IPv6 节点的即插即用性能,也有着IPv6 在联网上的方便简洁性能。相关管理人员只需要对IPv6 的前缀与路由器进行必要的规划,并使用用户方的路由器上的配置前缀的内容,使用者皆可以实现接入本地链路并获取地址,进而访问相关网络。
但是这种方便操作和简便性却会带来不同程度的安全隐患。针对IPv6 节点无状态地址自动配置的三种配置机制,我们发现其中可能会存在相关的威胁,首先,路由器的发现机制,其主要是通过路由器的相关接受内容来发现的,一些恶意的主机是可以伪装成合法的路由器进行相关内容的发送和接受,在相关内容中会修改默认的路由器为级别比较高的优先级,使用IPv6 节点在实际的默认路由器的列表中选择恶意的主机为缺省的网关,进而达到实际的攻击目的。其次,对于重复的地址进行检测,IPv6 节点在无状态的自动配置链路本地或者全局单播地址的时候,是需要设置地址为临时的状态的。此时,恶意的主机将会针对相关内容进行假冒的限用,让IPv6 节点的实际重复检测失败,进而让IPv6 节点不能正常运行。最后,针对前缀的地址重新编制,恶意主机也会发送一个假冒的内容,并虚构一个假的前缀信息,其实际的优先生存时间和有效的生存时间也会大于原来的合法的前缀。IPv6 节点在收到这样的内容之后,会出现将原来的前缀停止使用的现象,并重新得到一个虚假的前缀,一直到原有的前缀的有效生存时间递减到0 的时候,合法的前缀就会被彻底作废,进而造成所使用的网络中断。
综上所述,进行IPv6 网络的规划和用户的地址分配,IPv6 节点的无状态地址自动配置系统有着非常强的优势,其有效实现了IPv6 用户在实际访问互联网时候的即插即用。但与此同时,其也给IPv6 网络带来了附加的安全隐患,进而提升了相关管理方面的成本投入。所以,必须要从实际的管理方向来看,深入分析实际无状态地址进行自动配置系统所存在的相关问题,进而有针对性的提出相关策略,让IPv6 节点可以更加方便又安全的进行网络访问。