frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。
1.frp源码地址:https://github.com/fatedier/frp
2.frp中文文档:https://github.com/fatedier/frp/blob/master/README_zh.md
一、服务器安装
1.go语言环境安装
登陆网址https://golang.org下载源码
wgethttps://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz
a.解压缩文件:
tar -C /usr/local -xzf /go1.8.3.linux-amd64.tar.
b.在文件~/.profile添加环境变量
export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOBIN
export GOPATH=$HOME/gopath (可选设置)
更新环境变量:source /etc/profile
c.检查go是否安装完成 :go version 有显示版本就是安装完成
2.下载frp源码
git clone https://github.com/fatedier/frp.git $GOPATH/src/github.com/fatedier/frp
a.进入源码根目录,执行make命令开始编译
如果系统报错如下:
则执行sudo apt-get install make make-guile -y 安装make make-guile
编译完成后,bin目录下是编译好的可执行文件,conf目录下是示例配置文件。
1.将 ./bin/frps 和 ./conf/frps.ini 拷贝至服务器任意目录。
2.将 ./bin/frpc 和 ./conf/frpc.ini 拷贝至客户端任意目录。
3.根据要实现的功能修改两边的配置文件。
4.在服务器B执行nohup ./frps &或者nohup ./frps -c ./frps.ini &。
5.在服务器A执行nohup ./frpc &或者nohup ./frpc -c ./frpc.ini &。
6.通过ssh -oPort=6000 {user}@x.x.x.x测试是否能够成功连接服务器A({user}替换为服务器A上存在的真实用户),或通过浏览器访问自定义域名验证 http 服务是否转发成功。
以下转自官网配置
tcp 端口转发
转发 tcp 端口需要按照需求修改 frps 和 frpc 的配置文件。
[common]bind_addr= 0.0.0.0#用于接收 frpc 连接的端口bind_port= 7000log_file= ./frps.loglog_level= info#ssh 为代理的自定义名称,可以有多个,不能重复,和frpc中名称对应[ssh]auth_token= 123bind_addr= 0.0.0.0#最后将通过此端口访问后端服务listen_port= 6000
[common]#frps 所在服务器绑定的IP地址server_addr= x.x.x.xserver_port= 7000log_file= ./frpc.loglog_level= info#用于身份验证auth_token= 123#ssh 需要和 frps.ini 中配置一致[ssh]#需要转发的本地端口local_port= 22#启用加密,frpc与frps之间通信加密,默认为 falseuse_encryption= true
如果只需要一对一的转发,例如服务器B的80端口转发服务器A的8000端口,则只需要配置tcp 端口转发即可,如果需要使服务器B的80端口可以转发至多个web服务端口,则需要指定代理的类型为 http,并且在 frps 的配置文件中配置用于提供 http 转发服务的端口。
按照如下的内容修改配置文件后,需要将自定义域名的A 记录解析到 [server_addr],如果 [server_addr] 是域名也可以将自定义域名的CNAME 记录解析到 [server_addr]。
之后就可以通过自定义域名访问到本地的多个 web 服务。
[common]bind_addr= 0.0.0.0bind_port= 7000#如果需要支持http类型的代理则需要指定一个端口vhost_http_port= 80log_file= ./frps.loglog_level= info[web01]#type 默认为 tcp,这里需要特别指定为 httptype= httpauth_token= 123#自定义域名绑定,如果需要同时绑定多个以英文逗号分隔custom_domains= web01.yourdomain.com[web02]type= httpauth_token= 123custom_domains= web02.yourdomain.com
[common]server_addr= x.x.x.xserver_port= 7000log_file= ./frpc.loglog_level= infoauth_token= 123#自定义域名在 frps.ini 中配置,方便做统一管理[web01]type= httplocal_ip= 127.0.0.1local_port= 8000#可选是否加密use_encryption= true[web02]type= httplocal_ip= 127.0.0.1local_port= 8001
网友评论