timzaak / blog

8 stars 1 forks source link

网络打通 #121

Closed timzaak closed 1 month ago

timzaak commented 1 month ago

参考该项目:turn-rs

鉴权

WebRTC 鉴权里,需要依据 用户名、密码 进行Hash。 若是想支持动态密码,就需要 Controller 服务和客户端协商出一个临时密码出来,Relay 去 Controller 服务里查询出临时密码用来做 Hash。 用户名也需要确保唯一。

就近接入

turn-balance 实现了最基本的方案,客户端咨询 Master Balancer 节点情况,Master 返回候选节点(balance + relay),由客户端 ping balance 确认网速,再连接该 balance 上 relay。 PS:没有考虑 relay 负载问题,和一个 balance 下挂多个 relay 的情况。挂上 ip2region 可减少返回 Relay 数量。

限流

目前这个没有实现,不过可以参考 Pingora-limits 来解决此问题。

状态变更

节点的增删需要实时推送,Controller 挂个 mqtt 来解决 就好。

小结

Controller 服务还是要做大量业务逻辑支撑才行的。

timzaak commented 1 month ago

libp2p 可以基于 PreShare Key 构建私有网络。 但分发 PreShared Key、黑白名单、节点列表就需要 Controller 服务了。 针对私有网络这块,貌似不需要 libp2p,直接 WebRTC 即可。

timzaak commented 1 month ago

网络打通后,可搞的事情有:

VPN

挂上Tap/Tun

文件共享

ipfs 就是干这个的

端口转发

这样可以省略掉 Tap/Tun、Windows Driver,但需要参考 VPN 协议设计,解决数据到底转向哪里的问题。

timzaak commented 1 month ago

DDNS、IPv6 也是一种打通方案,需要测试。

timzaak commented 1 month ago

最终选择了 ForNetCode/mqtt-exec + sshx 来解决问题。