IPv6引言IPv6 地址表示IPv6 地址类型地址范围详解多播地址结构IPv6 与 IPv4 的主要区别IPv6 首部格式扩展首部IPv6 地址配置方式无状态地址自动配置SLAAC有状态配置DHCPv6手动配置邻居发现协议NDPIPv6 安全特性原生 IPSec 支持安全邻居发现SEND常见安全威胁与防护DNSv6DNS over IPv6DNSv6 的核心概念AAAA 记录详解DNSv6 的传输机制DNSv6 的配置方式通过 SLAAC 获取 DNS 服务器通过 DHCPv6 获取 DNS 服务器手动配置DNS64 与 NAT64 的配合引言随着互联网的飞速发展IPv4 地址已经于 2019 年正式耗尽。为了解决地址枯竭问题IETF 设计了下一代互联网协议——IPv6Internet Protocol version 6。IPv6 将地址长度从 32 位扩展到128 位理论上可提供约 3.4×10³⁸ 个地址足以满足未来物联网、移动设备等海量设备的接入需求。IPv6 不仅解决了地址数量问题还在安全性、自动配置、路由效率、移动性支持等方面做出了根本性改进是未来网络基础设施的核心协议。IPv6 地址表示IPv6 地址是一个 128 位的二进制数通常采用冒号十六进制表示法将 128 位分成 8 组每组 16 位用十六进制表示组之间用冒号分隔。完整格式示例2001:0DB8:0000:0000:0000:FF00:0042:8329简化规则省略前导零每组中的前导 0 可以省略。例如0042可简写为42。双冒号压缩连续的零组可以用::代替但一个地址中只能使用一次::。简化后示例2001:DB8::FF00:42:8329特殊地址::1—— 环回地址相当于 IPv4 的127.0.0.1::—— 未指定地址相当于 IPv4 的0.0.0.0IPv6 地址的文本表示规范RFC 5952推荐全小写十六进制字母、尽可能压缩、双冒号优先压缩最长的零组。例如2001:db8::1是标准写法。IPv6 地址类型IPv6 取消了广播地址引入了三种新的地址类型地址类型前缀说明单播地址—标识单个接口发往该地址的数据包只被该接口接收├ 全局单播地址2000::/3相当于 IPv4 的公网地址可在全球范围内路由├ 链路本地地址FE80::/10自动配置仅在同一链路内通信不可路由└ 唯一本地地址FC00::/7相当于 IPv4 的私有地址用于内部网络多播地址FF00::/8一对多通信替代了 IPv4 的广播功能任播地址—一对最近通信数据包被发送到一组接口中最近的一个地址范围详解全局单播地址2000::/3由全球路由前缀48位、子网ID16位和接口标识符64位组成。IANA 分配给各 RIR如 APNIC、ARIN再由 RIR 分配给 ISP 和企业。链路本地地址FE80::/10每个 IPv6 接口自动生成用于邻居发现协议NDP、路由协议如 OSPFv3等本地通信无需手动配置。唯一本地地址FC00::/7类似 IPv4 的私有地址10.0.0.0/8、192.168.0.0/16但具有全局唯一性通过伪随机算法生成避免地址冲突。多播地址结构多播地址格式为FF 标志位4位 范围域4位 组ID112位。常见范围域值1— 节点本地2— 链路本地5— 站点本地8— 组织本地E— 全局常用多播地址FF02::1— 所有节点链路本地FF02::2— 所有路由器链路本地FF02::1:FFxx:xxxx— 请求节点多播地址用于重复地址检测IPv6 与 IPv4 的主要区别对比项IPv4IPv6地址长度32 位128 位地址数量约 43 亿约 3.4×10³⁸地址表示点分十进制冒号十六进制首部长度可变20~60 字节固定 40 字节校验和有无依赖上层和链路层校验分片路由器可进行分片仅源主机分片路径 MTU 发现广播支持取消由多播替代NAT广泛使用设计上无需 NAT安全性可选IPSec原生支持 IPSec自动配置DHCP无状态地址自动配置SLAAC移动性支持有限原生支持MIPv6QoS服务类型字段流量类型 流标签IPv6 首部格式IPv6 的首部固定为40 字节相比 IPv4 简化了许多去掉了校验和、选项字段等提高了路由器转发效率。字段位数说明版本4位固定为 6流量类型8位类似于 IPv4 的服务类型用于 QoS流标签20位用于标识同一数据流便于路由器处理有效载荷长度16位标识数据部分的长度不含首部下一个首部8位标识扩展首部或上层协议类型相当于 IPv4 的协议字段跳数限制8位相当于 IPv4 的 TTL每经过一个路由器减 1源地址128位发送方 IPv6 地址目的地址128位接收方 IPv6 地址扩展首部IPv6 通过扩展首部实现选项功能只有需要时才添加提高了处理效率。常见的扩展首部包括下一个首部值扩展首部类型说明0逐跳选项首部每跳路由器都必须处理用于巨型载荷、路由器告警等43路由首部指定数据包经过的中间节点类似 IPv4 的松散源路由44分片首部源主机对数据包进行分片路由器不再参与分片50封装安全载荷ESPIPSec 加密和认证51认证首部AHIPSec 数据完整性认证60目的选项首部仅目的节点处理扩展首部按固定顺序链式排列每个首部的下一个首部字段指向下一个扩展首部或上层协议。IPv6 地址配置方式无状态地址自动配置SLAACSLAAC 是 IPv6 的核心特性之一设备无需 DHCP 服务器即可自动获取地址。流程如下设备生成链路本地地址FE80::/10 接口标识符通过邻居请求NS进行重复地址检测DAD发送路由器请求RS等待路由器通告RA路由器回复 RA包含前缀、前缀长度、默认网关等信息设备根据前缀 接口标识符生成全局单播地址有状态配置DHCPv6DHCPv6 提供更精细的地址和参数管理分为两种模式有状态 DHCPv6服务器分配地址和其他配置参数无状态 DHCPv6地址通过 SLAAC 获取其他参数如 DNS 服务器通过 DHCPv6 获取手动配置管理员手动指定 IPv6 地址、前缀长度、默认网关等参数适用于服务器、网络设备等固定场景。邻居发现协议NDPNDP 是 IPv6 的核心协议替代了 IPv4 的 ARP、ICMP 重定向、路由器发现等功能。主要功能包括功能对应 IPv4 机制说明地址解析ARP通过邻居请求NS/邻居通告NA获取链路层地址重复地址检测无使用 NS 检测地址是否已被占用路由器发现ICMP 路由器发现通过 RS/RA 发现本地路由器前缀发现DHCP获取网络前缀信息重定向ICMP 重定向通知主机更优的下一跳无状态自动配置DHCP自动生成 IPv6 地址NDP 使用 ICMPv6 类型 133~137 的消息相比 ARP 广播更高效、更安全。IPv6 安全特性原生 IPSec 支持IPv6 设计时原生集成了 IPSec提供认证首部AH数据完整性验证和源认证封装安全载荷ESP数据加密和可选认证安全关联SA通信双方的安全策略协商安全邻居发现SEND使用加密生成地址CGA和资源公钥基础设施RPKI保护 NDP 过程防止地址欺骗、重定向攻击等。常见安全威胁与防护威胁类型描述防护措施邻居欺骗伪造 NA/NS 消息启用 SEND、RA Guard路由欺骗伪造 RA 消息启用 RA Guard、源地址验证分片攻击利用分片首部绕过防火墙限制分片数量、状态检测隐私泄露基于 MAC 的接口标识符可追踪启用隐私扩展RFC 4941DNSv6DNS over IPv6DNS域名系统是互联网的核心基础设施负责将域名解析为 IP 地址。在 IPv6 环境下DNS 也进行了相应的扩展和优化形成了DNSv6体系。DNSv6 的核心概念DNSv6 并非一个全新的协议而是 DNS 协议在 IPv6 网络中的适配与增强。其核心变化包括AAAA 记录IPv6 的域名解析记录类型相当于 IPv4 的 A 记录用于将域名映射到 IPv6 地址。反向解析PTR 记录IPv6 反向解析使用ip6.arpa域将 IPv6 地址反向解析为域名。例如地址2001:db8::1的反向查询域名为1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa。传输层支持DNS 查询和响应可以基于 IPv6 传输即 DNS 客户端和服务器之间通过 IPv6 网络通信。AAAA 记录详解AAAA 记录Quad-A 记录是 DNSv6 中最常用的资源记录类型其格式如下example.com. 3600 IN AAAA 2001:db8:1234::1字段说明域名要解析的域名TTL缓存时间秒类固定为 INInternet类型AAAAIPv6 地址目标 IPv6 地址示例查询www.google.com的 AAAA 记录$digAAAA www.google.com;DiG9.18.28AAAA www.google.com;;ANSWER SECTION: www.google.com.300IN AAAA2404:6800:4005:80c::2004DNSv6 的传输机制DNS 查询可以通过 IPv4 或 IPv6 传输两者独立工作IPv4 DNS 查询客户端向 IPv4 DNS 服务器如8.8.8.8发送查询获取 A 或 AAAA 记录。IPv6 DNS 查询客户端向 IPv6 DNS 服务器如2001:4860:4860::8888发送查询获取 A 或 AAAA 记录。典型 DNSv6 服务器地址服务商IPv6 DNS 地址Google Public DNS2001:4860:4860::8888/2001:4860:4860::8844Cloudflare2606:4700:4700::1111/2606:4700:4700::1001Quad92620:fe::fe/2620:fe::9阿里云 DNS2400:3200::1/2400:3200:baba::1114DNS114.114.114.114IPv4 兼容IPv6 需额外配置DNSv6 的配置方式通过 SLAAC 获取 DNS 服务器传统 SLAAC 不提供 DNS 服务器信息但RFC 8106RA 选项中的 DNS 配置扩展了路由器通告RA消息使其可以携带 DNS 服务器地址RDNSS 选项和 DNS 搜索域DNSSL 选项。Router Advertisement (RA) ├── Prefix Information Option (PIO) ├── MTU Option └── RDNSS Option ← 新增携带 DNS 服务器地址 └── DNS Server: 2001:4860:4860::8888通过 DHCPv6 获取 DNS 服务器DHCPv6 的无状态模式专门用于分发 DNS 服务器地址和其他配置参数而不分配 IP 地址。客户端通过 SLAAC 获取地址后再通过 DHCPv6 获取 DNS 信息。# Linux 客户端通过 DHCPv6 获取 DNS 服务器$ dhclient-6-Peth0# 或使用 NetworkManager 自动处理手动配置在操作系统或网络设备上手动指定 IPv6 DNS 服务器地址。Linux 示例/etc/resolv.confnameserver 2001:4860:4860::8888 nameserver 2606:4700:4700::1111Windows 示例PowerShellSet-DnsClientServerAddress-InterfaceAlias以太网-ServerAddresses(2001:4860:4860::8888,2606:4700:4700::1111)DNS64 与 NAT64 的配合DNS64 是 IPv6 过渡技术的重要组成部分与 NAT64 配合使用使 IPv6-only 主机能够访问 IPv4-only 资源。工作原理IPv6-only 客户端向 DNS64 服务器发起 AAAA 记录查询如果目标域名存在 AAAA 记录直接返回如果目标域名只有 A 记录DNS64 服务器将 A 记录中的 IPv4 地址合成到 IPv6 地址前缀中通常为64:ff9b::/96生成合成的 AAAA 记录返回客户端向合成的 IPv6 地址发起连接NAT64 网关将其转换为 IPv4 连接示例客户端查询 www.example.com 的 AAAA 记录 → DNS64 发现只有 A 记录93.184.216.34 → 合成 AAAA 记录64:ff9b::5db8:d822 → 客户端向 64:ff9b::5db8:d822 发起连接 → NAT64 网关转换为对 93.184.216.34 的 IPv4 连接