[GH-ISSUE #225] 0.9.2版本连续启动两次frpc, 两个客户端都失去连接 #156

Closed
opened 2026-05-05 11:53:04 -06:00 by gitea-mirror · 8 comments
Owner

Originally created by @jcao-ai on GitHub (Jan 12, 2017).
Original GitHub issue: https://github.com/fatedier/frp/issues/225

frps启动, 先启动一次frpc,连接成功(称呼它为“连接1”)。在连接1成功的状态下,再启动一个frpc进程,配置相同,能不能把上一个连接踢掉,和最新的frpc保持连接。

看一下frps的log:

root@iZ11txj6ya6Z:~/frp/frp_0.9.1_linux_amd64# ./frps -c ./frps.ini
2017/01/12 11:12:52 [main.go:194] [I] Start frps success
2017/01/12 11:12:52 [main.go:196] [I] PrivilegeMode is enabled, you should pay more attention to security issues
2017/01/12 11:13:49 [server.go:180] [I] ProxyName [web02], type http listen for host [2a41c890-d654-11e6-a0fb-6593bac81348.frpc.zaocan84.com] location []
2017/01/12 11:13:49 [control.go:338] [I] ProxyName [web02], start proxy success
2017/01/12 11:13:49 [control.go:340] [I] ProxyName [web02], created by PrivilegeMode
######这里是第二个frpc开始连接###########
2017/01/12 11:15:22 [control.go:275] [W] ProxyName [web02], this proxy is already working now
2017/01/1
2 11:16:00 [control.go:214] [W] ProxyName [web02] is not exist
2017/01/12 11:16:08 [server.go:429] [W] ProxyName [web02], timeout trying to get work connection
2017/01/12 11:16:59 [control.go:214] [W] ProxyName [web02] is not exist
2017/01/12 11:17:08 [server.go:429] [W] ProxyName [web02], timeout trying to get work connection
2017/01/12 11:18:34 [control.go:214] [W] ProxyName [web02] is not exist
2017/01/12 11:18:44 [server.go:429] [W] ProxyName [web02], timeout trying to get work connection
2017/01/12 11:19:34 [control.go:214] [W] ProxyName [web02] is not exist
2017/01/12 11:19:44 [server.go:429] [W] ProxyName [web02], timeout try
ing to get work connection

这是第二个frpc执行的log:

root@FriendlyARM:~/NanoPi/NanoPiService/modules# ./frpc -c /var/frpc.ini
2017/01/12 03:22:04 [main.go:109] [I] Start frpc success
2017/01/12 03:22:04 [control.go:202] [E] ProxyName [web02], start proxy error, ProxyName [web02], this proxy is already working now
2017/01/12 03:22:04 [control.go:39] [E] ProxyName [web02], connect to server failed!
2017/01/12 03:22:04 [main.go:112] [W] All proxy exit!

看起来第二个frpc客户端直接就退出了

Originally created by @jcao-ai on GitHub (Jan 12, 2017). Original GitHub issue: https://github.com/fatedier/frp/issues/225 frps启动, 先启动一次frpc,连接成功(称呼它为“连接1”)。在连接1成功的状态下,再启动一个frpc进程,配置相同,能不能把上一个连接踢掉,和最新的frpc保持连接。 看一下frps的log: > root@iZ11txj6ya6Z:~/frp/frp_0.9.1_linux_amd64# ./frps -c ./frps.ini > 2017/01/12 11:12:52 [main.go:194] [I] Start frps success > 2017/01/12 11:12:52 [main.go:196] [I] PrivilegeMode is enabled, you should pay more attention to security issues > 2017/01/12 11:13:49 [server.go:180] [I] ProxyName [web02], type http listen for host [2a41c890-d654-11e6-a0fb-6593bac81348.frpc.zaocan84.com] location [] > 2017/01/12 11:13:49 [control.go:338] [I] ProxyName [web02], start proxy success > 2017/01/12 11:13:49 [control.go:340] [I] ProxyName [web02], created by PrivilegeMode > ######这里是第二个frpc开始连接########### > 2017/01/12 11:15:22 [control.go:275] [W] ProxyName [web02], this proxy is already working now 2017/01/1 > 2 11:16:00 [control.go:214] [W] ProxyName [web02] is not exist > 2017/01/12 11:16:08 [server.go:429] [W] ProxyName [web02], timeout trying to get work connection > 2017/01/12 11:16:59 [control.go:214] [W] ProxyName [web02] is not exist > 2017/01/12 11:17:08 [server.go:429] [W] ProxyName [web02], timeout trying to get work connection > 2017/01/12 11:18:34 [control.go:214] [W] ProxyName [web02] is not exist > 2017/01/12 11:18:44 [server.go:429] [W] ProxyName [web02], timeout trying to get work connection > 2017/01/12 11:19:34 [control.go:214] [W] ProxyName [web02] is not exist > 2017/01/12 11:19:44 [server.go:429] [W] ProxyName [web02], timeout try > ing to get work connection 这是第二个frpc执行的log: > root@FriendlyARM:~/NanoPi/NanoPiService/modules# ./frpc -c /var/frpc.ini > 2017/01/12 03:22:04 [main.go:109] [I] Start frpc success > 2017/01/12 03:22:04 [control.go:202] [E] ProxyName [web02], start proxy error, ProxyName [web02], this proxy is already working now > 2017/01/12 03:22:04 [control.go:39] [E] ProxyName [web02], connect to server failed! > 2017/01/12 03:22:04 [main.go:112] [W] All proxy exit! 看起来第二个frpc客户端直接就退出了
Author
Owner

@jcao-ai commented on GitHub (Jan 12, 2017):

仔细看了一下config.go文件,能不能把406行的return去掉,让他继续执行、?以便让新的frpc客户端取得连接,并且把旧的客户端disconnect掉

<!-- gh-comment-id:272067855 --> @jcao-ai commented on GitHub (Jan 12, 2017): 仔细看了一下config.go文件,能不能把[406行的](https://github.com/fatedier/frp/blob/edb97abf50c78dd514116e236a68eb954b6d6aa6/src/models/server/config.go#L406)return去掉,让他继续执行、?以便让新的frpc客户端取得连接,并且把旧的客户端disconnect掉
Author
Owner

@fatedier commented on GitHub (Jan 12, 2017):

在前一个连接还是正常的情况下,后一个连接不会成功,这个是符合预期的。

至于你反馈的前一个连接已经 release 的问题,我会排查一下。

<!-- gh-comment-id:272068186 --> @fatedier commented on GitHub (Jan 12, 2017): 在前一个连接还是正常的情况下,后一个连接不会成功,这个是符合预期的。 至于你反馈的前一个连接已经 release 的问题,我会排查一下。
Author
Owner

@jcao-ai commented on GitHub (Jan 12, 2017):

@fatedier 现在是这样的,我用在IoT设备上,设备随时可以断电上电,然后服务端可能还以为client活着,但是客户端上电后再连接就连不上了,所以我希望能够后来的client顶替。然后请你看一下我第二条评论的可行性
P.S. 看了一下,应该前一个连接没有被release

<!-- gh-comment-id:272068487 --> @jcao-ai commented on GitHub (Jan 12, 2017): @fatedier 现在是这样的,我用在IoT设备上,设备随时可以断电上电,然后服务端可能还以为client活着,但是客户端上电后再连接就连不上了,所以我希望能够后来的client顶替。然后请你看一下我第二条评论的可行性 P.S. 看了一下,应该前一个连接没有被release
Author
Owner

@fatedier commented on GitHub (Jan 12, 2017):

这个问题目前是可以解决的,可以看下我在 #209 这个 issue 中对于重连机制的描述。这样的场景不会有问题,如果想要缩短重连期间的等待时间,可以修改心跳包的间隔时间和超时时间。

<!-- gh-comment-id:272068906 --> @fatedier commented on GitHub (Jan 12, 2017): 这个问题目前是可以解决的,可以看下我在 #209 这个 issue 中对于重连机制的描述。这样的场景不会有问题,如果想要缩短重连期间的等待时间,可以修改心跳包的间隔时间和超时时间。
Author
Owner

@jcao-ai commented on GitHub (Jan 12, 2017):

@fatedier 但是重点是前一个frpc客户端虽然还连着,也在发心跳包,但是运行不正常,也打不开网页了。

2017/01/12 03:59:48 [control.go:224] [D] Send heartbeat to server
2017/01/12 03:59:48 [control.go:113] [D] ProxyName [web02], receive heartbeat response
2017/01/12 03:59:49 [control.go:116] [D] ProxyName [web02], new user connection
2017/01/12 03:59:49 [client.go:169] [D] Join two connections, (l[127.0.0.1:53345] r[127.0.0.1:8888]) (l[172.16.24.119:34482] r[139.196.16)
2017/01/12 03:59:49 [process.go:86] [D] ProxyName [web02], One tunnel stopped
2017/01/12 03:59:50 [control.go:116] [D] ProxyName [web02], new user connection
2017/01/12 03:59:50 [client.go:169] [D] Join two connections, (l[127.0.0.1:53347] r[127.0.0.1:8888]) (l[172.16.24.119:34484] r[139.196.16)
2017/01/12 03:59:50 [process.go:86] [D] ProxyName [web02], One tunnel stopped

然后fprs这样子打印的:

2017/01/12 11:59:15 [control.go:214] [W] ProxyName [web02] is not exist
2017/01/12 11:59:20 [control.go:214] [W] ProxyName [web02] is not exist
2017/01/12 11:59:25 [server.go:429] [W] ProxyName [web02], timeout trying to get work connection
2017/01/12 11:59:30 [server.go:429] [W] ProxyName [web02], timeout trying to get work connection

不知道是什么原因

<!-- gh-comment-id:272070647 --> @jcao-ai commented on GitHub (Jan 12, 2017): @fatedier 但是重点是前一个frpc客户端虽然还连着,也在发心跳包,但是运行不正常,也打不开网页了。 > 2017/01/12 03:59:48 [control.go:224] [D] Send heartbeat to server > 2017/01/12 03:59:48 [control.go:113] [D] ProxyName [web02], receive heartbeat response > 2017/01/12 03:59:49 [control.go:116] [D] ProxyName [web02], new user connection > 2017/01/12 03:59:49 [client.go:169] [D] Join two connections, (l[127.0.0.1:53345] r[127.0.0.1:8888]) (l[172.16.24.119:34482] r[139.196.16) > 2017/01/12 03:59:49 [process.go:86] [D] ProxyName [web02], One tunnel stopped > 2017/01/12 03:59:50 [control.go:116] [D] ProxyName [web02], new user connection > 2017/01/12 03:59:50 [client.go:169] [D] Join two connections, (l[127.0.0.1:53347] r[127.0.0.1:8888]) (l[172.16.24.119:34484] r[139.196.16) > 2017/01/12 03:59:50 [process.go:86] [D] ProxyName [web02], One tunnel stopped 然后fprs这样子打印的: > 2017/01/12 11:59:15 [control.go:214] [W] ProxyName [web02] is not exist > 2017/01/12 11:59:20 [control.go:214] [W] ProxyName [web02] is not exist > 2017/01/12 11:59:25 [server.go:429] [W] ProxyName [web02], timeout trying to get work connection > 2017/01/12 11:59:30 [server.go:429] [W] ProxyName [web02], timeout trying to get work connection 不知道是什么原因
Author
Owner

@jcao-ai commented on GitHub (Jan 12, 2017):

能不能加个Wechat探讨一下?大神

<!-- gh-comment-id:272088688 --> @jcao-ai commented on GitHub (Jan 12, 2017): 能不能加个Wechat探讨一下?大神
Author
Owner

@fatedier commented on GitHub (Jan 12, 2017):

可以加 qq 群: 606194980

<!-- gh-comment-id:272192110 --> @fatedier commented on GitHub (Jan 12, 2017): 可以加 qq 群: 606194980
Author
Owner

@JesseGuoX commented on GitHub (Jan 13, 2017):

@LitleCarl 发现我和你的应用场景类似,发了邮件给你的 foxmail,希望能多多交流

<!-- gh-comment-id:272336335 --> @JesseGuoX commented on GitHub (Jan 13, 2017): @LitleCarl 发现我和你的应用场景类似,发了邮件给你的 foxmail,希望能多多交流
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#156
No description provided.