IPV6基础 二

https://www.cnblogs.com/FengXingZhe008/p/17335120.html

https://zhuanlan.zhihu.com/p/702468904

一、 ipv6拿地址过程 (RS/RA 无状态拿ipv6地址,NS/NA获取邻居的mac地址)

1.核心角色介绍

RS路由器请求报文

由主机在启动时发送,主动询问链路上是否有路由器。

RA路由器通告报文

由路由器周期性发送或响应RS而发送,是IPv6自动配置的"总指挥"。它携带的关键信息包括:

  • 前缀信息(Prefix)

  • 前缀的有效/优选生命周期

  • M标志位 :管理地址配置标志。M=1 表示主机应使用有状态DHCPv6 获取地址。M=0,表示无状态获取地址。

  • O标志位 :其他配置标志。O=1 表示主机应使用DHCPv6获取其他信息(如DNS服务器)

  • 默认路由(路由器自身的链路本地地址)。

NS邻居请求报文

用于邻居发现,相当于IPv4的ARP。

功能包括:

  • 地址解析:已知目标IP,询问其MAC地址。("谁是FE80::1?请告诉你的MAC。")

  • 重复地址检测(DAD):主机在给自己配置一个地址前,先询问这个地址是否已被占用。("有人用2001:db8::1吗?我要用。")

NA邻居通告报文

响应NS,或主动宣告。用于回答"我就是那个地址,我的MAC是..."。

1)无状态获取ipv6地址

RS:

RA:

2)获取邻居的mac地址

NS:

NA:

2.下挂设备获取IPv6地址的完整过程

假设你的电脑刚连接到家庭路由器的局域网。

电脑开机,启用IPv6网络接口。根据 EUI-64随机生成 的方式,自动生成一个链路本地地址 (格式为 FE80::/10)。

2.关键步骤:重复地址检测

  • 电脑发送一个 NS 报文,目标地址就是这个新生成的链路本地地址,询问是否有人使用。

  • 如果收到 NA 回应,说明地址冲突,则重新生成并再次检测。

  • 如果一段时间内没有收到NA,则认为地址唯一,正式配置给网卡。此时,主机已具备在本地链路通信的能力。

2.2 阶段二:发现网络路由器,获取全局/唯一本地地址

  1. 主动询问(或等待通告)

    1. 主动方式 :电脑立即向 ff02::2所有路由器组播地址 )发送一个 RS 报文,请求路由器现身。

    2. 被动方式 :电脑也可以等待路由器周期性(如每200秒)发往 ff02::1所有节点组播地址 )的 RA 报文。

  2. 路由器响应

    1. 网络中的路由器(家庭网关)收到RS后,会立即向 ff02::1 回复一个 RA 报文。

    2. RA报文中包含了网络前缀(例如 2001:db8:abcd::/64),以及关键的 MO 标志位。

2.3 阶段三:根据RA标志位决定如何配置地址

这是最核心的决策点,由RA报文中的MO位控制。

场景A:无状态地址自动配置(SLAAC) - M=0 (最常见)

  • M=0 表示"无需有状态DHCPv6"。

  • 主机直接使用RA报文中的前缀,结合自己的接口标识符(EUI-64或随机生成),合成一个或多个全局IPv6地址(例如 2001:db8:abcd::[接口标识符])。

  • 对这个新生成的全局地址,再次执行 重复地址检测 :发送 NS ,若无 NA 回应,则正式启用。

  • 如果 O=1,主机会额外发起 有状态DHCPv6 过程(见下文),但仅用于获取DNS等额外信息,不获取地址

场景B:有状态DHCPv6 - M=1

  • M=1 表示"必须使用有状态DHCPv6获取地址"。

  • 主机忽略RA中的前缀来合成地址,但会记录RA中的默认路由。

  • 主机启动 DHCPv6客户端 ,向 ff02::1:2(所有DHCPv6中继代理和服务器)发送 Solicit 报文,开始标准的 DHCPv6四步交换(Solicit, Advertise, Request, Reply)或两步交换(Solicit, Reply),从DHCPv6服务器获取一个或多个IPv6地址、DNS服务器等完整信息。

场景C:有/无状态结合 - M=0, O=1

  • 这是目前推荐且广泛部署的模式。

  • 主机通过 SLAACM=0)自动生成一个或多个地址(来自RA前缀)。

  • 同时,因为 O=1,主机发起 DHCPv6 过程,仅用于获取 DNS 服务器、 NTP 服务器等其他网络配置信息

