DAD ; duplicate address detection
和IPv4是一样的,不同的是ipv6发送的目的不是广播了。而是被请求节点多播地址。
功能原理:
在网络中配置IPv6的地址,如果全都是手工配置,难免会配置成相同的IP地址。而IP在网络中是绝对唯一的,不能有重复的,否则网络设备都不知道该转给谁,因为这个唯一性,所以才又arp欺骗这些攻击存在。
在IPv6中,只要这个邻居请求被发送到本地链路上,如果一个节点对这个请求应答,就说明这个临时单播IPv6地址已经被另外一个节点使用。在没有应答的情况下,节点A认为这个临时单播地址2001:410:0:1::1:a在本地链路是唯一的。可以分配使用。
啥都不说了,直接上图:
这个图就是他的原理。
每次系统默认一个主机在应用新的IP地址之前会发送3次DAD,如果三次以后均没有收到任何回应,那么该地址被认为是可以配置在接口上的.
这里我用了两个路由器直连,然后故意在一边的路由器接口上面配置重复的地址。这个时候抓包得到的结果是, 以::作为源往外发送被请求多播地址FF02::1:ff00:2,得到了回应。并且我们可以看到这里始终用的是ICMPv6 type=135.请求是,回应也是。根据上面的原理得知,如果出现了回应,那么在本地网络中一定该地址是一个重复地址。
在路由器上面,也可以看到cisco的IOS提示有重复的地址。不能进行配置。
其实这个原理不是很难,不像ospf的交互过程需要7步,也不像LDP的邻居交互过程那样繁琐。说穿了只是一个检测地址是否重复的工作机制。主机发送出去,没有回应,三次,那么配置该地址。有回复,那么会提示三层网络设备有地址重复,只要IOS支持,一定会打印出地址重复的信息来的。仅此而已。
最后有两个命令,可以修改DAD的发送次数:
设置为非零的任何数,dad正常工作。
设置为0,dad关闭,也就是说即使IP地址冲突也不会有任何提示,因为从原理上来说,根本local就没有发送dad请求。
默认肯定是打开的,这个是 IP层面的基本功能。
最后总结一下,DAD,duplicate address detection, 请求节点多播地址. FF02::1:FFxx:xxxx, ICMPv6的类型为135.邻居请求。
ICMPv6(因特网控制消息协议)
icmp向源节点报告关于向目的地址传输IP数据包的错误和信息
消息 类型号 消息类型 定义
目标不可达 1 错误 目的主机中的ip地址或者端口未处于活动状态
数据包超长 2 错误 数据包长度超过发送链路的最大MTU
超时 3 错误 当存活时间ttl 字段为0的时候,数据包丢弃,中间路由器通知源主机
回应请求 128 错误 发送到目的地的消息,请求一个回应消息
回应应答 129 错误 用来回答回应请求消息的错误
ICMPv6的协议号是58,ipv6认为ICMPv6数据包是一个上层协议,像TCP和UDP一样,意味着它必须被放在ipv6数据包中所有可能的扩展包头之后
在ipv6中,协议的几种机制和功能使用ICMPv6 消息
l 地址解析协议(ARP)用新的ICMPv6消息
l 无状态自动配置,用新的ICMPv6消息
l 重复地址检测(dad) 用新的ICMPv6消息
l 前缀重新编址 用新的ICMPv6消息
l 路径MTU发现协议
NDP(Neighbor Discovery Pro)使用5种ICMPv6的消息
l RS(router solicitation)——路由请求(主机节点发)
当节点希望路由器立即发送路由器宣告而不是等待下一个预订宣告时,由节点以多播方式发送该消息。初始化节点可以发送RS消息。
l RA(router advertisement)——路由应答/公告
周期性的发送该消息或作为RS的响应,路由器通过该消息宣告它们的存在并提供节点配置自己所需的信息。
无状态自动配置通过发RA来执行, 思科认为串口不连主机,所以它不往串口发RA路由公告。
l NS(neighbor solicitation)——邻居请求
使得节点可以确定邻居的链路层地址或确定该邻居是否可以通过已缓存的链路层地址到达,还能确定链路上是否存在重复的IP地址。
l NA(neighbor advertisement)——邻居公告/应答
作为NS的响应消息,或者在节点的链路层地址发生变化时主动发送该消息。
l Redirect——重定向
DAD检测(Duplicate Address Detection)
先检测link-local有没有冲突,即发link-local的NS,以未指定地址为源,以link-local组合而成的被请求地址为目的地址。其中,在检测link-local和单播地址时,发的NS的源地址都时未指定(::),在接口进行no shutdowm,自动配置时就会进行DAD.
替代ARP协议:
当2001::1 ping 2001::2 时
l 第一步:
2001::1是无法ping通2001::2,由于没有MAC的映射
l 第二步:
2001::1这个地址发一个NS 节点请求135包,以源:2001::1,目的:ff02::1:ff00:2(是通过2001::2构成的一个被请求节点地址)
l 第三步:
由于2001::2检测ff02::1:ff00:2,所以它会回一个NA 节点通告136包,以源:2001::2,目的:2001::1(包中包含了2001::2的MAC地址)
l 第四步:
此时2001::1收到包后,就建立了2001::2与其MAC地址的映射
IPV6特点:
128bit的地址空间
分层次的地址级别,非常方便路由汇总
进行自动的分配ipv6
无需NAT转换
没有广播地址,不再有ARP协议
IPV6的网络传输效率要高
移动性和安全性得到提高