高性能的内网穿透工具 frp

这是我参与更文挑战的第7天,活动详情查看:更文挑战

本文将分享一个很好用的内网穿透工具 frp,以及一些具体的使用场景。

什么是 frp

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

为什么使用 frp

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

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

安装

可以在 Github 的 Release 页面中进行下载:

curl -LO https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_linux_amd64.tar.gz
tar zxf frp_0.37.0_linux_amd64.tar.gz
复制代码

压缩包里包含了客户端和服务端的两个可执行文件,以及对应的配置文件:

> tree -L 1 frp_0.37.0_linux_amd64
frp_0.37.0_linux_amd64
├── frpc # 客户端程序
├── frpc_full.ini # 对应客户端程序的详细配置文件
├── frpc.ini # 对应客户端程序的简单配置文件
├── frps # 服务端程序
├── frps_full.ini # 对应服务端程序的详细配置文件
├── frps.ini # 对应服务端程序的简单配置文件
├── LICENSE
└── systemd
    ├── frpc.service # 客户端的 systemd 服务配置文件
    ├── frpc@.service # 客户端的 systemd 模板文件
    ├── frps.service  # 服务端的 systemd 服务配置文件
    └── frps@.service # 服务端的 systemd 模板文件
复制代码

使用

首先,这个工具需要一个公网服务器配置使用,配置文件可以参考详细的配置文件进行编写,后面会讲到自己常用的几个场景下的配置。

先启动服务端:

./frps -c ./frps.ini
复制代码

再启动客户端:

./frpc -c ./frpc.ini
复制代码

Tip:如果需要在后台长期运行,可以结合 systemd 或者 supervisor 进行使用。

使用场景

SSH 连接内网服务器

服务端配置:

[common]
bind_port = 7000
复制代码

客户端配置:

[common]
server_addr = x.x.x.x ; 公网服务器的 IP
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
复制代码

暴露内网 HTTP 服务

静态文件下载服务

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享