ipv6-冲突检测(NS和NA)

邻居发现协议:neighbor discovery protocol(NS)

  • 在ICMPv6中定义新的消息类型,实现地址解析,重复地址检测,跟踪邻居状态、路由器发现、重定向等功能。

133、134:主要实现路由器发现功能,包括发现网关、前缀,任何ipv6的路由器以及交换机都能提供此功能。

135、136:主要实现地址解析、重复地址检测(DAD)功能,其实也就是代替了ipv4中ARP(广播)的功能

注:ND代表邻居发现 

ipv6地址发现技术

通过NS和NA报文实现ARP、DAD(重复地址检测)功能

  • NS:neighbor solicitation,邻居请求,类似于ipv4中的ARP请求报文
  • NA:neighbor advertisement,邻居通告,类似于ipv4中的ARP应答报文

 上图的命令可以查看neighbor,使用ping命令ping一个地址之后会将改地址加到neighbor中来

 再看一下neighbor:1和2都有了

STALE和REACH是怎么来的?

stale:当设备处于reachable状态后30s内,如果没有收到其他报文,则邻居状态进入stale状态,表示“陈旧”。如果设备不需要向该邻居发送数据,则此状态会一直持续下去,要注意的是,stale状态是这些状态中唯一可以稳定持续存在的状态。

reachable: reachable状态则是已经收到了NA响应报文(30s内)

注意下面的命令,用来列出当前网卡信息???

 可以看出2018::2和2018::a都存在:

 现在要清空这些邻居的表,要怎么做?

reset ipv6 neighbors all

这个时候再看邻居表就已经是空的了:

 这个时候ping 2018::1 这个地址还能得到回复:这就类似于ARP请求的请求与回复,下图中已标出:

 可以看出,2018::1和2018::a分别问了彼此在哪里,也就是分别向对方发送了一个请求,这样他们就有了彼此的mac地址。

下图可以看出,他们已经有了对方的Mac地址:

 不管谁问谁,路由器能看出这个效果???下图中的路由器接口配了一个2018::A

 这个时候他会加入一个特殊的组,请求节点组播组地址:

当路由器配完以后,会自动加入所有(所持有的?)节点这个组FF02::1,所有路由器这个组FF02::2,但是还有一个特殊的组,请求节点组播组:FF02::1:FF00:A

  • solicited node:请求节点,开头=FF02::1:FF00/104,加上单播地址最后24位

可以看到前面的单播地址为2018::A,所以,请求节点组播组的最后16位为A。

这个时候再配一个最后24位为1234的单播地址,那么同样会加入一个1234结尾的请求节点组播组地址。

 分析:当A想要获取1的mac地址时,1如果在线,自然会加入请求节点组,A可以向1对应的组播组地址发请求,此时若1在线就必然能收到,也就会回应该请求。

 再次分析上次抓的包:2018::a的请求2018::1的Mac地址,那么2018::1必然会加入ff02::1:ff00:1这个请求节点组,此时1必然会收到a的包,收到包之后必然会有回应,回复的时候1已经知道a的Mac地址,就是单播了,(这里的单播是说类似于ipv4的单播)1问a的时候也是同样的道理。

 ipv6就是用这种方法巧妙地完成了广播的功能。下面是通信流程图:可以看出首次发送的包中目标地址是B这个单播地址的请求节点组的地址。

 类似于ARP,有一个免费ARP的功能,也就是自己向自己发送请求,可以实现地址冲突检测的功能。

看下面这张图,A配的地址为FC00::1,B也为FC00::1,我们可以看到A地址前边有一个“tentative address”,意为实验性的地址,A会发送一个包,目标组播组地址其实就是自己的组播组地址,如果有人回复的话,就说明地址重复了。自己问自己的这种方式简称为DAD。

 这个时候做个实验,下图中的路由器和PC配了同样的地址会怎么样呢?

 将路由器的地址修改为::2,先把之前的删掉2018::A删掉,在配置为2018::2(不然的话配不上),

