[GH-ISSUE #244] 特权模式下同一内网下不同机器疑似不能同时建立连接? #169

Closed
opened 2026-05-05 11:54:35 -06:00 by gitea-mirror · 10 comments
Owner

Originally created by @hijiangtao on GitHub (Feb 3, 2017).
Original GitHub issue: https://github.com/fatedier/frp/issues/244

简单描述一下问题所在环境,由于本人所在环境处于局域网,对外无公有 IP,所以利用云服务器建立了 frp 特权模式的连接,在只有一个 frpc 对应连接的情况下能够正常连接通信(假设局域网下该机器命名为 local-A)。

与此同时我利用另一个局域网下的机器 local-B 采用同样的特权 token 建立连接(listen-port 已经修改为不同于local-A的设置),此时在机器 local-B 第一次执行 ./frpc -c ./frpc_min.ini 时会报错显示 proxy 已经在工作

2017/02/03 21:51:50 [main.go:109] [I] Start frpc success
2017/02/03 21:51:50 [control.go:190] [E] ProxyName [ssh], start proxy error, ProxyName [ssh], this proxy is already working now
2017/02/03 21:51:50 [control.go:39] [E] ProxyName [ssh], connect to server failed!
2017/02/03 21:51:50 [main.go:112] [W] All proxy exit!

之后,我再一次在 local-B 上执行 ./frpc -c ./frpc_min.ini 时会报错 连接拒绝

2017/02/03 21:59:53 [main.go:109] [I] Start frpc success
2017/02/03 21:59:53 [control.go:139] [E] ProxyName [ssh], connect to server [139.129.203.9:7000] error, dial tcp 139.129.203.9:7000: getsockopt: connection refused
2017/02/03 21:59:53 [control.go:39] [E] ProxyName [ssh], connect to server failed!
2017/02/03 21:59:53 [main.go:112] [W] All proxy exit!

经查看 frps 所在云服务器的 log 显示:第一次 local-B 的连接使得 frps 异常退出,第二次 local-B 的连接 connection refused 的原因则为云服务器上的 frp 进程已不存在、所以无法建立连接。

其中, frps.ini 配置为

# frps.ini
[common]
bind_port = 7000
privilege_mode = true
privilege_token = 1234

frpc.ini配置为 (local-A 和 local-B 的 remote_port 设置为不同的编号)

# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
privilege_token = 1234

[ssh]
privilege_mode = true
local_port = 22
remote_port = 6000

由此,我认为存在的原因会不会是同一局域网下两个机器的 frp 同时启动会存在冲突,以致于以上失败情况?谢谢。

Originally created by @hijiangtao on GitHub (Feb 3, 2017). Original GitHub issue: https://github.com/fatedier/frp/issues/244 简单描述一下问题所在环境,由于本人所在环境处于局域网,对外无公有 IP,所以利用云服务器建立了 frp 特权模式的连接,在只有一个 frpc 对应连接的情况下能够正常连接通信(假设局域网下该机器命名为 local-A)。 与此同时我利用另一个局域网下的机器 local-B 采用同样的特权 token 建立连接(listen-port 已经修改为不同于local-A的设置),此时在机器 local-B **第一次执行** `./frpc -c ./frpc_min.ini` 时会报错显示 proxy 已经在工作 ``` 2017/02/03 21:51:50 [main.go:109] [I] Start frpc success 2017/02/03 21:51:50 [control.go:190] [E] ProxyName [ssh], start proxy error, ProxyName [ssh], this proxy is already working now 2017/02/03 21:51:50 [control.go:39] [E] ProxyName [ssh], connect to server failed! 2017/02/03 21:51:50 [main.go:112] [W] All proxy exit! ``` 之后,我再一次在 local-B 上执行 `./frpc -c ./frpc_min.ini` 时会报错 **连接拒绝** ``` 2017/02/03 21:59:53 [main.go:109] [I] Start frpc success 2017/02/03 21:59:53 [control.go:139] [E] ProxyName [ssh], connect to server [139.129.203.9:7000] error, dial tcp 139.129.203.9:7000: getsockopt: connection refused 2017/02/03 21:59:53 [control.go:39] [E] ProxyName [ssh], connect to server failed! 2017/02/03 21:59:53 [main.go:112] [W] All proxy exit! ``` 经查看 frps 所在云服务器的 log 显示:第一次 local-B 的连接使得 frps 异常退出,第二次 local-B 的连接 connection refused 的原因则为云服务器上的 frp 进程已不存在、所以无法建立连接。 其中, frps.ini 配置为 ``` # frps.ini [common] bind_port = 7000 privilege_mode = true privilege_token = 1234 ``` frpc.ini配置为 (local-A 和 local-B 的 remote_port 设置为不同的编号) ``` # frpc.ini [common] server_addr = x.x.x.x server_port = 7000 privilege_token = 1234 [ssh] privilege_mode = true local_port = 22 remote_port = 6000 ``` 由此,我认为存在的原因会不会是同一局域网下两个机器的 frp 同时启动会存在冲突,以致于以上失败情况?谢谢。
Author
Owner

@yovanc commented on GitHub (Feb 3, 2017):

可以看看进程是否有frp.exe,如果有结束掉,之后再次尝试启动。另外我之前也遇到过你这种问题,重新去另一台机器上复制了一份配置 文件就可以用,你看看修改配置的时候尽量用编辑器去修改。
如果还不行,先关闭云服务器防火墙,看看是不是防火墙拦截端口。

<!-- gh-comment-id:277256582 --> @yovanc commented on GitHub (Feb 3, 2017): 可以看看进程是否有frp.exe,如果有结束掉,之后再次尝试启动。另外我之前也遇到过你这种问题,重新去另一台机器上复制了一份配置 文件就可以用,你看看修改配置的时候尽量用编辑器去修改。 如果还不行,先关闭云服务器防火墙,看看是不是防火墙拦截端口。
Author
Owner

@hijiangtao commented on GitHub (Feb 3, 2017):

  • 我是在 Linux 下操作的, 单连接情况下 ps -ef | grep frp 有 frp 进程(server, client均有),双连接情况下均不存在了
  • 编辑上我觉得应该不会存在问题,虽然我不是直接复制的信息,但是我用 vim 编辑应该不会有类似编码错误的操作引入(不知道你是不是指这个)?
  • 两个端口分别单连接的时候是都可以成功建立连接的,只是在单连接基础上建立第二个client 连接出现以上问题,所以我认为应该不属于云服务防火墙拦截端口的问题?

谢谢。 @yovanc

<!-- gh-comment-id:277258062 --> @hijiangtao commented on GitHub (Feb 3, 2017): - 我是在 Linux 下操作的, 单连接情况下 ps -ef | grep frp 有 frp 进程(server, client均有),双连接情况下均不存在了 - 编辑上我觉得应该不会存在问题,虽然我不是直接复制的信息,但是我用 vim 编辑应该不会有类似编码错误的操作引入(不知道你是不是指这个)? - 两个端口分别单连接的时候是都可以成功建立连接的,只是在单连接基础上建立第二个client 连接出现以上问题,所以我认为应该不属于云服务防火墙拦截端口的问题? 谢谢。 @yovanc
Author
Owner

@yovanc commented on GitHub (Feb 3, 2017):

我之前还遇到过server端明明启动状态,但client死活都无法连接的情况。linux直接重置了系统,结果再次部署好又可以用了,而windows则等到第二天自动恢复。另外建议你检查你的server上subdomian是否设置?
另外我建议可以去http://diannaobos.com/frp/下载他们的配置文件,看看是否client是否配置错误
由于我对这块不太懂,所以都是通过不断尝试才搭建完成。

<!-- gh-comment-id:277260028 --> @yovanc commented on GitHub (Feb 3, 2017): 我之前还遇到过server端明明启动状态,但client死活都无法连接的情况。linux直接重置了系统,结果再次部署好又可以用了,而windows则等到第二天自动恢复。另外建议你检查你的server上subdomian是否设置? 另外我建议可以去http://diannaobos.com/frp/下载他们的配置文件,看看是否client是否配置错误。 由于我对这块不太懂,所以都是通过不断尝试才搭建完成。
Author
Owner

@fatedier commented on GitHub (Feb 3, 2017):

  1. 确认下服务端 frps 的版本更新到 0.9.3 了。
  2. ProxyName 必须唯一,不能重复。
<!-- gh-comment-id:277265480 --> @fatedier commented on GitHub (Feb 3, 2017): 1. 确认下服务端 frps 的版本更新到 0.9.3 了。 2. ProxyName 必须唯一,不能重复。
Author
Owner

@hijiangtao commented on GitHub (Feb 3, 2017):

@yovanc 谢谢,我认为我的情况应该不属于 client 配置错误,在单连接情况是成功的,双连接情况下的报错信息也比较明显;另外,我看到 subdomain 的信息是指方便多人访问的有关二级域名的相关配置,我直接通过 IP 访问,似乎是不需要 domain 来进行转发(或类似功能)的,所以 server 上不设置 domain 相关操作应该没有影响?

UPDATE: 在不使用特权模式的情况下(即普通添加两个 ssh 配置的模式),我的两台机器均能够成功建立连接通信。所以我在想,以上说到的情况会不会只在局域网两台机器下均使用特权模式建立连接的情况下重现,希望以上信息有所帮助。

<!-- gh-comment-id:277265725 --> @hijiangtao commented on GitHub (Feb 3, 2017): @yovanc 谢谢,我认为我的情况应该不属于 client 配置错误,在单连接情况是成功的,双连接情况下的报错信息也比较明显;另外,我看到 subdomain 的信息是指方便多人访问的有关二级域名的相关配置,我直接通过 IP 访问,似乎是不需要 domain 来进行转发(或类似功能)的,所以 server 上不设置 domain 相关操作应该没有影响? **UPDATE**: 在不使用特权模式的情况下(即普通添加两个 ssh 配置的模式),我的两台机器均能够成功建立连接通信。所以我在想,以上说到的情况会不会只在局域网两台机器下均使用特权模式建立连接的情况下重现,希望以上信息有所帮助。
Author
Owner

@hijiangtao commented on GitHub (Feb 3, 2017):

@fatedier frps 版本为 0.9.1

谢谢,由于特权模式部分未强调不同连接的 ProxyName 唯一性,导致错误;修改 ProxyName 不同机器上 ssh 别名后问题解决 :-)

