[GH-ISSUE #2107] 访问端结束时如果proxy连接数为0时关闭该端口 #1674

Open
opened 2026-05-05 13:04:19 -06:00 by gitea-mirror · 7 comments
Owner

Originally created by @hualongsheng1988 on GitHub (Nov 24, 2020).
Original GitHub issue: https://github.com/fatedier/frp/issues/2107

proxy 连接数是访问端访问的数量(如远程桌面),当访问端退出时数量减1,如果数量减为0时,服务端关闭该proxy的端口。(目前不关闭端口)

Originally created by @hualongsheng1988 on GitHub (Nov 24, 2020). Original GitHub issue: https://github.com/fatedier/frp/issues/2107 proxy 连接数是访问端访问的数量(如远程桌面),当访问端退出时数量减1,如果数量减为0时,服务端关闭该proxy的端口。(目前不关闭端口)
gitea-mirror added the
proposal
label 2026-05-05 13:04:19 -06:00
Author
Owner

@Becods commented on GitHub (Nov 24, 2020):

理论上来讲,当proxy的端口关闭的时候,访问端将无法主动连接至服务端,这时只能通过某种方式重新打开端口(listen),例如hook
一般情况下并不重要关闭端口,除非是为了安全或者端口不够用

<!-- gh-comment-id:733048821 --> @Becods commented on GitHub (Nov 24, 2020): 理论上来讲,当proxy的端口关闭的时候,访问端将无法主动连接至服务端,这时只能通过某种方式重新打开端口(listen),例如hook 一般情况下并不重要关闭端口,除非是为了安全或者端口不够用
Author
Owner

@hualongsheng1988 commented on GitHub (Nov 25, 2020):

理论上来讲,当proxy的端口关闭的时候,访问端将无法主动连接至服务端,这时只能通过某种方式重新打开端口(listen),例如hook
一般情况下并不重要关闭端口,除非是为了安全或者端口不够用

现在公司限制了端口数量,所以需要这个功能,即没有访问端使用时主动关闭端口

<!-- gh-comment-id:733403238 --> @hualongsheng1988 commented on GitHub (Nov 25, 2020): > 理论上来讲,当proxy的端口关闭的时候,访问端将无法主动连接至服务端,这时只能通过某种方式重新打开端口(listen),例如hook > 一般情况下并不重要关闭端口,除非是为了安全或者端口不够用 现在公司限制了端口数量,所以需要这个功能,即没有访问端使用时主动关闭端口
Author
Owner

@fatedier commented on GitHub (Nov 25, 2020):

我们最近也在考虑一个新功能: 一次性的 proxy。

目的是解决某些特殊场景下的安全问题,例如将某个服务暴露出去给特定的用户访问,一旦某个用户访问后,就不再允许其他人访问,或者可以支持指定超时时间后关闭,或者周期性开放。

目前细节还没有想的太清楚,有想法的话可以补充一下。我大致上想到的几个点:

  1. 只接受单个连接。当一个用户连接建立后,不再接受新的连接,当此连接断开后,proxy 关闭。
  2. 只接受第一个连接的 IP,后续所有的连接的 IP 如果与此 IP 不一致,则拒绝。
  3. 支持给一次性 proxy 设置一个超时,达到指定时间后,proxy 关闭。
  4. 支持设置一个周期性的时间,例如每日 9点 - 10 点,其余时间 proxy 关闭。

另外一个问题是,如何触发开启一次性 proxy,可能的方法:

  1. frpc 提供 API 和命令行相关参数触发。
  2. frps 对外提供转发控制接口的能力,将用户控制请求转发到指定的 frpc 触发,由 frpc 做鉴权。
<!-- gh-comment-id:733440982 --> @fatedier commented on GitHub (Nov 25, 2020): 我们最近也在考虑一个新功能: 一次性的 proxy。 目的是解决某些特殊场景下的安全问题,例如将某个服务暴露出去给特定的用户访问,一旦某个用户访问后,就不再允许其他人访问,或者可以支持指定超时时间后关闭,或者周期性开放。 目前细节还没有想的太清楚,有想法的话可以补充一下。我大致上想到的几个点: 1. 只接受单个连接。当一个用户连接建立后,不再接受新的连接,当此连接断开后,proxy 关闭。 2. 只接受第一个连接的 IP,后续所有的连接的 IP 如果与此 IP 不一致,则拒绝。 3. 支持给一次性 proxy 设置一个超时,达到指定时间后,proxy 关闭。 4. 支持设置一个周期性的时间,例如每日 9点 - 10 点,其余时间 proxy 关闭。 另外一个问题是,如何触发开启一次性 proxy,可能的方法: 1. frpc 提供 API 和命令行相关参数触发。 2. frps 对外提供转发控制接口的能力,将用户控制请求转发到指定的 frpc 触发,由 frpc 做鉴权。
Author
Owner

@yuyulei commented on GitHub (Nov 25, 2020):

"只接受第一个连接的 IP" 更像是指定用户访问的 proxy ,跟一次性的 proxy 不是同一回事。

<!-- gh-comment-id:733447418 --> @yuyulei commented on GitHub (Nov 25, 2020): "只接受第一个连接的 IP" 更像是指定用户访问的 proxy ,跟一次性的 proxy 不是同一回事。
Author
Owner

@hualongsheng1988 commented on GitHub (Nov 26, 2020):

作者您好我总结一下
1、proxy连接数仅在由非0变为0时 触发关闭端口。
2、proxy连接失效 如10分钟连接数始终为0 关闭端口(这个有点像Web服务的session失效)

<!-- gh-comment-id:734024289 --> @hualongsheng1988 commented on GitHub (Nov 26, 2020): 作者您好我总结一下 1、proxy连接数仅在由非0变为0时 触发关闭端口。 2、proxy连接失效 如10分钟连接数始终为0 关闭端口(这个有点像Web服务的session失效)
Author
Owner

@cnazev commented on GitHub (Apr 15, 2021):

不知道这个功能在日程上了么?
我也在寻求这个功能
为安全着想
之前想的是一段时间没有链接活动后直接关闭进程
需要的时候再ssh服务器手动开启frps服务
但看作者的总结更好 可以更好满足需求

<!-- gh-comment-id:819948626 --> @cnazev commented on GitHub (Apr 15, 2021): 不知道这个功能在日程上了么? 我也在寻求这个功能 为安全着想 之前想的是一段时间没有链接活动后直接关闭进程 需要的时候再ssh服务器手动开启frps服务 但看作者的总结更好 可以更好满足需求
Author
Owner

@wuai1024 commented on GitHub (Oct 23, 2025):

这个怎么样了啊?

<!-- gh-comment-id:3434942771 --> @wuai1024 commented on GitHub (Oct 23, 2025): 这个怎么样了啊?
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: github-starred/frp#1674
No description provided.