今日目标
01 ICMPv6概述
02 ICMPv6报文类型
03 NDP概述
04 路由器发现
05 地址解析
1 ICMPv6概述
ICMPv6概述
- ICMPv6
√ ICMPv6是IPv6的基础协议之一
√ 在IPv6报文头部中,NextHeader字段值为58则对应为ICMPv6报文
√ ICMPv6报文的作用:提供错误报告,网络诊断、邻居发现
√ ICMPv6控制着IPv6中的地址自动配置、地址解析、地址冲突检测、以及差错控制
ICMPv6报文格式

2 ICMPv6报文类型
# ICMPv6报文类型
- ICMPv6报文分为两类:差错报文和信息报文

# ICMPv6信息报文应用
- Ping基于ICMPv6信息报文实现
✓ EchoRequest: 用于发送到目标节点,以使目标节点立即发回一个EchoReply应答报文
✓ EchoRequest报文的Type字段值为128,Code字段的值为0
✓ EchoReply: 当收到一个EchoRequest报文时,ICMPv6会用EchoReply报文响应
✓ EchoReply报文的Type字段的值为129,Code字段的值为0


- 第一步:配置接口IPv6地址抓包分析
bash
[R1]ipv6
[R1jint g0/0/0
[R1-GigabitEthernet0/0/0]ipv6 enable
[R1-GigabitEthernet0/0/0jipv6 address 2001:12:1 64
[R2]ipv6
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]ipv6 enable
[R2-GigabitEthernet0/0/0]ipv6 address 2001:12:2 64
- 第二步:ping测试,抓包分析
bash
PC1 ping ipv62001:12:2
抓包结果:
EchoRequest报文的Type字段值为128,Code字段的值为0
EchoReply报文的Type字段的值为129,Code字段的值为0
# ICMPv6其它常用报文
- 邻居发现
✓ Type=133 路由器请求 (R outer S olicitation)
✓ Type=134 路由器公告 (R outer A dvertisement)
✓ Type=135 邻居请求 (N eighbor S olicitation)
✓ Type=136 邻居公告 (N eighbor Advertisement)
3 NDP概述
NDP概述
- NDP:邻居发现协议的主要功能

NDP报文类型及功能
- NDP使用以下几种ICMPv6报文:
✓ RS(Router Solicitation):路由器请求报文
✓ RA(Router Advertisement):路由器通告报文
✓ NS(Neighbor Solicitation):邻居请求报文
✓ NA(Neighbor Advertisement):邻居通告报文

IPv6组播MAC
- 组播IPv6报文的目的IP为组播IPv6地址,目的MAC为组播MAC地址
✓ 组播MAC的前16bit为"33:33",是专门为IPv6组播预留的MAC地址前缀
✓ 后32bit从组播IPv6地址的后32bit直接映射而来。

被请求节点组播地址
- 被请求节点组播地址
✓ 当一个节点具有了单播或任播地址,就会对应生成一个被请求节点组播地址,并且加入这个组播组
✓ 该地址主要用于邻居发现和地址重复检测功能,被请求节点组播地址的有效范围为本地链路范围

IPv6组播地址
-
FF01:
√ 表示"接口本地",单个接口有效,仅用于Loopback通讯
√ 这种类型的地址主要用于单个设备内部的通信
-
FF02:
√ 表示"链路本地",组播数据仅在同一网络段的所有设备之间传输,不会被转发到其他网络段。
√ 这是最常见的组播范围之一,常用于局域网内的多播通信
-
FF02::1:
✓ 名称:所有节点组播地址
✓ 作用:向同一链路上的所有IPv6设备发送数据包
✓ 应用场景:可以使用这个地址来广播消息,报文的目的地址为FF02::1,同一网络段内的所有设备都能接收到这个报文
-
FF02::2:
✓ 名称:所有路由器组播地址
✓ 作用:向同一链路上的所有IPv6路由器发送数据包
✓ 应用场景:用于和路由器之间的通信,报文的目的地址为FF02::2,同一网段内的所有的路由器都能接收到这个报文
4 路由器发现
路由器发现
- 路由器发现
√ 用于主机发现本地链路上的路由器,从而获取网络配置信息的过程 - 路由器发现三大功能:
√ 路由器发现:主机定位邻居路由器以及选择默认网关的过程
√ 前缀发现:主机发现本地链路上IPv6前缀的过程,用于主机的地址自动配置
√ 参数发现:主机发现操作参数的过程,如报文的跳数限制、地址配置方式等信息
路由器发现-使用的报文
- RS路由器请求报文:
√ 请求路由器通告:主机通过发送RS报文请求路由器立即发送RA报文
√ 主机启动或连接到网络时,发送RS报文以快速获取网络配置信息 - RA路由器通告报文
√ 提供网络配置信息:路由器通过发送RA报文向主机提供网络配置信息,包括默认网关、
前缀信息、DNS服务器等
√ 定期发送:路由器会定期发送RA报文,以确保网络中的主机始终拥有最新的配置信息
√ 响应RS报文:当路由器接收到RS报文时,会立即发送RA报文作为响应
路由发现-协议交互的两种情况:
- 协议交互的两种情况:
√ 主机发送RS触发路由器回应RA
√ 路由器周期发送RA
路由器发现流程-主机请求触发
- 主机请求触发
✓ 主机启动,向本地链路范围内所有的路由器发送RS报文
✓ 路由器响应RA报文
✓ 经过以上步骤,主机生成缺省路由,下一跳指向缺省路由器的链路本地地址

路由器发现流程 - 路由器周期性发送
- 路由器周期性的发送
✓ 路由器周期性的发送RA报文
✓ RA发送间隔是随机值,最大间隔时间是600秒,最小间隔时间是200秒。 - 对于定期发送的RA报文:
✓ Source Address:必须是发送接口的链路本地地址
✓ Destination Address:FF02::1

路由器发现流程
-
路由器发现流程

-
第一步:配置R1 抓包分析RS报文
bash
[R1]ipv6
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]ipv6 enable
[R1-GigabitEthernet0/0/0]ipv6 address auto global #自动生成IPv6全局地址功能
- 第二步:配置R2 抓包分析RA报文
bash
[R2]ipv6
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]ipv6 enable
[R2-GigabitEthernet0/0/0]ipv6 address auto link-local
[R2-GigabitEthernet0/0/0]undo ipv6 nd ra halt #让接口发送RA消息
[R2-GigabitEthernet0/0/0]ipv6 address 2001:12::2 64
验证:
bash
<R1>display ipv6 int g0/0/0
5 地址解析
地址解析
- IPv6地址解析
√ IPv6地址解析通过ICMPv6(NS和NA报文)来实现 - 在三层完成地址解析优势:
√ 地址解析在三层完成,不同的二层介质可以采用相同的地址解析协议
√ 可以使用三层的安全机制避免地址解析攻击
√ 使用组播方式发送请求报文,减少了二层网络的性能压力 - NS邻居请求报文:
√ 地址解析:主机通过发送NS报文请求目标设备的MAC地址 - NA邻居通告报文
√ 响应NS报文:收到NS报文后,会回应NA报文,提供MAC地址
√ 主动通告:没有收到NS报文的情况下主动发送NA报文,例如在网络拓扑发生变化时

IPv6邻居状态表
- 查看IPv6邻居状态表

IPv6地址解析
-
IPv6解析目的MAC地址

-
第一步:配置接口IPv6地址
bash
[R1]ipv6
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]ipv6 enable
[R1-GigabitEthernet0/0/0]ipv6 address 2001:12::1 64
[R2]ipv6
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]ipv6 enable
[R2-GigabitEthernet0/0/0]ipv6 address 2001:12::2 64
- 第二步:解析目的MAC地址、显示IPV6邻居表
bash
[R1]ping ipv6 2001:12:2
[R1]display ipv6 neighbors