欢迎转载,转载请务必注明出 处:http://blog.csdn.net/alading2009/article/details/46346501
在IPv6环境下,当一个主机企图配置一个IPv6地址时,会先进行地址重复性检测,以确认在链路上该地址的唯一性。这一过程称为DAD(Duplicate Address Detection)。
比如在启动一个开启了IPv6的网卡时,网卡上会先自动配置一个link-local地址——以fe80开头的地址,在这个地址生效前会进行DAD检测。报文截图如下:
DAD检测的关键就是图中这个NS报文,注意到该报文的源地址为全0,目的地址为一个多播地址,Target指向自己欲配置的IPv6地址。一段时间内,若链路上没有谁回复NA,或者在链路上收到同样结构的NS报文,则认为该地址在链路上具有唯一性,配置生效。
若在检测期间在链路上收到NA报文,情况又会如何?接下来我们可以伪造一个NA报文试一下,该NA报文在链路上通告:fe80::20c:29ff:fed7:5f0d 这个地址已经有人在用了。
NA报文对主机造成了干扰,干扰结果是DAD检测失败,这个地址在链路上配置失败。
从DAD的整个过程来看,似乎可以通过伪造报文在局域网上做一些捣蛋的事,例如对于每个源地址为::的NS报文,可以组装出一个对应的NA或者NS报文,欺骗主机,干扰其地址的配置,造成主机无法有效的配置IPv6地址。