内网穿透的高性能的反向代理应用frp的使用
概览
frp 是什么?
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
为什么使用 frp?
通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
- 客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。
- 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。
- 代理组间的负载均衡。
- 端口复用,多个服务通过同一个服务端端口暴露。
- 多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
- 高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。
- 服务端和客户端 UI 页面。
安装
关于如何安装 frp 的说明。
frp 采用 Golang 编写,支持跨平台,仅需下载对应平台的二进制文件即可执行,没有额外依赖。
系统需求
由于采用 Golang 编写,所以系统需求和最新的 Golang 对系统和平台的要求一致,具体可以参考 Golang System requirements。
下载
目前可以在 Github 的 Release 页面中下载到最新版本的客户端和服务端二进制文件,所有文件被打包在一个压缩包中。
部署
解压缩下载的压缩包,将其中的 frpc 拷贝到内网服务所在的机器上,将 frps 拷贝到具有公网 IP 的机器上,放置在任意目录。
快速使用(临时测试使用)
编写配置文件,先通过 ./frps -c ./frps.ini 启动服务端,再通过 ./frpc -c ./frpc.ini 启动客户端。如果需要在后台长期运行,建议结合其他工具使用,例如 systemd 和 supervisor。
Linux部署
- 快速使用(临时测试使用)
编写配置文件,先通过 ./frps -c ./frps.ini 启动服务端需要有公网IP,再通过 ./frpc -c ./frpc.ini 启动客户端。如果需要在后台长期运行,建议结合其他工具使用,例如 systemd 和 supervisor。
- 使用 systemd 部署
这个示例将会演示在 Linux 系统下使用 systemd 控制 frps 及配置开机自启。
在 Linux 系统下,使用systemd 可以方便地控制 frp 服务端 frps 的启动和停止、配置后台运行和开启自启。
要使用 systemd 来控制 frps,需要先安装 systemd,然后在 /etc/systemd/system 目录下创建一个 frps.service 文件。
如Linux服务端上没有安装 systemd,可以使用 yum 或 apt 等命令安装 systemd。
1
2
3
4# yum
yum install systemd
# apt
apt install systemdUbuntu 20 执行如下图
使用文本编辑器,如 vim 创建并编辑 frps.service 文件。
1
$ vim /etc/systemd/system/frps.service
写入内容
本文frp下载后存放位置如下图
1
2
3
4
5
6
7
8
9
10
11
12
13[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /root/frp_0.48.0_linux_386/frps -c /root/frp_0.48.0_linux_386/frps.ini
[Install]
WantedBy = multi-user.targetfrps.ini 配置文件参照说明
效果如下图
让后保存,按ESC键,再输入小写的wq后,回车即可保存,如下图
使用 systemd 命令,管理 frps。
1
2
3
4
5
6
7
8# 启动frp
systemctl start frps
# 停止frp
systemctl stop frps
# 重启frp
systemctl restart frps
# 查看frp状态
systemctl status frps执行启动命令如下图
配置 frps 开机自启。
1
systemctl enable frps
执行命令如下图
启动客户端(示例为Windows,Linux类似)
解压后的位置如下图(注意杀毒软件会误报,信任即可)
frpc.ini 配置文件参照说明
在命令行执行如下命令(注意切换目录到解压后的位置)
1
frpc.exe -c frpc.ini