2.4 阶段四:解析默认网关的MAC地址

  • 无论通过哪种方式获得地址,主机都需要知道如何将数据包发给默认网关(路由器)。

  • 主机查看RA报文,知道默认网关的IP地址(路由器的链路本地地址)。

  • 主机发送 NS 报文,目标地址是路由器的链路本地地址,进行地址解析

  • 路由器回复 NA 报文,告知自己的MAC地址。

  • 主机将 (路由器IP, 路由器MAC) 存入邻居缓存表。

3. 总结与流程图

四种报文在此过程中的作用总结:

  • RS / RA网络层 配置 。是整个过程的开端和总指挥。负责发现路由器、下发前缀、告知主机采用何种地址配置方式(M/O位)。

  • NS /NA链路层 发现 。是地址配置和通信的基础保障。在主机为自己配置任何地址(链路本地、全局)前,进行重复地址检测(DAD) ,防止冲突;在需要向网关或邻居发送数据时,进行地址解析,获取对方的MAC地址。

通过RS/RA和NS/NA完美配合,IPv6实现高效、可靠且功能丰富的即插即用网络接入。

4. 补充细节与现代网络实践

4.1 隐私扩展(Privacy Extensions, RFC 4941)

阶段一提到"随机生成" 接口 ID,在现代操作系统(Windows 10/11, macOS, Linux)中是默认行为。

  • 原因 :如果使用 EUI-64(基于 MAC 地址),由于 MAC 地址全球唯一,用户在网络中的行踪(设备指纹)可能被跨网络追踪。

  • 现代行为:主机通常会生成两个全局 IPv6 地址:

    • 公共地址(Public Address):用于对外提供服务(如作为服务器),可能基于 EUI-64 或稳定的随机数。

    • 临时地址(Temporary Address) :用于主动发起连接(如浏览网页),接口 ID 是随机生成的,并且会定期(如每 24 小时)自动更换。一般数据通信(如浏览网页、看视频、下载文件)默认使用的是 "临时地址"。 --- 防止跨网跟踪

4.2 重复地址检测(DAD)的重要性

阶段一和阶段三都提到 DAD。

  • 注意 :在 IPv6 中,DAD 是强制性的。即使地址是由 DHCPv6 服务器分配的(场景 B),主机在正式使用该地址之前,也必须执行 DAD。

  • 结果 :如果 DAD 失败(收到NA),主机绝不能使用该地址。

4.3 关于 DNS 获取的补充(RDNSS 和 DNSSL)

阶段三的场景 C 中,你提到通过 DHCPv6 获取 DNS。但在现代网络中,还有一种更轻量级的方式:

  • RDNSS (Recursive DNS Server)DNSSL (DNS Search List) 选项可以直接包含在 RA (路由器通告) 报文中。

  • 如果路由器支持并配置 RDNSS,主机甚至不需要发起 DHCPv6 请求,就能直接从 RA 报文中拿到 DNS 服务器地址。这使得纯 SLAAC 网络的配置更加零接触。

4.4 无状态 DHCPv6 (Stateless DHCPv6)

场景 C 通常被称为 "无状态 DHCPv6"。

区别 :这里的 "无状态" 是指服务器不记录地址分配状态。服务器只提供配置参数(DNS、NTP、域名),不负责分配 IP 地址,也不关心哪个 IP 分给了谁。

5.数据包视角的全过程总结(Wireshark 视角)

