IPv6 区域解析

iai*_*gin 0 networking ipv6

首先,我对 IPv6 的细节还不熟悉,所以如果这只是对 IPv6 路由的误解,我不会感到惊讶。考虑一下我正在运行 P2P 覆盖网络的情况,其中一部分位于单个 LAN 的边界内。该 LAN 内的节点具有以下链路本地地址(如其自身所见):

  • 对等 1 fe80::225:4bff:fea8:e200%en0
  • 对等 2 fe80::225:4bff:fea8:e201%eth1
  • 对等 3 fe80::225:4bff:fea8:e202%en1

现在,假设每个对等点都能够通过某种方式发现其他对等点,并拥有彼此的地址。每个对等点都在侦听一个端口,例如 12345。如果对等点 1 想与对等点 2 通信,他们可能会尝试使用 URI:

tcp://[fe80:225:4bff:fea8:e201%eth1]:12345

这就是我遇到问题的地方。对等点 1 没有名为“eth1”的适配器,因此它不知道该 IPv6 区域标识符。如果从地址中删除区域 ID,则对等体 1 无法确定必须使用哪个适配器来联系主机。

那么问题来了:是否有可能以标准方式解析 IPv6 地址的区域标识符?如果没有,我是否必须向系统查询所有区域标识符,并尝试依次使用每个区域标识符连接到该地址,直到成功为止?或者尝试使用链接本地地址进行通信从一开始就是一个愚蠢的想法?

bdo*_*lan 5

仅当您有某种机制可以自动定位有问题的其他节点并连接、绑定到正确的接口时,链接本地地址才适用。

如果您希望用户手动输入地址,则应该使用站点本地地址(或者更好的是,唯一本地地址)并让用户自行配置它们,或者在链接本地地址之上使用地址解析方法,例如作为 mDNS。

  • 一项小修复:站点本地地址已被弃用 (RFC 3879),您应该使用 ULA(唯一本地地址,RFC 4193)。 (3认同)