frp 是什么

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

为什么使用 frp ?

通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:

  • 客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。
  • 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。
  • 代理组间的负载均衡。
  • 端口复用,多个服务通过同一个服务端端口暴露。
  • 多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
  • 高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。
  • 服务端和客户端 UI 页面。

部署步骤

从 frp 的架构可以看出 frp 的工作流程,在服务端部署 frps,在要访问的机器上部署 frpc,实现服务端对该机器的反向代理。通过访问服务端来实现对该机器的远程访问。
architecture.png

部署环境

在 github frp的 releases 下载最新的代码

releases 地址:

1
https://github.com/fatedier/frp/releases

服务端

修改服务端的部署文件 frps.ini

1
2
3
4
5
6
7
[common]
bind_addr = 0.0.0.0
bind_port = 7000

dashboard_user = xxxxx #监控的用户名
dashboard_pwd = xxxxxx #监控的密码
dashboard_port = 7500

将 frps.ini 及 frps.exe 上传到公网机器上,以管理员的身份 cmd 到其目录下,运行如下的命令

1
frps -c frps.ini

ps:记得开发服务器的 7000 和 7500 端口!

客户端

修改客户端的部署文件 frpc.ini

1
2
3
4
5
6
7
8
9
[common]
server_addr = xx.xx.xx.xx #你的公网机器的ip地址
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 6000

将 frpc.ini 及 frpc.exe 放到本地机器上,以管理员的身份 cmd 到其目录下,运行如下的命令

1
frpc -c frpc.ini

ps:服务器端对应的端口也要打开,然后这个 cmd 窗口不能关,不然服务就终止了,这个是下面开机自启动要解决的问题。为了支持远程访问,windows 下的允许远程访问要打开。

下载

下载服务端下载客户端

开机自启动

使用 WinSW 让任何 Windows 程序都能运行为服务