假设我们处于场景 C(SLAAC + 无状态 DHCPv6 ,即家庭宽带最常见的模式,数据包交互顺序如下:

5.1 RS (Router Solicitation)

  • :[我的链路本地地址] (或::未指定地址)

  • 目的:ff02::2 (所有路由器)

  • 内容:"我刚上线,谁是网关?"

5.2 RA (Router Advertisement)

  • :[路由器链路本地地址]

  • 目的:ff02::1 (所有节点)

  • 内容:"我是网关。前缀是 240e:xxx::/64。M=0, O=1。"

5.3 NS (Neighbor Solicitation) - DAD 检测

  • ::: (未指定地址)

  • 目的:ff02::1:ffxx:xxxx (被请求节点组播地址)

  • 内容:"有人在用 240e:xxx::1234 吗?"

5.4 Solicit ( DHCPv6 )

  • :[我的链路本地地址]

  • 目的:ff02::1:2 (所有 DHCPv6 服务器)

  • 内容:"我需要 DNS 服务器地址和其他配置。"

  • :[路由器的 DHCPv6 服务地址]

  • 目的:[我的链路本地地址]

  • 内容:"我有配置信息给你。"

5.6 Request ( DHCPv6 )

  • :[我的链路本地地址]

  • 目的:ff02::1:2

  • 内容:"请把刚才的配置发给我。"

5.7 Reply ( DHCPv6 )

  • :[路由器的 DHCPv6 服务地址]

  • 目的:[我的链路本地地址]

  • 内容:"DNS 是 240e:xxx::1。"

5.8 NS (Neighbor Solicitation) - 网关 MAC 解析

  • :[我的全局 IPv6 地址]

  • 目的:[路由器链路本地地址的组播映射]

  • 内容:"网关,你的 MAC 是多少?"

5.9 NA (Neighbor Advertisement)

  • :[路由器链路本地地址]

  • 目的:[我的全局 IPv6 地址]

  • 内容:"我的 MAC 是 xx:xx:xx:xx:xx:xx。"

至此,电脑已具备完整的 IPv6 上网能力。

二、ipv6 prefix delegation 是通过ra报文,还是通过dhcpv6报文获取的?

IPv6 前缀委派(PD,Prefix Delegation)是通过 DHCPv6 报文获取的,而不是通过 RA 报文。

1. RA报文的局限性

  • RA 报文 只能通告单个/64前缀给本地链路使用

  • RA中的Prefix Information Option (PIO) 字段大小有限,通常用于主机自动配置地址

  • RA主要用于本地链路的地址配置,不适合管理整个子网的前缀分配

2. DHCPv6-PD的工作方式

IPv6前缀委派使用DHCPv6 的扩展协议,具体过程如下:

具体报文交互:

  1. Solicit :客户端(如家庭网关/CPE)向 ff02::1:2 发送,请求前缀

  2. Advertise:服务器(ISP设备)回复可用前缀信息

  3. Request:客户端选择并请求特定前缀

  4. Reply:服务器正式分配前缀(通常是/56或/48前缀)

3. 关键DHCPv6选项

  • Option 25:身份关联(IA_PD) - 客户端用来请求前缀

  • Option 26IA_PD前缀选项 - 服务器分配的具体前缀信息

  • Option 3:服务器标识符

4. 实际部署中的典型场景

5. 为什么需要DHCPv6-PD?

分层管理:ISP可以集中管理前缀分配

灵活性:可以分配不同长度的前缀(/48, /56, /60等)

可扩展性:支持多级委派(ISP→运营商→企业→部门)

策略控制:可以基于客户端ID、位置等策略分配前缀

状态跟踪:DHCP服务器可以跟踪前缀分配状态和租期

6. 与RA的协同工作

虽然前缀委派通过DHCPv6完成,但RA仍然发挥作用:

客户端( CPE )通过 DHCPv6-PD获取前缀( 如:2001:db8:1234::/48

客户端在自己的LAN接口上配置子网 (如:2001:db8:1234:1::/64

客户端向LAN内设备发送 RA ,通告这些子网前缀,LAN内设备通过SLAAC(基于RA) 配置自己的IPv6地址。

7. 报文格式示例

DHCPv6-PD请求(Solicit)包含:

总结:RA 用于主机地址自动配置,DHCPv6-PD用于路由器之间的前缀委派管理。两者配合,构建了层次化的 IPv6 地址分配体系。

相关推荐
小小代码狗2 小时前
PHP伪协议和文件包含
网络·网络安全·php
聚铭网络2 小时前
聚铭网络再次入选数世咨询《中国数字安全价值图谱》“日志审计”推荐厂商
网络·安全
爱吃苹果的梨叔2 小时前
NTP 网络时间服务器硬件驯服技术说明(投标技术响应说明)
linux·运维·服务器·网络·嵌入式硬件·tcp/ip
CS创新实验室2 小时前
《计算机网络》深入学:随机访问
网络·计算机网络·考研·408·随机访问
2401_865854882 小时前
ssl证书使用中可能会遇到的问题
网络·网络协议·ssl
星陨772 小时前
OpenStack私有云平台API接口练习
linux·运维·网络·openstack
InaT3 小时前
渗透第一次作业
网络
是娇娇公主~3 小时前
C++集群聊天服务器(1)—— muduo网络库服务器编程
服务器·网络·c++
捷米研发三部3 小时前
CANopen 转 Modbus TCP:智能机床控制器与上位机监控系统的无缝对接方案
网络·网络协议