mirror of
https://github.com/fatedier/frp.git
synced 2026-05-15 16:15:49 -06:00
[GH-ISSUE #87] 多客户端privilege_mode=true好像没有效果 #41
Labels
No labels
In Progress
WIP
WaitingForInfo
bug
doc
duplicate
easy
enhancement
future
help wanted
invalid
lifecycle/stale
need-issue-template
need-usage-help
no plan
proposal
pull-request
question
todo
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/frp#41
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @railsfans on GitHub (Aug 22, 2016).
Original GitHub issue: https://github.com/fatedier/frp/issues/87
我在服务端启动了privilege_mode模式,在两台服务器上运行两个客户端,两个客户端的配置文件中privilege_token设置成和服务端的一样,remote_port不一样,但是出现了只能一台设备连接到服务器,另一台日志打印如下:
2016/08/22 19:30:52 [control.go:181][E] ProxyName [privilege_web], start proxy error, ProxyName [privilege_web], this proxy is already working now
2016/08/22 19:30:52 [control.go:39][E] ProxyName [privilege_web], connect to server failed!
提示被占用了,这个是bug么。
@fatedier commented on GitHub (Aug 22, 2016):
proxy 的 name 不能一样,
[privilege_web],需要换成其他的名字。@railsfans commented on GitHub (Aug 22, 2016):
按照你的解决了,不过为啥这么设计呢,多客户端每个都得改成不同的名字不是很麻烦。
@railsfans commented on GitHub (Aug 22, 2016):
另外请教一下,现在客户端和服务端的时间差相差很大的话客户端就会自动退出,有没有什么设置能不检查这个时间差还能继续连接。
@fatedier commented on GitHub (Aug 22, 2016):
@railsfans
@railsfans commented on GitHub (Aug 22, 2016):
我现在想在自己的ARM板子上运用,我的ARM板子启动的时候时间是没有校正过的,还是初始化的2000年时间,所以我虽然加入了开机启动项中,但是还是直接退出。可以考虑在程序中设置一个类似C中的宏定义来决定是否启用这个时间校正的功能。
@railsfans commented on GitHub (Aug 22, 2016):
现在你的key怕被重复使用,key的内容可以设置成proxy 的 name,这个不是唯一的么。其他的就连接不上了。
@fatedier commented on GitHub (Aug 22, 2016):
你可以把
src/cmd/frps/control.go的下面这段去掉,自己编译一下:每一个报文中用于身份验证生成的 key 是动态的,通过
proxyName + timestamp + authToken的 md5 值得到,其中authToken不会在网络中传输,即使别人通过网络截获到了你的 key 值,有效期也是15分钟,之后这个 key 无法通过验证,也不会泄漏你的authToken。@railsfans commented on GitHub (Aug 23, 2016):
好的,我有个问题请教一下,我从你这里下过来源码,里面有Makefile和Makefile.cross-compiles两个文件,Makefile编译出来的是哪个平台的,Makefile.cross-compiles编译出来的是哪个平台的,我用Makefile.cross-compiles编译出来了好多文件,arguments_darwin_386,calculator_darwin_386,config_file_darwin_386,git_darwin_386,arguments_darwin_amd64,calculator_darwin_amd64,config_file_darwin_amd64,git_darwin_amd64等很多后缀是不同平台的文件,哪个才是frps的客户端和服务端。
@fatedier commented on GitHub (Aug 23, 2016):
Makefile里编译出来的程序取决于你当前系统环境,你在 64位 linux 下编译就是 linux amd64 的,Makefile.croos-compiles是我用来打包要发布的各个平台的程序,你要编译其他平台的程序,推荐你用下面的命令( go 1.5 及以上版本 ):根据你要编译的系统和架构修改 GOOS 和 GOARCH 的值。
附:关于时间戳的验证,考虑之后的版本提供一个配置项,毕竟可能每个人对于安全性的需求不同,可以主动设置验证时间的长短或者完全关闭。
@railsfans commented on GitHub (Aug 24, 2016):
恩。现在调试的时候发现了一个问题,就是如果服务端没有开启的话,客户端是直接退出的,能否实现客户端不退出程序,自动延迟30s或者其他时间后重新连接服务端。
@fatedier commented on GitHub (Aug 24, 2016):
只有第一次启动的时候,如果连接失败会直接退出,这种情况下通常都是 server 端的地址或者端口写错了,启动之后,如果中间出现网络中断,会自动重连。
@railsfans commented on GitHub (Aug 26, 2016):
参考楼主的代码我在loginToServer函数中增加了如下代码,实现了第一次启动的时候也能重连不退出,楼主可以考虑加入到新版本中。
@fatedier commented on GitHub (Aug 26, 2016):
我的考虑是第一次连接如果失败,有很大可能性是配置错误,这种情况下由用户手动操作比较合适。
@railsfans commented on GitHub (Aug 26, 2016):
我看文档frps服务端重启用到了reload选项,但是实际我试了下不管用。
另外我想问下这个frps最多能承受多少客户端的连接,有没有存在ngrok那样内存泄露的问题。
@fatedier commented on GitHub (Aug 26, 2016):
尽量在一个 issue 里解决一个问题,如果遇到 bug 和有比较好的建议可以另开一个 issue,方便管理和查看。
--reload我在 linux 64 位环境下是 ok 的,需要你提供一下 frps 的版本以及系统架构的信息我测试一下,有可能是不同系统下处理逻辑不一致,不是很确定。承受多少客户端的连接取决于硬件配置,网络环境,在 linux 下 go 的网络 IO 模型类似于 nginx,可以参考。至于内存泄漏以及其他问题,也不能保证没有 bug,至少我自已用着还是很稳定的。目前也只是前期开发阶段,后续还会加一些功能,进行优化,在这个过程中肯定会有相当多的问题,作为一个开源项目还是需要大家共同来完善,提意见。个人的力量毕竟是有限的,只能保证会尽力去维护。
@railsfans commented on GitHub (Aug 26, 2016):
好的。我另开一个issue