使用frp实现内网穿透服务

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    # 服务端配置文件完整示例

环境说明

  1. 一台拥有公网IP的服务器,如果需要使用域名访问,需要将域名解析到公网IP。
  2. 本次使用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端口,对应的是最近在写的一个接口,数据获取正常。

WEB接口测试

远程桌面连接

可以通过远程桌面工具连接到本电脑,还可用使用微软官方的Microsoft Remote Desktop手机APP来访问控制电脑桌面。

远程桌面连接

其它

以上只是frp的简单使用,frp还支持转HTTPS、点对点内网穿透等,功能挺多,配置项也非常多,具体可参考frp中文文档

暂无评论

发送评论 编辑评论


				
上一篇
下一篇