
业务需要,想服务器开放 N 个端口,然后 frp 客户端链接上来,每个客户端单独一个端口,访问服务端的某个端口,等于直接访问某个客户端。
等于是 s1..SN -> frp server : PORT -> Xclient
而且客户端要强限制,不能随意链接其他端口,每个端口不同的 token ,可能要查询数据库。
难度大么
1 ccc008 2024-02-04 09:55:43 +08:00 可以二开,frp 本身就开源的 |
2 pkxutao PRO 每个端口不同 token 这个不确定是否满足,其他的不就是 frp 基础功能么 |
3 dzdh OP |
4 ypla 2024-02-04 10:41:00 +08:00 可以换一种思路实现,本地不存配置文件,客户端 token 请求后端接口生成对应配置,然后就是正常的启动 frp 程序;在服务名称里面加点校验字符串,服务端把不合法的踢掉 |
5 dzdh OP @yplam 客户端本地内嵌个 socks5 代理服务器,绑定本地 10000 端口,然后根据 token 链接上服务器。 服务器上访问服务器端口,远程连接到本地的 socks5 代理服务器 这个场景应该能实现的吧 |
6 pkxutao PRO @dzdh 你这个需求我还真思考过,我有另一种实现方案,你现在鉴权放在客户端的 frp 上,但是换一种思路,把鉴权放在服务端去,例如每台设备的 ssh 密码不一样,只能通过服务端获取,服务端来做鉴权,告诉使用的人想要连接的设备密码是多少然后才开始连接 |
8 isnullstring 2024-02-04 12:55:11 +08:00 NPS |
9 exqibao 2024-02-04 14:30:29 +08:00 可以试试 rathole ,支持配置热加载,而且就是一个 token 对应服务器一个端口的。 |
10 88WoIdBJtW0N1gEk 2024-02-04 15:20:06 +08:00 |
11 Sharuru 2024-02-04 15:28:35 +08:00 via iPhone 以前做过一个简单版本的,所有配置的 service name 等都是 uuid 随机生成,外面用 C# 套个 GUI ,用户运行时输入一个 key 后请求一串加密内容,解密后就是命令行运行参数,丢给 frp 运行。frp 自己也重新编译过,去掉了一些输出,硬编码一些地址信息。 |
12 MADBOB 2024-02-04 15:29:41 +08:00 我们业务也有这种需求,最后选择了 NPS,仅在客户端配置 key ,每个客户端一个 key ,所有端口转发相关的配置全在服务端配置,有一定的安全性。 |
13 mxT52CRuqR6o5 2024-02-04 15:36:24 +08:00 有没有可能二开得问你自己啊 |
14 Cola98 2024-02-04 15:52:26 +08:00 应该是可以,我目前也有这种需求,大概是想将家里的 k8s 集群对外提供服务,想的是把 frp 对接一个 nginx 网关,然后网关里面集成服务 |
15 dzdh OP @yplam #4 尝试了一下,还是有点难度的。 我只是简单的应用。 这样看可以不可以。 我用 go 写个 server 端,开放个 tcp 监听,每个链接标记 auth 状态,auth:false 的,for read 第一行找到 token ,开放新端口,io.copy 。 nodejs 连接,发送 token+\n 这样逻辑上应该是 ok 的吧 |
16 yplam 2024-02-05 11:43:34 +08:00 |