【发布时间】:2023-04-02 18:15:01
【问题描述】:
所以有几个网站会为你计算你的链接本地 ipv6 地址,比如这个here。
尽管如此,它对于如何计算这个地址以及输入参数是什么都没有提供任何有用的信息。那么,如果知道 ipv4 地址、子网掩码和网关地址,那么计算链路本地 ipv6 地址的过程(或算法)是什么?我正在做一个使用 ISATAP 网络隧道的 SCTP 套接字项目,并且 LL ipv6 地址用于构建 ISATAP 地址。
【问题讨论】:
所以有几个网站会为你计算你的链接本地 ipv6 地址,比如这个here。
尽管如此,它对于如何计算这个地址以及输入参数是什么都没有提供任何有用的信息。那么,如果知道 ipv4 地址、子网掩码和网关地址,那么计算链路本地 ipv6 地址的过程(或算法)是什么?我正在做一个使用 ISATAP 网络隧道的 SCTP 套接字项目,并且 LL ipv6 地址用于构建 ISATAP 地址。
【问题讨论】:
Appendix A of RFC 4291 描述了从 MAC 地址计算修改后的 EUI-64 的方法。一旦你有了修改后的 EUI-64,你只需把它放在地址的低 64 位,然后把 fe80:: 放在高 64 位。
基本上你翻转 MAC 地址的第 7 位,并打包它的前 24 位(包括翻转的位),然后是 fffe,然后是 MAC 地址的低 24 位,总共 64 位。
话虽如此,您的问题是如何从 IPv4 地址和子网掩码派生链接本地地址。那,你做不到。 IPv4 地址和子网掩码(如果确实有一个 - IPv6 根本不需要 IPv4 在同一接口上运行)与 IPv6 地址无关,并且两者没有任何关系。 IPv4 网关地址(同样,如果有的话)甚至更不相关。
【讨论】:
链接本地地址可以基于RFC 4862的MAC地址,也可以根据RFC 4941随机生成。
通常这应该仅限于全局范围,但一些系统将此隐私扩展实施扩展到链接本地范围。 Follow this question on serverfault for discussion of the topic.
【讨论】: