IPv6基础和实践:IPv6地址的分类、保障通信的基本协议、IPv6路由配置方式、应用实践
1、IPv6地址分类:
1)全球单播地址:前三位为001,因此全球单播地址十六进制表示时首位只能是2***:到3***:。IPv6地址由于数量巨大,在分配的时候就和区域相关,看到一个IPv6地址就可以判断它是哪个国家哪个地区,甚至确定是哪个房间
2)链路本地地址:FE80::/64,类似IPv4下的169.254.0.0/16地址,链路本地地址根据MAC地址通过特定算法生成,链路本地地址常做SLAAC无状态自动配置时的网关及链路内主机接口间通信的网络层身份标识。一个主机有多个接口就会有多个链路本地地址,主机间通信使用哪个链路地址由接口标识符(%)确定
3)唯一本地地址:fc00::/7(目前实际可用的是fd00::/8),不会放进公网路由表中的供组织机构内部使用的地址,类似于IPv4下的10.0.0.0/8&172.16.0.0/12&192.168.0.0/16,也叫私有地址
4)永久组播地址:FF01::到FF0F::,如主机请求网络配置时发出的路由请求RS就是用组播地址FF02::2做目标地址,表示向本地链路范围内所有路由发送请求;路由通告RA用组播地址FF02::1向本地链路范围所有主机发路由通告
5)任播地址:一种特殊的地址类型,它允许多个设备共享同一个IPv6地址,但数据包只会被路由到“最近”的一个设备(基于路由协议的最短路径选择)。任播地址在IPv6中主要用于提高服务的可用性和负载均衡,例如DNS根服务器、CDN节点等
2、保障IPv6通信的基本协议:
RS&RA用于无状态IPv6地址配置、DNS及前缀通告;NS&NA用于设备间邻居通告,保障网络层能找到相对应的链路层对象进行数据交付及规避冲突;DHCPv6用于有状态地址配置、DNS及地址前缀通告。RS/RA&NS/NA都使用ICMPV6协议
RS&RA协议:
NS&NA协议,其中NS有两种形式,一种是目标MAC及IP是单播地址:另一种NS的目标MAC和IP是和IPv6全局地址相关联的组播地址:
3、IPv6路由配置:
1)路由器RA通告(Router Advertisement),由IPv6路由器周期性发送(或响应请求),包含默认网关和前缀信息(Prefix Information)
2)手动配置静态路由,如 ip -6 route add
3)使用动态路由协议,如OSPFv3、RIPng、BGP等
4)通过DHCPv6扩展(RFC 6106)提供路由信息,一些厂商(如Cisco、Juniper)支持DHCPv6路由选项,但是非标准扩展,不被大多数操作系统(Linux、Windows)支持
4、杂项:
1)Windows下IPv6优先的配置命令:netsh interface ipv6 set prefix
2)输入包含IPv6地址的URL时要用[]:http://[ipv6]/index.html
3)当一级路由RA通告的IPv6前缀为60时,二级路由得到的前缀是64,此时二级路由就没有办法再通过通告前缀的方式来给其下终端分配IPv6地址,于是就有了二级路由通过中继RA通告和代理ND的方式给其下的终端分配IPv6地址。由于是二级路由“透明”中继一级路由的数据,对一级路由来说,右侧的PC1就是自己的直连邻居,在IPv6下,直连邻居的通信依赖NS&NA协议,此协议使用组播通信。当一级路由要和PC1通信时,不会使用目标地址为FF02::1的本地链路所有节点组播地址,而会使用与PC1相关的组播地址,前104位为“FF02::1:FF”,后24位为PC1的IPv6地址的后24位。此组播报文二级路由默认是不会处理的,但我们需要二级路由来处理,于是就需要开启二级路由WAN口的混杂模式,命令为:if config wan promisc。开启了混杂模式,二级路由就能接收到所有NS邻居发现报文进而使用NDP邻居发现代理程序进行后续处理
上述情况只有在某些架构的OpenWrt系统里需要手工开启混杂模式,正常情况下,开启NDP邻居发现协议代理即可
4)当前缀长度是64时,还想使用此前缀给下一级网络使用SLAAC自动分配IPv6地址的方案有两种:IPv6中继代理和桥接
在这篇文章中介绍了使用中继代理时的配置:光猫做一级路由,OpenWrt和RouterOS做二级路由时的IPv6配置
下面是来自中科大网络大咖张焕杰曾经发布的配置:其核心思想是上下网络间通过网桥让IPv6通信透明,同时阻止IPv4通信透明,让IPv4通信走原有的路由转发(包括NAT):