回车以后,抓包查看: 

可以看到,它以空地址发送了一个请求到2的组播组地址,询问2有没有mac地址,如果没有回复的话是没有问题的,说明没有地址冲突。

【本文为学习笔记,仅供参考,未完待续...】

但是我们可以看到是有回复的:

重新演示一遍:

 右击AR1进行抓包,然后配置ar1的接口0/0/0为2018::A:

 再来看一下抓包结果,蓝色那行其实就是在询问a的地址有没有重复,可以看出现在是没有回复的,当然,没有回复就对了,说明是没有重复的。

 此时我们查看这个地址,其实已经生效了。

 在没有得到确认之前,我们每配一个地址,它都会发送一个NS,确认有没有地址重复,如果没有重复的话地址后边会有tentative标识。

现在修改PC的地址为A:

 现在我们再去看抓包工具,是没有提示的,这是因为配置PC的时候。PC是不会发NS请求的。如果是配置的路由器的话是会有NS请求,并且会回应提示地址冲突:

现在演示一下,先演示不冲突的地址:

 配左右两边路由器为不同的地址:

 此时是能ping通的,毕竟二者是直连的嘛:

 但是一旦二者地址配置为冲突的地址的话,是会有提示的,此时打开ar2的抓包工具,修改ar2的地址与ar1的地址相同(需要先删掉之前配置的地址):

 删掉之前配置的地址

然后配置成与右边一样的地址:

 回车之后抓包:可以看到,先发了一个NS,紧接着有一个回应,代表地址冲突了,也就是这个地址不能使用。 

 可以看到,地址后边有一个DUPLICATE标识,这个就是DAD检测,会有一个间断性的重复检测的时间,类似于ARP的功能,是默认开启的,当然这个可以关闭,NS和NA也是默认开启的,但是是无法关闭的。

现在把地址修改回来,就可以了:

可以看到现在标识已经是TENTATIVE了。 

以上是关于ipv6的NS和NA的功能,主要任务是代替ipv4中的ARP,需要关注的点在于,配置时会往哪里发包,组播地址类型中有一个请求节点地址,这个地址在单播地址配完以后,不需要做什么操作,其会自动加入某一个组,单播地址只使用到后24位,这种方式也会有冲突的可能性,但是24位冲突的几率几乎可以忽略不计。

 总的来说一句话:NS和NA代替了ARP的功能。

IPv6网络中,配置冲突检测(Duplicate Address Detection,简称DAD)是一种机制,用于避免使用重复的IPv6地址。DAD的特点包括以下几点: 1. 所有IPv6单播地址都需要进行DAD检测。 2. 未经过DAD检测的地址被标记为试验地址(TENTATIVE),不能用于通信。 3. DAD的作用范围是本地链路。 4. 只有在配置了IPv6单播地址,并且链路没有被shutdown的情况下,才会进行DAD检测。 具体地,当设备在配置IPv6地址时,如果检测到当前配置的地址与本地链路上的其他设备的地址发生冲突,就会触发冲突检测机制。这个机制会发送Neighbor Solicitation(NS)消息到本地链路上的所有设备,以确认该地址是否已被使用。如果没有收到其他设备返回的Neighbor Advertisement(NA)消息,就表示该地址是有效的,可以被设备使用。 总之,IPv6配置冲突检测主要通过发送NS消息并等待NA消息的返回来确保IPv6地址的唯一性,以避免地址冲突问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [华为 NE20E-S V800R010C10SPC500 配置指南 - IPv6基础配置](https://download.csdn.net/download/s1t16/85191593)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [IPV6重复地址检测(DAD)](https://blog.csdn.net/qq_46402409/article/details/121945808)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [ipv6-冲突检测NSNA)](https://blog.csdn.net/qq_53614206/article/details/129941546)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值