frp是什么
frp 是一款开源的高性能的反向代理应用,专注于内网穿透,它采用 C/S 模式,将服务端部署在具有公网 IP 的机器上,客户端部署在内网或防火墙内的机器上,通过访问暴露在服务器上的端口,反向代理到处于内网的服务。
在此基础上,frp 支持 TCP、UDP、HTTP、HTTPS 等多种协议,提供了加密、压缩,身份认证,代理限速,负载均衡等众多能力。
详细信息可以参考官网:https://gofrp.org/zh-cn/
github地址:https://github.com/fatedier/frp
ftp部署配置
上面提到ftp是采用 C/S 模式,所以这里需要分别部署服务端和客户端使用,ftp的服务端叫做ftps,客户端叫做frpc,这里使用的是目前的最新版本,老版本的配置文件可能是ini结尾的,新版都是toml
fprs部署
frps是frp的服务端,通常是部署在具有公网IP的服务器上,作为端口转发的中转站,这里介绍三种部署方式:docker部署、安装包部署、软路由插件
docker部署
有docker环境的情况下个人比较喜欢docker部署比较简单,一行命令部署完成
docker run --restart=always --network host -d \
-v /etc/frp/frps.toml:/etc/frp/frps.toml \
--name frps snowdreamtech/frps
其中把服务端配置文件/etc/frp/frps.toml
映射到宿主机,方便后续修改
安装包部署
安装包的话可以去github上下载(https://github.com/fatedier/frp/releases),根据你的环境不同下载不同的安装包,比如x86架构的linux安装包frp_0.61.1_linux_amd64.tar.gz
下载后放到服务器上的/opt
文件夹下解压,里面有4个文件分别是服务端和客户端的配置文件及命令,要启动服务端直接运行./frps -c ./frps.toml
即可
软路由插件
如果你在用软路由一般会有软路由插件就叫frps
配置文件
这里给一个实例的配置文件
# 服务端绑定的地址及端口
bindAddr = "0.0.0.0"
bindPort = 7000
# web控制台的地址和端口
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "root"
webServer.password = "xxxxxxx"
enablePrometheus = true# console or real logFile path like ./frps.log,日志相关
log.to = "./frps.log"
# trace, debug, info, warn, error
log.level = "info"
log.maxDays = 3
# disable log colors when log.to is console, default is false
log.disablePrintColor = false
# auth token,最好配置一个用于客户端连接时鉴权
auth.token = "xxxxxxxxxxxxxxxxxxxxxx"# 允许代理绑定的服务端端口. 不填不限制.
allowPorts = [{ start = 2000, end = 3000 },{ single = 3001 },{ single = 3003 },{ start = 4000, end = 50000 }
]
还有很多其他的配置参数,具体请参考官方文档服务端配置说明
frpc部署
frpc是frp的客户端,通常是部署在内网的机器上,暴露端口给服务端,让其帮忙转发暴露的端口,这里介绍三种部署方式:docker部署、安装包部署、软路由插件
docker部署
docker run --restart=always --network host -d \
-v /etc/frp/frpc.toml:/etc/frp/frpc.toml \
--name frpc snowdreamtech/frpc
安装包部署
跟上面的服务端安装包在一起,根据你的环境不同下载不同的安装包,比如x86架构的linux安装包frp_0.61.1_linux_amd64.tar.gz
解压后直接运行./frpc -c ./frpc.toml
即可
软路由插件
插件名称叫Frp 内网穿透
配置文件
这里给一个实例的配置文件
# 服务端的地址及端口
serverAddr = "xxxxxxx"
serverPort = 7000# STUN server to help penetrate NAT hole.
# natHoleStunServer = "stun.easyvoip.com:3478"# console or real logFile path like ./frpc.log,日志相关
log.to = "./frpc.log"
# trace, debug, info, warn, error
log.level = "info"
log.maxDays = 3
# disable log colors when log.to is console, default is false
log.disablePrintColor = false# auth token,填客户端
auth.token = "xxxxxxxxxxxxx"# 客户端的web管理页面配置
webServer.addr = "0.0.0.0"
webServer.port = 7400
webServer.user = "root"
webServer.password = "xxxxxxx"# 以下的proxies配置每个代表一个本地端口的映射
[[proxies]]
# 名字必填
name = "ssh"
# 代理类型,可选值为 tcp, udp, http, https, tcpmux, stcp, sudp, xtcp
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
# frps服务端监听的远程端口
remotePort = 2288
还有很多其他的配置参数,具体请参考官方文档客户端配置说明