现在IPV6也普及的差不多了,折腾网络的时候总觉得有点不顺手,记录下有用的IPV6知识和踩过的坑
- IPv6 Prefix
- 运营商分发给你的一段公网IP段,你可以通过DHCP等协议将具体IP分配给下游设备
- 终端的IPv6地址组成
IPv6 Prefix
+本地地址
本地地址生成方式
- stateful对应
DHCPv6
,下游终端地址由DHCPv6服务器统一管理 - stateless是IPv6独有分发方案,也叫
SLAAC
,客户端根据自身mac地址通过EUI-64
算法生成
- EUI-64
- 一种用硬件mac地址生成接口标识符的方法
- SLAAC具体流程
-
- 使用link-local prefix拼接上EUI-64生成的接口标识符,生成本地IPv6地址,如fe80::1这种地址
- 执行Duplicate Address Detection (DAD),作用是使用多播检测自动生成的地址是否存在冲突
- 发送路由请求包Router Solicitation (RS) 到多播地址FF02::2,一般只有路由器在监听这个地址
- 路由器回复路由通告包Router Advertisement (RA),这个包包含公网IPv6 prefix和prefix length,一般prefix length不能超过64
- 终端将公网IPv6 prefix拼接EUI-64接口识别码,用作自己的公网IPv6地址,到这步已经具备基础IPv6链接能力了,但是还没有DNS配置
- 要获取DNS,必须通过DHCP请求,这时候再向DHCP服务器请求一下DNS就可以了 总结:SLAAC不使用DHCP配置地址,但需要DHCP配置DNS
- DHCPv6具体流程
- 和DHCPv4差不多
- RA报文标识Router Advertisement Flags
- 用来告诉终端从哪里获取IPv6地址和DNS信息
M-flag O-flag result 1 地址和DNS均通过DHCPv6获取 0 1 地址走SLAAC,DNS走DHCPv6 0 0 表示本地没有DHCPv6服务器 - Prf-flag
- 路由优先级,有Low (1), Medium (0), or High(3)三个选项,当本地存在多个路由时,终端根据这个值选择路由网关
- 参考
- networkacademy.io
OpenWrt wiki
留下评论