Giter Club home page Giter Club logo

frp's People

Contributors

akx avatar arugal avatar becods avatar bgkavinga avatar bingtianbaihua avatar blizard863 avatar cbodonnell avatar diamondyuan avatar ericlarssen avatar fakeboboliu avatar fatedier avatar fsyxhua avatar fzhyzamt avatar glzjin avatar hal-wang avatar hurricanezwf avatar im-zhou avatar jiajunhuang avatar koho avatar lonwern avatar maodanp avatar moul avatar muesli avatar pkgplus avatar vashstorm avatar velovix avatar wlynxg avatar wuqinqiang avatar yuyulei avatar zalberth avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

frp's Issues

The ssh cannot be connected sometimes

I can connect to client directly, but when I connect through server using ssh [email protected] -p 6022, it often stucked and after some time show:
ssh_exchange_identification: Connection closed by remote host
I can only login 1 times in 10.
When I forward 80 port, it works well.
I want to know whether it will missing some information?
The configs are as bellow:
server:

[ssh]
auth_token = password
bind_addr = 0.0.0.0
listen_port = 6022

client:

[ssh]
local_ip = 127.0.0.1
local_port = 22
use_encryption = false

ssh log:

OpenSSH_6.9p1, LibreSSL 2.1.8
debug1: Reading configuration data /Users/maple/.ssh/config
debug1: /Users/maple/.ssh/config line 1: Applying options for *
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 20: Applying options for *
debug1: /etc/ssh/ssh_config line 102: Applying options for *
debug1: Connecting to my.server.ip [my.server.ip] port 6022.
debug1: Connection established.
debug1: identity file /Users/maple/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/maple/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/maple/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/maple/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/maple/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/maple/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/maple/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/maple/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.9
debug1: ssh_exchange_identification:
debug1: ssh_exchange_identification: \024\247       u\234\333\373\030\357]-]\247\210\366\241
debug1: ssh_exchange_identification: dsa-sha2-nistp256,ssh-ed25519
debug1: ssh_exchange_identification: ator.liu.se
debug1: ssh_exchange_identification: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-md5,h
debug1: ssh_exchange_identification: mac-sha1,[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug1: ssh_exchange_identification: [email protected],[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-sha1,[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd
ssh_exchange_identification: Connection closed by remote host

go get 安装失败

你好,
我想用下面的命令下载程序编译
go get github.com/fatedier/frp
但是提示错误
can't load package: package github.com/fatedier/frp: no buildable Go source files in /home/webadmin/golang_work/src/github.com/fatedier/frp
之前用这种方式安装的,挺方便的,现在是不支持这种安装方式了吗?

join connections error

2016/08/04 16:54:04 [control.go:181] [I] Start to send heartbeat to frps
2016/08/04 16:54:21 [conn.go:182] [W] join connections error, read tcp 192.168.1.190:41386->192.168.1.190:18080: read tcp 192.168.1.190:44203->121.40.217.143:47000: use of closed network connection

增加一个c/c++版本的协议接口吧

方便的话,提供一个c或c++版本的反向代理功能库
方便大家在嵌入式系统上移植终端。
现在openwrt的开发环境不支持go语言。

server adder error

I set server adderess in frpc.ini, and run frpc -c frpc.ini
the log show:
2016/04/07 09:00:48 [main.go:101] [I] Start frpc success
2016/04/07 09:00:48 [control.go:130] [E] ProxyName [ssh], connect to server [0.0.0.0:7000] error, dial tcp 0.0.0.0:7000: connection refused
2016/04/07 09:00:48 [control.go:39] [E] ProxyName [ssh], connect to server failed!
2016/04/07 09:00:48 [main.go:104] [W] All proxy exit!

It seems it also use 0.0.0.0 as server. Please help me to tackle this problem. Thanks

多客户端privilege_mode=true好像没有效果

我在服务端启动了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么。

Can't compile code

I can't compile that, The log are as:
go get github.com/fatedier/frp
package github.com/fatedier/frp
imports github.com/fatedier/frp
imports github.com/fatedier/frp: no buildable Go source files in /home/maple/ProgramFiles/golang/src/github.com/fatedier/frp

是否能够增加流量统计

c发给s的流量, 还有发给访问者的流量(按C端区分),仅每天总量,目的是发现流量异常c端

一个细节的问题,关于auth_token的

Readme.md文档中说明了frpc 所在机器和 frps 所在机器的时间相差不能超过 15 分钟,因为时间戳会被用于加密验证中。
这里的时间差是指UTC时间,还是双方的本地时间差?

frp http能否绑定多个端口

vhost_http_port = 8080
在配置中这样就绑定了8080端口
但是在我的应用中 我希望不同的web配置绑定不同的端口

[Question] Does the tool perform NAT hole punching?

Hi,
It's unclear to me if this tool provides NAT hole punching or not? I'm running a host behind a NAT. The admin of the NAT does not want to allow my host to be visible on the internet so he's only allowing outgoing connections from my host and replies. No incoming connections are allowed. Will this tool allow me to expose a service running on my host to the internet? Thanks.

二进制程序链接更醒目些

doc里面的二进制连接也不够醒目,为了不懂go语言的盆友,只是一般网管级别技术人员,而非开发人员,只是找工具使用。
建议:
1.直接将二进制下载 链接 放到 README*.md 文件里面,并单独章节醒目些(而不是在“下载源码”章节里面顺便提一下)。
2.windows发布,建议增加服务(service 保证windows启动时 s端自动已启动)指导说明:
NSSM - the Non-Sucking Service Manager
http://www.nssm.cc/
安装服务: nssm install frps x:\xxx\frp\frps.exe
启动服务:nssm start frps
停止服务:nssm stop frps

映射远程端口到本地

可以实现远程端口到本地到本地吗?本地电脑在内网且IP不固定,没法在本地安装服务端。
谢谢提供这么好的工具。

如何配合nginx使用?

远程服务器里有web服务,使用nginx作为服务前端,frp要如何配合nginx使用?
以下配置测试了行不通。需要如何配置
nginx配置:
server {
listen 80;
server_name demo.*;
location / {
proxy_pass http://127.0.0.1:7000;
}
}
frps.ini 配置
[common]
bind_port = 7000
vhost_http_port = 8008
[web01]
type = http
custom_domains = demo.exampledomain.com

frpc.ini 配置
[common]
server_addr = 162...*
[web01]
type = http
local_ip = 127.0.0.1
local_port = 80

增加免服务端配置模式

前几天,在邮件中提过,这里再次写上来,补充些想法。
Ngrok 是免服务端配置的,指新增加一个c端配置,s端不用重改ini 且重启服务才能生效。

免服务端配置,起码适用于分享s端的盆友。
如 Ngrok 已知国内的 免费服务:
http://www.qydev.com/ 北京阿里云
http://www.ittun.com/ 深圳阿里云
http://www.natapp.cn/ 深圳阿里云(已商业化)
http://www.ngrok.cc/ 香港
http://www.gotunnel.org/ 香港

有些都是在校朋友,如,阿里云有在校生优惠计划,9.92元/月, 愿意分享的会公开给大家服务。
希望frp 借鉴 Ngrok, 增加仅c端配置模式。
另外,结合前面一个issues,或许加个流量限制参数,本来免费提供大家s端的,限制极端使用的用户超流量。

使用特权模式,开启use_encryption,frps产生错误退出

服务器端开启特权模式

# frps.ini
[common]
bind_addr = 0.0.0.0
bind_port = 7500
vhost_http_port = 801
vhost_https_port = 443
dashboard_port = 7000
log_file = ./frps.log
log_level = info
log_max_days = 3
privilege_token is correct
privilege_mode = true
privilege_token = oxcm!Jkn/jQ(S?of
privilege_allow_ports = 2000-3000,3001,3003,4000-50000
max_pool_count = 100

客户端

# frpc.ini
[privilege_web1]
privilege_mode = true
type = http
local_ip = 127.0.0.1
local_port = 30000
use_gzip = true
use_encryption = true
custom_domains = xx.xxxx.xx

之后打开xx.xxxx.xx:801,frps就会自动退出,并且报错,错误内容如下

➜  frp ./frps -c frps.ini
panic: cipher.NewCBCEncrypter: IV length must equal block size

goroutine 25 [running]:
panic(0x794c80, 0xc82016b6a0)
        /usr/lib/golang/src/runtime/panic.go:481 +0x3e6
crypto/cipher.NewCBCEncrypter(0x7f9ca8a6dcf0, 0xc8201757d0, 0xc820308760, 0x20, 0x20, 0x0, 0x0)
        /usr/lib/golang/src/crypto/cipher/cbc.go:37 +0xa8
github.com/fatedier/frp/src/utils/pcrypto.(*Pcrypto).Encrypt(0xc820341eb8, 0xc820114380, 0x170, 0x1c0, 0x0, 0x0, 0x0, 0x0, 0x0)
        /home/wcl/go_projects/src/github.com/fatedier/frp/src/utils/pcrypto/pcrypto.go:44 +0xd5
github.com/fatedier/frp/src/models/msg.pipeEncrypt(0xc82032e080, 0xc82032e240, 0xc82016b370, 0xe, 0x0, 0x0, 0xc82016b35c, 0x4, 0x10101, 0xc820174162, ...)
        /home/wcl/go_projects/src/github.com/fatedier/frp/src/models/msg/process.go:242 +0x92c
github.com/fatedier/frp/src/models/msg.JoinMore.func1(0xc82032e080, 0xc82032e240)
        /home/wcl/go_projects/src/github.com/fatedier/frp/src/models/msg/process.go:64 +0x104
created by github.com/fatedier/frp/src/models/msg.JoinMore
        /home/wcl/go_projects/src/github.com/fatedier/frp/src/models/msg/process.go:80 +0x1ca

utils\pcrypto\Encrypt 加密问题

目前是gzip/ aes / base64 顺序执行:压缩+aes加密+ASCII转码。
两个问题:

  1. 能否去掉 aes(新增配置项),以便 c端带宽有限的 节省上传带宽。
  2. 能否去除 base64, 这个是仅仅是为了分包吗?有没有更好的办法,分包而不需要重新编码,毕竟base64是http协议才更有意义,若传输的数据都是二进制数据,多次转义增加了带宽、CPU开销。
    顺带,个人认为go的优势是接近c、C++的性能,那实现某些软件细节时 也应该考虑极致的性能、高并发。望考虑

https 似乎无法正常工作

首先感谢开发者。
经测试ssh和80端口的http协议都正常工作。可是443端口的https协议似乎有问题。

客户端

# frpc.ini
[web02]
type = https
local_ip = 127.0.0.1
local_port = 443

[privilege_web]
privilege_mode = true
type = https
local_ip = 127.0.0.1
local_port = 443
use_gzip = true
custom_domains = 192.168.1.3
#web03.yourdomain.com
host_header_rewrite = 192.168.1.3
#example.com

服务端 frps.ini

vhost_http_port = 80
vhost_https_port = 443

[web02]
type = https
auth_token = 123
custom_domains = 144.172.70.47
#web02.yourdomain.com

尝试https连接似乎客户端和服务端都没有感知:
frpc.log

2016/08/22 15:05:47 [control.go:185][I] ProxyName [privilege_web], connect to server [144.172.70.47:7000] success!
2016/08/22 15:05:47 [control.go:193][I] Start to send heartbeat to frps
2016/08/22 15:05:47 [control.go:185][I] ProxyName [ssh], connect to server [144.172.70.47:7000] success!
2016/08/22 15:05:47 [control.go:193][I] Start to send heartbeat to frps
2016/08/22 15:05:47 [control.go:185][I] ProxyName [web01], connect to server [144.172.70.47:7000] success!
2016/08/22 15:05:47 [control.go:193][I] Start to send heartbeat to frps
2016/08/22 15:05:47 [control.go:185][I] ProxyName [privilege_ssh], connect to server [144.172.70.47:7000] success!
2016/08/22 15:05:47 [control.go:193][I] Start to send heartbeat to frps
2016/08/22 15:05:47 [control.go:185][I] ProxyName [web02], connect to server [144.172.70.47:7000] success!
2016/08/22 15:05:47 [control.go:193][I] Start to send heartbeat to frps

frps.log

2016/08/22 01:05:46 [main.go:182][I] Start frps success
2016/08/22 01:05:46 [main.go:184][I] PrivilegeMode is enabled, you should pay more attention to security issues
2016/08/22 01:05:52 [control.go:308][I] ProxyName [privilege_web], start proxy success
2016/08/22 01:05:52 [control.go:310][I] ProxyName [privilege_web], created by PrivilegeMode
2016/08/22 01:05:52 [control.go:308][I] ProxyName [ssh], start proxy success
2016/08/22 01:05:52 [control.go:308][I] ProxyName [web01], start proxy success
2016/08/22 01:05:52 [control.go:308][I] ProxyName [web02], start proxy success
2016/08/22 01:05:52 [control.go:308][I] ProxyName [privilege_ssh], start proxy success
2016/08/22 01:05:52 [control.go:310][I] ProxyName [privilege_ssh], created by PrivilegeMode

不知道domain那里我是不是写错了,或者问题出在我本地的路由器,有端口转发。可是http并未出问题。
谢谢

ipv6支持

请问frps可以监听ipv6的端口吗

Does't open Gzip option

I have update frpc and frps to latest version,and add "use_gzip = true" into frpc.ini,but when i look by dashboard,it show Gzip false,why? Whether i need to config frps.ini file?

我刚把 frpc 和 frps 升级到最新的版本,并且在 frpc.ini 中,加上了 “use_gzip = true” 的配置信息,但是我通过 dashboard 查看的时候,还是显示的没开启 Gzip。是不是还需要配置 frps.ini 文件,或者会是其它什么原因了?

### frpc.ini

[common]
......
server_port = 7000
log_file = /jffs/frp/frpc.log
log_level = info
log_max_days = 3

[nas]
......
pool_count = 10
use_encryption = false
use_gzip = true

请问支持多内网服务器吗

比如我有一台公网服务器,有多个内网服务器, 是否支持根据不同的域名/子域名访问不同的内网服务器?

-bash: ./frps: Permission denied

I was trying frp server on my vps (bandwagon host), login as root. After modifying frps.ini,I execute
./frps -c ./frps.ini
and it returns
-bash: ./frps: Permission denied
Am I missed sth? I would appreciate if you could give tips.
Thanks !

ssh没有正常工作

按照示例配置启动frps和frpc之后,通过 ssh 访问内网机器,连接总是超时。
[root@iZ4i1kgqxZ ~]# ssh -oPort=6000 [email protected] ssh: connect to host 192.168.31.138 port 6000: Connection timed out

启动frpc时frps报错并停止运行

报错信息如下

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x0 pc=0x80df603]

goroutine 8 [running]:
frp/models/server.(*ProxyServer).Start(0x189254a0, 0x1898c060, 0x0, 0x0)
    /root/src/github.com/fatedier/frp/src/frp/models/server/server.go:103 +0x3d3
main.doLogin(0x1898c0f0, 0x1898c060, 0x1, 0x0, 0x0, 0x0)
    /root/src/github.com/fatedier/frp/src/frp/cmd/frps/control.go:231 +0x64b
main.controlWorker(0x1898c060)
    /root/src/github.com/fatedier/frp/src/frp/cmd/frps/control.go:71 +0x471
created by main.ProcessControlConn
    /root/src/github.com/fatedier/frp/src/frp/cmd/frps/control.go:38 +0x11b

goroutine 1 [chan receive]:
frp/utils/conn.(*Listener).Accept(0x1898a460, 0x84c695c, 0x0, 0x0)
    /root/src/github.com/fatedier/frp/src/frp/utils/conn/conn.go:75 +0x4a
main.ProcessControlConn(0x1898a460)
    /root/src/github.com/fatedier/frp/src/frp/cmd/frps/control.go:33 +0x2f
main.main()
    /root/src/github.com/fatedier/frp/src/frp/cmd/frps/main.go:162 +0x1217

goroutine 5 [IO wait]:
net.runtime_pollWait(0xb7618500, 0x72, 0x1897f180)
    /usr/lib/golang/src/runtime/netpoll.go:157 +0x55
net.(*pollDesc).Wait(0x18967438, 0x72, 0x0, 0x0)
    /usr/lib/golang/src/net/fd_poll_runtime.go:73 +0x35
net.(*pollDesc).WaitRead(0x18967438, 0x0, 0x0)
    /usr/lib/golang/src/net/fd_poll_runtime.go:78 +0x33
net.(*netFD).accept(0x18967400, 0x0, 0xb7618618, 0x1897f190)
    /usr/lib/golang/src/net/fd_unix.go:408 +0x20b
net.(*TCPListener).AcceptTCP(0x18827a70, 0x189674c0, 0x0, 0x0)
    /usr/lib/golang/src/net/tcpsock_posix.go:254 +0x47
frp/utils/conn.Listen.func1(0x18827a58)
    /root/src/github.com/fatedier/frp/src/frp/utils/conn/conn.go:53 +0x34
created by frp/utils/conn.Listen
    /root/src/github.com/fatedier/frp/src/frp/utils/conn/conn.go:68 +0x2b8

goroutine 6 [IO wait]:
net.runtime_pollWait(0xb7618488, 0x72, 0x1897f0c0)
    /usr/lib/golang/src/runtime/netpoll.go:157 +0x55
net.(*pollDesc).Wait(0x189675b8, 0x72, 0x0, 0x0)
    /usr/lib/golang/src/net/fd_poll_runtime.go:73 +0x35
net.(*pollDesc).WaitRead(0x189675b8, 0x0, 0x0)
    /usr/lib/golang/src/net/fd_poll_runtime.go:78 +0x33
net.(*netFD).accept(0x18967580, 0x0, 0xb7618618, 0x1897f0d0)
    /usr/lib/golang/src/net/fd_unix.go:408 +0x20b
net.(*TCPListener).AcceptTCP(0x18827ac8, 0x8093300, 0x0, 0x0)
    /usr/lib/golang/src/net/tcpsock_posix.go:254 +0x47
net/http.tcpKeepAliveListener.Accept(0x18827ac8, 0x0, 0x0, 0x0, 0x0)
    /usr/lib/golang/src/net/http/server.go:2135 +0x3d
net/http.(*Server).Serve(0x18967540, 0xb76185f8, 0x18827ac8, 0x0, 0x0)
    /usr/lib/golang/src/net/http/server.go:1887 +0x98
net/http.(*Server).ListenAndServe(0x18967540, 0x0, 0x0)
    /usr/lib/golang/src/net/http/server.go:1877 +0xe4
net/http.ListenAndServe(0x1897f060, 0xc, 0xb76185c0, 0x18900f50, 0x0, 0x0)
    /usr/lib/golang/src/net/http/server.go:1967 +0x7a
github.com/gin-gonic/gin.(*Engine).Run(0x18900f50, 0x18827a98, 0x1, 0x1, 0x0, 0x0)
    /root/src/github.com/fatedier/frp/Godeps/_workspace/src/github.com/gin-gonic/gin/gin.go:226 +0x15d
created by frp/models/server.RunDashboardServer
    /root/src/github.com/fatedier/frp/src/frp/models/server/dashboard.go:33 +0x28f

goroutine 7 [IO wait]:
net.runtime_pollWait(0xb7618410, 0x72, 0x1880e080)
    /usr/lib/golang/src/runtime/netpoll.go:157 +0x55
net.(*pollDesc).Wait(0x189676b8, 0x72, 0x0, 0x0)
    /usr/lib/golang/src/net/fd_poll_runtime.go:73 +0x35
net.(*pollDesc).WaitRead(0x189676b8, 0x0, 0x0)
    /usr/lib/golang/src/net/fd_poll_runtime.go:78 +0x33
net.(*netFD).Read(0x18967680, 0x1898e000, 0x1000, 0x1000, 0x0, 0xb7613030, 0x1880e080)
    /usr/lib/golang/src/net/fd_unix.go:232 +0x19a
net.(*conn).Read(0x18827ad0, 0x1898e000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
    /usr/lib/golang/src/net/net.go:172 +0xb9
bufio.(*Reader).fill(0x1898c030)
    /usr/lib/golang/src/bufio/bufio.go:97 +0x172
bufio.(*Reader).ReadSlice(0x1898c030, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0)
    /usr/lib/golang/src/bufio/bufio.go:328 +0x1b4
bufio.(*Reader).ReadBytes(0x1898c030, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0)
    /usr/lib/golang/src/bufio/bufio.go:406 +0x8c
bufio.(*Reader).ReadString(0x1898c030, 0x18824f0a, 0x0, 0x0, 0x0, 0x0)
    /usr/lib/golang/src/bufio/bufio.go:446 +0x46
frp/utils/conn.(*Conn).ReadLine(0x1898c000, 0x0, 0x0, 0x0, 0x0)
    /root/src/github.com/fatedier/frp/src/frp/utils/conn/conn.go:132 +0x45
main.controlWorker(0x1898c000)
    /root/src/github.com/fatedier/frp/src/frp/cmd/frps/control.go:57 +0x75
created by main.ProcessControlConn
    /root/src/github.com/fatedier/frp/src/frp/cmd/frps/control.go:38 +0x11b
zonek@ubuntu-512mb-sfo1-01:~/bin/frp$ ls^C
zonek@ubuntu-512mb-sfo1-01:~/bin/frp$ sudo ./frps_linux_386 -c frps.ini 
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x0 pc=0x80df603]

goroutine 7 [running]:
frp/models/server.(*ProxyServer).Start(0x189234a0, 0x18815fb0, 0x0, 0x0)
    /root/src/github.com/fatedier/frp/src/frp/models/server/server.go:103 +0x3d3
main.doLogin(0x1898c0c0, 0x18815fb0, 0x1, 0x0, 0x0, 0x0)
    /root/src/github.com/fatedier/frp/src/frp/cmd/frps/control.go:231 +0x64b
main.controlWorker(0x18815fb0)
    /root/src/github.com/fatedier/frp/src/frp/cmd/frps/control.go:71 +0x471
created by main.ProcessControlConn
    /root/src/github.com/fatedier/frp/src/frp/cmd/frps/control.go:38 +0x11b

goroutine 1 [chan receive]:
frp/utils/conn.(*Listener).Accept(0x1898a380, 0x84c695c, 0x0, 0x0)
    /root/src/github.com/fatedier/frp/src/frp/utils/conn/conn.go:75 +0x4a
main.ProcessControlConn(0x1898a380)
    /root/src/github.com/fatedier/frp/src/frp/cmd/frps/control.go:33 +0x2f
main.main()
    /root/src/github.com/fatedier/frp/src/frp/cmd/frps/main.go:162 +0x1217

goroutine 5 [IO wait]:
net.runtime_pollWait(0xb75ce508, 0x72, 0x1897f1b0)
    /usr/lib/golang/src/runtime/netpoll.go:157 +0x55
net.(*pollDesc).Wait(0x189673f8, 0x72, 0x0, 0x0)
    /usr/lib/golang/src/net/fd_poll_runtime.go:73 +0x35
net.(*pollDesc).WaitRead(0x189673f8, 0x0, 0x0)
    /usr/lib/golang/src/net/fd_poll_runtime.go:78 +0x33
net.(*netFD).accept(0x189673c0, 0x0, 0xb75ce620, 0x1897f1c0)
    /usr/lib/golang/src/net/fd_unix.go:408 +0x20b
net.(*TCPListener).AcceptTCP(0x18823a70, 0x18967480, 0x0, 0x0)
    /usr/lib/golang/src/net/tcpsock_posix.go:254 +0x47
frp/utils/conn.Listen.func1(0x18823a58)
    /root/src/github.com/fatedier/frp/src/frp/utils/conn/conn.go:53 +0x34
created by frp/utils/conn.Listen
    /root/src/github.com/fatedier/frp/src/frp/utils/conn/conn.go:68 +0x2b8

goroutine 6 [IO wait]:
net.runtime_pollWait(0xb75ce490, 0x72, 0x1897f0f0)
    /usr/lib/golang/src/runtime/netpoll.go:157 +0x55
net.(*pollDesc).Wait(0x18967578, 0x72, 0x0, 0x0)
    /usr/lib/golang/src/net/fd_poll_runtime.go:73 +0x35
net.(*pollDesc).WaitRead(0x18967578, 0x0, 0x0)
    /usr/lib/golang/src/net/fd_poll_runtime.go:78 +0x33
net.(*netFD).accept(0x18967540, 0x0, 0xb75ce620, 0x1897f100)
    /usr/lib/golang/src/net/fd_unix.go:408 +0x20b
net.(*TCPListener).AcceptTCP(0x18823ac8, 0x8093300, 0x0, 0x0)
    /usr/lib/golang/src/net/tcpsock_posix.go:254 +0x47
net/http.tcpKeepAliveListener.Accept(0x18823ac8, 0x0, 0x0, 0x0, 0x0)
    /usr/lib/golang/src/net/http/server.go:2135 +0x3d
net/http.(*Server).Serve(0x18967500, 0xb75ce600, 0x18823ac8, 0x0, 0x0)
    /usr/lib/golang/src/net/http/server.go:1887 +0x98
net/http.(*Server).ListenAndServe(0x18967500, 0x0, 0x0)
    /usr/lib/golang/src/net/http/server.go:1877 +0xe4
net/http.ListenAndServe(0x1897f090, 0xc, 0xb75ce5c8, 0x188fee70, 0x0, 0x0)
    /usr/lib/golang/src/net/http/server.go:1967 +0x7a
github.com/gin-gonic/gin.(*Engine).Run(0x188fee70, 0x18823a98, 0x1, 0x1, 0x0, 0x0)
    /root/src/github.com/fatedier/frp/Godeps/_workspace/src/github.com/gin-gonic/gin/gin.go:226 +0x15d
created by frp/models/server.RunDashboardServer
    /root/src/github.com/fatedier/frp/src/frp/models/server/dashboard.go:33 +0x28f

goroutine 8 [IO wait]:
net.runtime_pollWait(0xb75ce3a0, 0x72, 0x1880e0b0)
    /usr/lib/golang/src/runtime/netpoll.go:157 +0x55
net.(*pollDesc).Wait(0x18967738, 0x72, 0x0, 0x0)
    /usr/lib/golang/src/net/fd_poll_runtime.go:73 +0x35
net.(*pollDesc).WaitRead(0x18967738, 0x0, 0x0)
    /usr/lib/golang/src/net/fd_poll_runtime.go:78 +0x33
net.(*netFD).Read(0x18967700, 0x1898f000, 0x1000, 0x1000, 0x0, 0xb75c9030, 0x1880e0b0)
    /usr/lib/golang/src/net/fd_unix.go:232 +0x19a
net.(*conn).Read(0x18823ae0, 0x1898f000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
    /usr/lib/golang/src/net/net.go:172 +0xb9
bufio.(*Reader).fill(0x1898c060)
    /usr/lib/golang/src/bufio/bufio.go:97 +0x172
bufio.(*Reader).ReadSlice(0x1898c060, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0)
    /usr/lib/golang/src/bufio/bufio.go:328 +0x1b4
bufio.(*Reader).ReadBytes(0x1898c060, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0)
    /usr/lib/golang/src/bufio/bufio.go:406 +0x8c
bufio.(*Reader).ReadString(0x1898c060, 0x1882170a, 0x0, 0x0, 0x0, 0x0)
    /usr/lib/golang/src/bufio/bufio.go:446 +0x46
frp/utils/conn.(*Conn).ReadLine(0x1898c030, 0x0, 0x0, 0x0, 0x0)
    /root/src/github.com/fatedier/frp/src/frp/utils/conn/conn.go:132 +0x45
main.controlWorker(0x1898c030)
    /root/src/github.com/fatedier/frp/src/frp/cmd/frps/control.go:57 +0x75
created by main.ProcessControlConn
    /root/src/github.com/fatedier/frp/src/frp/cmd/frps/control.go:38 +0x11b

重大BUG,严重的性能问题,内存泄露

用了一段时间,并通过验证,确认 FRP 有严重的性能问题,和 ngrok 一样,用一段时间后,服务器的性能会严重下降,最终导致 服务 crash 掉。我的服务器上就装了 nginx,gogs(go语言编写的一个git服务端),然后如果开了 frp ,不到三天就会服务器反应缓慢,frp 直接 crash 掉。我担心是 gogs 影响的,然后就单独开了 gogs ,结果跑了好几天,一致很稳定,所以确认是 frp 的代码问题,希望作者尽快解决看看,还是很喜欢 frp 的,但是如果这个问题不解决,就不敢用了。

阿里云测试

在阿里云服务器 配置服务端,本地能 telnet 7000 端口,然后在家再telnet 7000 端口 不通。

无法开机启动

添加到开机自启后 日志显示connection refused,但是直接执行却是正常的。

访问内网web不通过域名

你好,首先感谢提供这样的工具。
我之前是通过ssh隧道来把我内网的web应用映射出去,现在换成你这个工具,但是我没有域名,只想通过ip,即没有配置custom_domains,可以实现吗?或者是现在已经支持了,如何配置?

frps --reload 选项没有作用

我从github上的release上下载frp_0.8.0_linux_amd64.tar.gz,发现--reload没有效果,具体是我输入命令之后会出现Usage的提示,具体如下

root@root# ./frps -c ./frps.ini --reload
Usage: 
    frps [-c config_file] [-L log_file] [--log-level=<log_level>] [--addr=<bind_addr>]
    frps --reload
    frps -h | --help
    frps -v | --version

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.