IPv6邻居发现协议简介
NA报文(单播)
ICMPv6 type=136 Src=IPv6 addr of B (fd52:1938:3a44::82d) Dst=IPv6 addr of A (fd52:1938:3a44:0:3c16:231a:f86b:b3af) Option=link-layer address of B (74:e6:e2:3a:bd:76)
● 伪造不存在的前缀,修改受害主机的路由表。
● 伪造网关的MAC及lifetime,造成受害主机的默认网关改变。 ● 伪造DHCP服务器,造成受害主机使用DHCP服务器分配到虚假的地址。 4、针对网关的泛洪攻击 攻击者通过伪造大量的NS/RS报文,发送给网关,使得网关的表项溢出,造成网关无法提供正常的服 务(DoS 拒绝服务攻击)。
三、地址解析(Address Resolution)
fd52:1938:3a44:0:3c16:231a:f86b:b3af
fd52:1938:3a44::82d
Node A Node B
NS报文(组播)
ICMPv6 type=135 Src=IPv6 addr of A (fd52:1938:3a44:0:3c16:231a:f86b:b3af) Dst=solicited-node multicast of B (ff02::1:ff00:82d) Option=link-layer address of A (34:64:a9:15:ef:84) Query=What is your link address?
ICMP Type=136 Src=FC00::1 Dst=FF02::1 Data= FC00::1 Query=I have this address.
05
邻居不可达检测
五、邻居不可达检测(NUD)
NUD(Neighbor Unreachable Detection,邻居不可达检测)是节点确定邻 居可达性的过程。邻居不可达检测机制通过邻居可达性状态机来描述邻居的可达 性,邻居可达性状态机保存在邻居缓存表中。 RFC2461中定义了5种邻居状态,分别是:
Node A
Tentative address=FC00::1
Node B
address=FC00::1
ICMP Type=135 Src=:: Dst=FF02::1:FF00:1 Data= FC00::1(试验地址) Query=Anyone has this address?
NS报文
NA报文
七、主机发送算法
检查目的缓存中有没有 匹配的目的地址
检查邻居节点缓存中有没有 匹配下一跳地址的条目
目的缓 存中发 现了条 目?
是
从目的缓存列表 中获取下一跳地 址
否
检查前缀列表中有没有 匹配目的地址的前缀
更新目的缓存
邻居节 点有没 有下一 跳地址 的条目?
是
使用邻居节点缓存条目 中的链路层地址来发送 数据包
Host Router
1. RS
ICMPv6 Type = 133 (RS)
2. RA
ICMPv6 Type = 134 (RA) Src = Router link-local address
Src = link-local address (FE80::/10)
Dst = all-routers multicast address (FF02::2)
Stale
发送数据包
Delay
超过延迟时间
Probe
单播邻居节点请求消息超时
▲ 邻居节点缓存条目状态变化图
06
重定向
六、重 定 向( Redirect )
RT A
Host A RT B
Internet Internet
数据报文(目的地:Host B) ICMPv6重定向(使用RTB) 数据报文(目的地:Host B)
01
邻居发现概述
一、邻居发现概述
邻居发现协议NDP(Neighbor Discovery Protocol)是IPv6协议体系中一个重要的基 础协议,由RFC2461定义。 邻居发现协议替代了IPv4的ARP(Address Resolution Protocol)、ICMP路由器发现 以及ICMP重定向功能,它定义了使用ICMPv6报文实现地址解析,跟踪邻居状态,重复 地址检测,路由器发现以及重定向等功能。
RA报文
03
地址解析
三、地址解析(Address Resolution)
IPv6取消了ARP协议(IPv4地址解析协议),通过邻居请求报文NS ( Neighbor Solicitation )和邻居公告报文NA( Neighbor Advertisement )的 交互来解析链路层地址。 ● 地址解析过程: 1、发送主机在接口上发送组播NS报文,该报文的目的地址为目标IP地址所对应 的请求节点组播地址(Solicited-node),在其中也包含了自己的链路层地址; 2、目标主机收到NS报文后,就会了解到发送主机的IP地址和相应链路层地址; 3、目标主机向源发送主机发送一个邻接点公告报文(NA),该报文中携带自己 的链路层地址,地址解析完成。
IPv6邻居发现协议
Neighbor Discovery Protocol,NDP
Michael 2017/09/29
課程目标
学习完本课程,您应该能够:
Байду номын сангаас
■ 熟悉邻居发现协议的基本功能 ■ 熟悉邻居发现的报文结构 ■ 掌握IPv6地址解析过程
■ 描述邻居状态机变化的过程
■ 掌握IPv6重定向的原理
■ 描述主机数据结构和数据发送算法
04
重复地址检测
四、重复地址检测(DAD)
重复地址检测DAD(Duplicate Address Detect)是在接口使用某个IPv6单 播地址之前进行的,主要是为了探测是否有其它的节点使用了该地址,避免 引起地址冲突。
节点向试验地址所对应的Solicited-Node组播组发送NS报文,NS报文中目 标地址即为该试验地址。如果收到某个其他站点回应的NA报文,就证明该地 址已被网络上使用,节点将不能使用该试验地址通讯。
三、地址解析(Address Resolution)
▲ NS报文
三、地址解析(Address Resolution)
▲ NA报文
思考
1、ND协议使用的所有报文均封装在ICMPv6报文中,一 般来说,ND被看作第三层的协议。在第三层完成地址解 析,有什么好处?
2、IPv6邻居发现协议与IPv4地址解析协议有什么区别?
■ 了解邻居发现的安全性
目录 CONTENTS
1
路由器发现
•Router Discovery
邻居发现概述
•Neighbor Discovery Protocol summary
2
3
重复地址检测
•Duplicate Address Detect
地址解析
•Address Resolution
4 5
邻居不可达检测
•Neighbor Unreachable Detection
重定向
•Redirect
6 7
主机发送算法
•Host sending algorithm
邻居发现安全
•Neighbor Discovery Security
8
术语解释
术语 Node Router Host Neighbor All-nodes multicast address All-routers multicast address Solicited-node multicast address Link-local address Unspecified address 含义 节点,实现IPv6的设备(PC,Router等) 转发IP报文的Node(路由器) 非Router设备 连接到相同Link的Node 本地链路所有节点组播地址,即可以到达link范 围内所有node的地址(FF02::1) 本地链路所有路由器组播地址,即可以到达link 范围内所有路由器的地址(FF02::2) 被请求节点的组播地址 链路本地地址 未定义地址,表示缺少地址,用::表示
Host B
(1)Host A首先传送第一个数据报文到它的默认路由器RTA,当该报文经过RTB到达Host B后,RTA知道RTB是链路上转发报文的更好选择。 (2)RTA向始发报文的Host A发送一个ICMPv6重定向报文(单播),目标地址中含有 RTB的IPv6地址,报文选项字段的目标链路层地址中含有RTB的链路层地址。 (3)Host A获悉RT B是到Host B的更好路径后,修改自己的目的缓存表,当再发送到Host B的报文时优先发送到RTB,重定向完成。
07
主机发送算法
七、主机发送算法
主机数据结构框架: ■ 邻居节点缓存:存储IP-MAC列表,以及可达性状态标识,相当于IPv4中的 ARP缓存。 ■ 目的缓存:存储目的IP地址和下一跳IPv6地址。 ■ 前缀列表:根据路由器通告消息(RA)而生成。 ■ 默认路由器列表 IPv6主机发送单播数据包的过程会使用本地主机的数据结构框架与ND协议的组 合。 在向任意目的地址发送单播数据包时,IPv6主机都会执行如下操作(即主机发送 算法)。[见下一页]
02
路由器发现
二、路由器发现(Router Discovery)
用于定位邻居路由器,生成default router列表,并获取与地址自动配置有关 的前缀和配置参数。用RS/RA机制实现。
主机发送Router Solicitation报文 路由器回应Router Advertisement报文 主机从RA报文获得前缀及其它参数
(1)INCOMPLETE(未完成状态):表示正在解析地址,但邻居链路层地址 尚未确定。
(2)REACHABLE(可达状态):表示地址解析成功,该邻居可达。
(3)STALE(失效状态):表示可达时间耗尽,未确定邻居是否可达。
(4)DELAY(延迟状态):表示未确定邻居是否可达。DELAY状态不是一个稳 定的状态,而是一个延时等待状态。
地址解 析 地址自 动配置
路由器发 现(包括 前缀和参
数发现)
下一跳 确认
ND
邻居不 可达检 测
重复地
址检测
重定向
● RFC2461定义邻居发现的功能
一、邻居发现概述
邻居发现所有的功能都是通过以下5种ICMPv6报文实现的:
(1)路由器请求 (Router Solicitation) ICMPv6 type133
(5)PROBE(探测状态):节点会向处于PROBE状态的邻居持续发送NS报文。
五、邻居不可达检测(NUD)
发送邻居节点请求信息NS
Empty
邻居请求信息超时
Incomplete
收到请求的邻 居节点通告NA
超过可达时间或收到未经 请求的邻居节点通告信息
Reachable
上层协议可 达性确认 收到请求的邻 居节点通告NA
地址欺骗攻击与IPv4中ARP攻击的方式类似,攻击者可以使用RS/NS/NA报文来修改受害主机或网关 上受害主机的MAC地址,造成受害主机无法与网络进行正常的通信。
2、DAD攻击 在受害者进行DAD检测时,攻击者可以伪造NS报文,与受害者产生冲突,也可以伪造NA报文,应答 受害者的NS报文。这两种情况,受害主机都无法获取地址进行正常的网络通信。 3、RA攻击 RA能够携带很多网络配置信息,包括默认路由器,网络前缀列表。如果受害者接收了虚假的RA信息, 会造成网络配置错误,从而引发欺骗攻击。具体表现为:
(3)邻居请求 (Neighbor Solicitation) ICMPv6 type135
(5)重定向(Redirect) ICMPv6 type137
(2)路由器公告 (Router Advertisement) ICMPv6 type134
(4)邻居公告 (Neighbor Advertisement) ICMPv6 type136
否
用地址解析来判断下一 跳地址的链路层地址
目的地址 是否匹配 前缀列表 中的前缀?
是
将下一跳地址设 置为目的地址
地址解 析成功?
是
更新邻居节点缓存
否
从默认路由器列表中选一 个默认路由器,将下一跳 地址设置为默认路由器的 地址
否
出现错误
▲主机发送算法流程图
08
邻居发现安全
八、邻居发现安全
1、地址欺骗攻击
Dst = all-nodes multicast address (FF02::1)
Data =Router lifetime,Cur hop limit,Autoconfig flag,options(prefix、MTU)…
二、路由器发现(Router Discovery)
RS报文
二、路由器发现(Router Discovery)