当前位置:文档之家› IPv6邻居发现协议简介

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)
相关主题