Files
OpenFlare/docs
ryan d9b8dc81ee fix(relay): prioritize IPv4 in dual-stack outbound IP detection
修复 Relay 节点在双栈网络环境下可能上报 IPv6 地址,导致 Tunnel frpc 客户端无法连接 frps 的问题。

根因:
- HTTPOutboundIPStrategy 首次尝试使用 tcp4 强制 IPv4 连接
- 失败时回退到双栈 tcp 客户端,此时可能通过 IPv6 连接并返回 IPv6 地址
- Relay 心跳将 IPv6 地址上报给 Server
- Tunnel frpc 尝试连接该 IPv6 地址失败

修复:
- 在回退到双栈客户端后,仍优先返回 IPv4 地址(通过 ip.To4() 转换)
- 仅在完全无 IPv4 路由时才返回 IPv6
- 确保 Relay 心跳上报的 IP 与 frpc 连接兼容

影响范围:
- pkg/geoip.HTTPOutboundIPStrategy.GetOutboundIP
- internal/apps/relay/heartbeat.Service(通过 nodeip.DetectWithContext 调用)

测试:
- 新增 TestHTTPOutboundIPStrategyPrioritizesIPv4 验证 IPv4 优先逻辑
- 所有现有测试保持通过
2026-06-22 15:49:08 +08:00
..
2026-06-05 11:12:06 +08:00
2026-04-26 10:25:44 +08:00
2026-06-20 13:44:24 +08:00
2026-06-19 14:45:17 +08:00
2026-06-20 13:44:24 +08:00
2026-05-09 17:37:06 +08:00
2026-05-09 17:37:06 +08:00
2026-06-06 12:07:39 +08:00
2026-06-22 12:00:43 +08:00
2026-06-05 11:12:06 +08:00
2026-05-09 17:37:06 +08:00
2026-05-09 17:37:06 +08:00
2026-05-09 17:37:06 +08:00
2026-06-02 00:13:39 +08:00
2026-06-22 12:00:43 +08:00
2026-06-22 12:00:43 +08:00