为什么需要IPv6邻居请求才能获取MAC地址?


12

我是一名软件开发人员,在Techday上只有一本关于IPv6的免费书籍,我在阅读中很有趣。他们放弃了它,是因为它有点老书了(W2008),所以对于其他/较新的OS来说情况可能有所不同,但是我不了解Neighbor Discovery获得MAC地址的必要性。

根据这本书,每个节点都会自动获得一个链接本地IP地址,该地址是通过FF-FE在第3个字节和第4个字节之间插入并翻转U / L位从MAC地址构造而成的,因此,用的MAC地址的节点00-AA-00-3F-2A-1C变为FE80::2AA:FF:FE:3F:2A1C

为了确定链路层MAC地址,邻居请求消息会发送到链路本地IP地址,该消息会回复包含其MAC地址的消息...但是发送者已经知道了,因为MAC编码在链路中-本地IP地址。因此,这听起来像是将明信片邮寄给某人,要求他们提供地址。

Answers:


20

每个节点都会自动生成一个本地链接地址,但是:

  • 该地址可能不是以RFC 2464中指定的EUI-64格式生成的。IPv6地址也可以是加密生成的地址(RFC 3972),临时隐私地址(RFC 4941),或者在现代操作系统中,可以是稳定的隐私地址(RFC 7217)。

  • 由于管理员的明确配置,看起来像具有EUI-64接口ID的地址实际上可能与指示的MAC地址不对应。

由于不能只是将地址“转换回”为MAC地址,因此必须发送邻居请求来确定MAC地址。

还有其他一些原因也使得必须进行邻居征集。其中一些是:

  • 重复地址检测(RFC 4862)。其他主机可能(正确或错误)声称了该主机要使用的地址。
  • 邻居不可达检测。缺乏对邻居请求的响应是邻居无法到达的一个指标。

书本很好,但过时的书可能没那么有用。在过去十年中,甚至IPv6也进行了重大修订。最好的事实来源是相关的RFC,包括原始RFC和标记为已更新或作废的RFC。RFC的详细规定足以允许编写符合标准的实现。您可以通过阅读RFC 4861了解邻居发现的所有详细信息。


感谢您的更正;如果不使用EUI-64格式,则确实需要发现MAC。但是实际上,我不了解链接本地地址的EUI-64格式的隐私问题,因为链接本地地址的范围仅限于该链接,并且在该链接上,MAC地址必须是(并且可以是)(无论是邻居请求)对于以太网通信都是已知的,因此出于恶意目的,可以将MAC地址保存在本地链路上的稳定隐私地址上,不是吗?
埃德温

@ Edwin,SLAAC最初用于所有IPv6寻址,而不仅仅是链接本地地址,因此可以跟踪主机。SLAAC只是分配本地链接地址的一种方法。也可以手动分配它们,但不会在本地链接地址中提供MAC地址。我知道有些人想要手动分配所有地址,包括本地链接。看起来很多工作几乎没有收获,但却使他们感到高兴,并且接口上所有地址的所有IID都是相同的,并且顺序一致。
罗恩·莫平

@Edwin而且,每个主机确实将维护一个目标缓存(请参阅RFC 4861),该地址类似于主机维护的IPv4 ARP表。
迈克尔·汉普顿

如果地址的大小是原来的两倍,CGA可能会更简单,更安全。规范的一半是仅在接口标识符中具有64位的变通办法,而理想情况下,它们本来需要大约162位。每当出现128位过多的想法时,都要记住这一点。
kasperd '16

您认为该Microsoft文档有什么不规范之处?在我看来,它只是总结了您链接到的RFC。
卡巴斯德(Kasperd)

9

因此,您要么误解,要么在某些事情上被误导了。

使用SLAAC,主机可以使用其MAC地址构造其自己的IPv6地址,但是许多人认为这样做很危险,会泄漏过多信息,并允许跟踪特定的主机。基于此,开发了隐私扩展和随机寻址,并且操作系统将其用于提供隐私/安全性。这意味着主机可以创建自己的寻址,而不是基于其MAC地址。

当主机需要在IPv4中发现邻居的MAC地址时,它将使用ARP。ARP广播请求,但IPv6没有广播。而是,每个主机必须加入一个“请求的节点”多播组。该组基于其IPv6地址的后24位。由于IPv6接口可以具有任意数量的IPv6地址,因此主机可以加入多个“请求的节点”多播组。寻找另一个主机的MAC地址的IPv6主机将向目标IPv6地址的“请求的节点”多播组发送多播请求。

这提供了优于IPv4 ARP的优势。由于ARP使用广播进行请求,因此它会中断第二层广播域上的每个主机。由于请求节点多播组使用目标IPv6地址的后24位,因此ND多播请求可能只会中断目标主机,或者可能会中断第二层广播域上的一或两个其他主机。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.