frp内网穿透搭建及使用
frp简介
frp(Fast Reverse Proxy) 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。
frp 采用 C/S 模式,将服务端部署在具有公网 IP 的机器上,客户端部署在内网或防火墙内的机器上,通过访问暴露在服务器上的端口,反向代理到处于内网的服务。 在此基础上,frp 支持 TCP, UDP, HTTP, HTTPS 等多种协议,提供了加密、压缩,身份认证,代理限速,负载均衡等众多能力。此外,还可以通过 xtcp 实现 P2P 通信。
frp官网:
https://gofrp.org/zh-cn/
frp 搭建及使用
本文以win版本:frp_0.57.0_windows_amd64.zip为例说明。
1.本机验证frp反向代理
目录结构:
|-- frps.exe 服务端启动命令
|-- frps.toml 服务端配置
|-- frpc.exe 客户端启动命令
|-- frpc.toml 客户端配置
frps.toml服务端配置:
bindPort = 7000
frps服务端以7000端口启动。
frpc.toml客户端配置:
serverAddr = "127.0.0.1"
serverPort = 7000
[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3306
remotePort = 6000
serverAddr和serverPort 指定服务端配置的IP和端口;proxies部分指定代理名称、代理类型、代理端口以及对应的本地服务的IP和端口。以上我们以mysql-3306为例,通过代理后,以6000端口连接本地MySQL数据库。
进入目录,分别在cmd中启动frps服务端:
启动frpc客户端:
如上启动成功后,我们使用MySQL连接工具通过6000端口连接MySQL,可以发现成功连接。说明frp反向代理配置成功。
接下来,我们以阿里云服务器为例,来说明如何使用frp内网穿透,来访问我们win内网中的mysql数据库。
2.使用阿里云服务器配置frp内网穿透
mysql内网机器客户端配置:
serverAddr = "39.xx.xx.xx"
serverPort = 7000
[[proxies]]
name = "secret-stcp"
type = "stcp"
secretKey = "abcdefg123"
localIP = "127.0.0.1"
localPort = 3306
代理服务连接到阿里云7000端口的frp服务。
注意:
阿里云服务器需配置安全组规则:限制7000端口,只能是内网服务所在外网IP段可以访问。
阿里云frps.toml服务端配置:
bindPort = 7000
阿里云frpc.toml访问者客户端配置:
serverAddr = "127.0.0.1"
serverPort = 7000
[[visitors]]
name = "stcp_visitor"
type = "stcp"
serverName = "secret-stcp"
secretKey = "abcdefg123"
bindAddr = "127.0.0.1"
bindPort = 6000
访问者连接至阿里云frp服务,并通过本地6000端口来访问代理服务secret-stcp,代理服务指向内网机器的mysql。secretKey 为访问代理服务的秘钥,只有秘钥一致时,才允许访问代理服务。
如下图示:
最终,访问者可以通过mysql客户端6000代理端口成功访问frp客户端服务。使用内网穿透最重要的是保证穿透服务的安全性,所以我们可以通过secretKey+阿里云安全组端口限制多方面来保证内网穿透的安全性。
3.frpc注册Windows服务实现开机自启动
在这里我们使用winsw方式来注册服务。当然也可以使用nssm,或者编写bat、vbs脚本放在自启动目录,具体选择哪种方式可根据自己喜好选择不同方式注册服务。
winsw下载地址:
https://github.com/winsw/winsw/releases
frpc对应winsw.xml配置:
<service>
<id>frpc</id>
<name>frpc</name>
<description>This service runs the frpc service.</description>
<logpath>%BASE%\logs</logpath>
<log mode="rotate"></log>
<executable>frpc.exe</executable>
<startarguments>-c frpc.toml</startarguments>
<depend></depend>
</service>
winsw注册服务命令:
winsw.exe install winsw.xml
注册服务日志如下:
F:\Downloads\frp_0.57.0_windows_amd64>winsw.exe install winsw.xml
2024-04-26 12:29:43,396 INFO - Installing service 'frpc (frpc)'...
2024-04-26 12:29:43,438 INFO - Service 'frpc (frpc)' was installed successfully.
F:\Downloads\frp_0.57.0_windows_amd64>
注册完毕后,可在服务中启动/关闭frpc服务,观察frps服务端client login和client exit日志变化。