frp简介
frp是一个专注于内网穿透的高性能的反向代理应用,支持TCP、UDP、HTTP、HTTPS等多种协议。可以将内网服务以安全、便捷的方式通过具有公网IP节点的中转暴露到公网。通过在具有公网IP的节点上部署frp服务端,可以轻松地将内网服务穿透到公网。
在实际应用中,内网穿透确实能带来极大的便利。可以用来远程连接其它电脑;本地未上线项目无需部署到公网服务器,就可以给客户演示链接,或者进行一些接口调试等。
下载frp
frp采用Golang编写,支持跨平台,仅需下载对应平台的二进制文件即可执行,没有额外依赖。
可以在Github的 Release 页面中下载到最新版本的客户端和服务端二进制文件,所有文件被打包在一个压缩包中。Windows版解压后主要包括以下文件:
frpc.exe # 客户端运行文件
frpc.ini # 客户端配置文件
frpc_full.ini # 客户端配置文件完整示例
frps.exe # 服务端运行文件
frps.ini # 服务端配置文件
frps_full.ini # 服务端配置文件完整示例
环境说明
- 一台拥有公网IP的服务器,如果需要使用域名访问,需要将域名解析到公网IP。
- 本次使用Windows服务器和Windows客户端演示,frp版本为0.36。
安装frp
frp主要由服务端(frps)和客户端(frpc)组成,服务端通常部署在具有公网IP的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。
将解压文件中的frps.exe和frps.ini复制到服务器的任意目录,将frpc.exe和frpc.ini放在客户端的任意目录。
配置服务端frps
配置示例
[common]
bind_addr = 0.0.0.0 # 绑定的IP地址
bind_port = 7000 # 服务端口
vhost_http_port = 80 # 是否启用虚拟主机,端口可以和bind_port相同
vhost_https_port = 443
dashboard_port = 7500 # frps仪表盘绑定的端口
dashboard_user = admin # 仪表盘登录账号
dashboard_pwd = admin123 # 仪表盘登录密码
log_file = ./frps.log # 指定日志文件
log_level = warn # 日志等级,可用“trace, debug, info, warn, error”
log_max_days = 3 # 日志最大保存时间
token = 123456789 # 客户端与服务端通信的身份验证令牌
max_pool_count = 10 # 每个客户端连接服务端的最大连接数
max_ports_per_client = 5 # 每个客户端最大可以使用的端口,0表示无限制
subdomain_host = yuncongz.com # 自定义域名,需要设置泛解析
启动frps
在当前文件夹下打开cmd,输入以下命名即可启动服务。
frps.exe -c frps.ini
建议新建一个bat脚本,如start.bat,输入上面的命令,保存文件后台双击即可启动。
将frps注册为系统服务
可以使用NSSM程序把frps封装成系统服务,然后就可以方便的管理服务了,NSSM教程。
配置客户端frpc
配置示例
[common]
server_addr = xx.xx.xx.xx # 服务端的公网IP地址
server_port = 7000 # 服务端的端口
log_file = ./frpc.log # 指定日志文件
log_level = info # 日志等级
log_max_days = 3 # 日志最大保存时间
token = 123456789 # 客户端与服务端通信的身份验证令牌
admin_port = 7500 # 设置管理地址的端口
admin_user = admin # 登录账号
admin_pwd = admin123 # 登录密码
# web示例
[web]
type = http # 使用http协议
local_ip = 127.0.0.1
local_port = 5000 # 监听本地端口
use_encryption = false # 启用加密
use_compression = true # 启用压缩
subdomain = test # 绑定的二级域名
# 远程桌面连接
[remote]
type = tcp
local_ip = 127.0.0.1
local_port = 3389 # 远程桌面默认端口3389
remote_port = 7002 # 服务端监听端口
启动frpc
在当前文件夹下打开cmd,输入以下命名即可启动服务。
frpc.exe -c frpc.ini
同样建议建一个bat脚本来启动,有需要也可以注册为系统服务。
测试结果
服务端仪表盘
客户端管理界面
在这可以查看目前添加的服务状态,并且可以修改配置文件。
WEB转发测试
转发的本地5000端口,对应的是最近在写的一个接口,数据获取正常。
远程桌面连接
可以通过远程桌面工具连接到本电脑,还可用使用微软官方的Microsoft Remote Desktop手机APP来访问控制电脑桌面。
其它
以上只是frp的简单使用,frp还支持转HTTPS、点对点内网穿透等,功能挺多,配置项也非常多,具体可参考frp中文文档。