我正在构建一个点对点协议,其中节点通过共享它们所连接的 IP 地址来通告其他节点的存在。此功能称为“对等发现”。我正在运行的节点之一具有静态 IPv4,因此所有其他节点都可以连接到该节点。我们称这台机器为“A”。
当我通过 IPv4 从办公室中连接 wifi 的计算机连接到 A 时,这些计算机连接不良,对等发现不起作用。但当我通过 IPv6 连接时,对等发现效果非常好。办公机器和 A 在不同的网络上。
使用 IPv6,办公室计算机上自我报告的 IP ( ip -6 addr
) 与 A 看到的相匹配。当我通过 IPv4 连接时,两个报告的地址之间不匹配
这是因为办公室机器从办公室 WiFi 路由器获取经过 NAT 处理的 IPv4 地址和全球唯一的 IPv6 地址吗?
其他 p2p 协议上也会发生这种情况吗?
所有机器都通过 TCP 协议连接。我构建的对等发现功能只需共享已连接节点的 IP 地址及其宣布的用于传入连接的端口即可工作。
我并不是要求修复 IPv4。我只是询问 IPv4 与 IPv6 的典型 NAT 行为,以及其他 p2p 应用协议(例如 BitTorrent 或比特币)是否也会遇到这种行为。