<!-- gh-comment-id:277266890 --> @hijiangtao commented on GitHub (Feb 3, 2017): @fatedier frps 版本为 0.9.1 谢谢,由于特权模式部分未强调不同连接的 ProxyName 唯一性,导致错误;修改 ProxyName 不同机器上 ssh 别名后问题解决 :-)
Author
Owner

@yovanc commented on GitHub (Feb 3, 2017):

@fatedier迫切需要文档中提供FAQ,哈哈!非常适合快速排查问题。如果连接时Proxy Name遇相同名称可以自动添加一些前缀名称实现自动区分就方便多了,有时候我明知道要改不同名称,还是会忘记,导致连接失败。

<!-- gh-comment-id:277270380 --> @yovanc commented on GitHub (Feb 3, 2017): @fatedier迫切需要文档中提供FAQ,哈哈!非常适合快速排查问题。如果连接时Proxy Name遇相同名称可以自动添加一些前缀名称实现自动区分就方便多了,有时候我明知道要改不同名称,还是会忘记,导致连接失败。
Author
Owner

@fatedier commented on GitHub (Feb 3, 2017):

@yovanc 提议很好,FAQ 会有的。 同名的问题在考虑怎么改进。

<!-- gh-comment-id:277270987 --> @fatedier commented on GitHub (Feb 3, 2017): @yovanc 提议很好,FAQ 会有的。 同名的问题在考虑怎么改进。
Author
Owner

@applepearq commented on GitHub (Apr 7, 2017):

@hijiangtao 你这样写服务端 dashboard 怎么查看?好简单的服务端啊

<!-- gh-comment-id:292662619 --> @applepearq commented on GitHub (Apr 7, 2017): @hijiangtao 你这样写服务端 dashboard 怎么查看?好简单的服务端啊
Author
Owner

@hijiangtao commented on GitHub (Apr 8, 2017):

@applepearq 没太清楚你的意思? 目前为止, 我在使用过程中没有过多关注 dashboard 的访问.

<!-- gh-comment-id:292706636 --> @hijiangtao commented on GitHub (Apr 8, 2017): @applepearq 没太清楚你的意思? 目前为止, 我在使用过程中没有过多关注 dashboard 的访问.
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#169
No description provided.