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服务端:

frps.pngfrps.png

启动frpc客户端:

frpc.pngfrpc.png

如上启动成功后,我们使用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 为访问代理服务的秘钥,只有秘钥一致时,才允许访问代理服务。

如下图示:

frp-stcp.pngfrp-stcp.png

最终,访问者可以通过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日志变化。

none
最后修改于:2024年04月26日 13:13

添加新评论