概述:IPv6是用于解决IPv4网络地址资源不足问题,提出的新的互联网协议。设备在使用IPv6与其他设备通信时,设置ip的方式与IPv4差异在于,IPv4自动获取ip的方式只能依赖与DHCP服务器,但IPv6可以通过stateless autoconfiguration方式自动获取ip地址。
原理:首先每台支持IPv6设备存在两个v6的ip,一个是FE开头的唯一本地地址,用于局域网设备之间的通信;另一个是2或3开头(例如240e:…、2001:…)的全球唯一地址,用来与外网实现数据交互。
唯一本地地址:无状态情况下,一般是通过网卡的MAC地址通过EUI-64的算法来得到唯一本地地址,首先在MAC地址前24位(08-26-AE)与后24位(30-07-19)中间加入16bit(FFFE)转变成0826-AEFF-fe30-0719,此时得到64bit,而EUI-64规范生成的接口标识与前缀都为64bit,符合EUI-64规范。EUI-64规范接口标识需要将第7位进行反转,08=00001000,将8个bit位中的第7位反转,反转后00001010,比如网卡的MAC地址为08-26-AE-30-07-19,则唯一本地地址为FE80::A26:AEFF:FE30:0719,反转U/L位的主要目的是为了使EUI-64地址的本地管理具有更大的压缩性比如两个本地管理的EUI-64 02-00-00-00-00-00-00-01 02-00-00-00-00-00-00-02,如果不对U/L位反转则两个地址对应的链路本地地址为FE80:200:0:0:1和FE80::200:0:0:2,如果通过反转U/L位,两个接口的链路本地地址为FE80::1和FE80::2
全球唯一地址:获取全球唯一地址有三种方式:
方式一:无状态情况下获取全球唯一地址的关键是RA报文,路由器会定期或多播地向其所在链路(如一个 VLAN)发送 RA 报文,这些报文中包含了主机自动配置所需的关键信息,主机收到RA报文后会将报文中的前缀与自行生成的接口标识符结合,形成完整的 IPv6 地址。
RA报文解析如下:
•M位:当M位是1时,告知IPv6主机使用DHCPv6来获取IPv6地址
•O位:当O位是1时,告知IPv6主机使用DHCPv6获取 其他参数信息,如DNS地址信息等。
•路由器生存期(Router lifetime):用来告知IPv6主机本路由器作为默认网关时的有效期,单位是秒。当该字段值为0时,表示本路由器不能作为默认网关。
主机也可发送路由器请求(Router Solicitor,RS)报文后会触发同网段的路由器立即回复RA报文,以获取前缀信息、MTU信息等,而不用等待路由器周期性地发送RA报文。RS报文格式如下:
工作流程:
- 路由器发送 RA,公告网络前缀(如 240e:479:c10:e3d::/64),并设置 M=0, O=0。
- 客户端收到 RA 后,通过 EUI-64 或更常见的隐私扩展算法,自己生成一个 64 位的接口标识符。
- 客户端将前缀和接口标识符组合,得到全局 IPv6 地址(如 40e:479:c10:e3d: ec3d:f6fb:596:491/64)。
- 客户端执行重复地址检测(DAD),确保地址唯一。
- 客户端不会自动获得 DNS 信息。需要通过网络管理员手动配置,或通过如 IPv6 路由公告的 DNS 配置选项(RFC 6106) 来获取(但并非所有系统都支持)。
优点:结合了 SLAAC 的简单性和 DHCPv6 在管理 DNS 等方面的便利性,是当前最常用、最推荐的配置。
适用场景:简单网络,或 DNS 通过其他方式(如组策略)下发的环境。
方式二:无状态地址自动配置 + 无状态 DHCPv6,既IPv6 地址通过方式一获取,DNS通过DHCPv6获取。
工作流程:
- 路由器发送 RA,公告网络前缀,并设置 M=0, O=1。
- 客户端执行与方式一完全相同的 SLAAC 过程,为自己配置 IPv6 地址。
- 由于 O=1,客户端同时会启动一个无状态 DHCPv6 客户端进程。
- 客户端向 DHCPv6 服务器请求其他配置信息,但不请求 IP 地址。
- DHCPv6 服务器回应,提供 DNS 服务器地址、域名等信息。
优点:结合了 SLAAC 的简单性和 DHCPv6 在管理 DNS 等方面的便利性,是当前最常用、最推荐的配置。
方式三:有状态 DHCPv6,
工作流程:
- 路由器发送 RA,公告网络前缀(有时甚至不公告具体前缀,只告知“这里有路由器”),并设置 M=1。
- 客户端收到 RA 后,忽略 SLAAC 生成地址的过程(但可能会生成一个链路本地地址)。
- 客户端启动一个有状态 DHCPv6 客户端进程。
- 客户端向 DHCPv6 服务器请求分配一个完整的 IPv6 地址(就像 IPv4 的 DHCP 一样),同时也会获取 DNS 等其它信息。
优点:实现集中化的 IP 地址管理,可以精确知道哪个客户端获得了哪个 IP。
缺点:需要部署和维护 DHCPv6 服务器,失去了 SLAAC 的简洁性。
适用场景:需要严格 IP 地址管理和审计的环境。
CH394Q实现:CH394Q 进入 IPv6 模式后会自动发送 RS(Router Solicitation)包,重传 RCN(重传次数寄存器)次,间隔 RTIME(重传时间寄存器)时间。如果局域网内有路由器回应了正确的 RA(RouterAdvertisement)包,CH394Q 会解析 RA 包数据,将解析出的信息(前缀地址、长度、生存时间等)存入 PA、RAPL、RAPF、RAVLT 等寄存器,并在全局中断寄存器(GINT)中报 RA 接收中断。此时用户可根据前缀信息设置 CH394Q 的全局单播地址。用户也可不使用 RA 信息,自行配置地址。
当 CH394Q 配置完本地链路地址(LLA)后,会自动启动冲突检测流程(DAD)。在 1 秒内,如果检测到对自身 LLA 地址的邻居通告(NA)回复,或收到其他设备发送的使用同一 IP 地址的邻居请求(NS)即表示该地址已被其他设备使用,即确认发生地址冲突,并在全局中断寄存器(GINT)中报地址冲突中断。DAD 过程中(1 秒)Socket 收发操作无效。
实测抓包:
CH394Q获取到的IPv6地址:240e:479:c80:14a4::1234:5
配置信息:
路由前缀长度(RAPL):64
路由优先级(RAPF):192
路由有效期(RAVLT):7200秒
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |