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

frp 能做什么?

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

  • 客户端服务端通信支持 TCP、QUIC、KCP 以及 Websocket 等多种协议。

  • 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间,降低请求延迟。

  • 代理组间的负载均衡。

  • 端口复用,多个服务通过同一个服务端端口暴露。

  • 支持 P2P 通信,流量不经过服务器中转,充分利用带宽资源。

  • 多个原生支持的客户端插件(静态文件查看,HTTPS/HTTP 协议转换,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。

  • 高度扩展性的服务端插件系统,易于结合自身需求进行功能扩展。

  • 服务端和客户端 UI 页面。

github 上的 frp 项目老巢


1. 准备工作

在云服务器(比如阿里云ECS)的管理控制台,安装宝塔面板扩展,也可以到[宝塔官网下载页面]根据提示安装。

​Tips​: 因为云服务器有安全组防火墙,所以可以关闭宝塔面板防火墙。

2. 开始部署

2.1 部署服务器端 frps

打开服务器端宝塔面板,侧栏>docker>应用商店,搜索 frp,会显示一个服务端,一个客户端。

安装 FRP 服务端,即 frps

用户、密码自设,其他默认。

等一会儿即安装成功并运行。

这里要点击“运行中”右侧的 文件夹小图标,打开frps>data目录中的frps.toml,复制里面的auth.token一行,后面配置 frpc 时要用到。

打开云服务器管理控制台,安全组添加规则放行 7000 和 7500 端口。

这是就可以打开浏览器输入服务器公网IP:7500看到 frps 后台了。

image.png

左侧 Proxies 能看到添加到服务器的穿透规则。

2.2 飞牛安装客户端 frpc

打开飞牛应用中心,搜索“frpc客户端”安装。

点击飞牛桌面的 frpc 打开客户端配置界面。

  • serverAddr:为云服务器公网IP

  • auth.token:将刚才服务器端 frps.toml 里面的 auth.token一行粘贴到这

下面每个 [[proxies]] 就是内网穿透规则,将飞牛本地服务穿透映射到服务器端的 frps。以穿透飞牛桌面为例,基本语法如下:

[[proxies]]
name = "飞牛"
type = "tcp"
localIP = "192.168.1.4" # 内网IP
localPort = 5666 # 内网默认端口
remotePort = 5888 # 映射到云服务器的公网访问端口

点击提交按钮该条规则即映射到 frps ,打开 frps 后台,在左侧的 Proxies>TCP 即可看到该条规则。

要能实现公网访问飞牛,还需要在云服务器管理控制台安全组中放行 remotPort 端口。

以此类推,可以将飞牛的各项本地服务(比如 docker 中的各个服务)穿透映射到云服务器。

Tips:飞牛 frpc 规则对应配置文件是 /vol1/@appdata/frpc/config/frpc.toml​,可定时备份该文件。

2.3 Linux 脚本安装客户端 frpc

一键安装脚本:

wget https://raw.githubusercontent.com/stilleshan/frpc/master/frpc_linux_install.sh && chmod +x frpc_linux_install.sh && ./frpc_linux_install.sh
# 以下为国内镜像
wget https://ghfast.top/https://raw.githubusercontent.com/stilleshan/frpc/master/frpc_linux_install.sh && chmod +x frpc_linux_install.sh && ./frpc_linux_install.sh

配置并启用:

vi /usr/local/frp/frpc.toml
# 修改 frpc.toml 配置
sudo systemctl restart frpc
# 重启 frpc 服务即可生效

一键卸载脚本:

wget https://raw.githubusercontent.com/stilleshan/frpc/master/frpc_linux_uninstall.sh && chmod +x frpc_linux_uninstall.sh && ./frpc_linux_uninstall.sh
# 以下为国内镜像
wget https://ghfast.top/https://raw.githubusercontent.com/stilleshan/frpc/master/frpc_linux_uninstall.sh && chmod +x frpc_linux_uninstall.sh && ./frpc_linux_uninstall.sh

2.4 Docker 安装客户端 frpc

为避免因 frpc.toml 文件的挂载,格式或者配置的错误导致容器无法正常运行并循环重启.请确保先配置好 frpc.toml 后在运行启动.

git clone 并正确配置 frpc.toml 文件:

git clone https://github.com/stilleshan/frpc
# git clone 镜像
git clone https://ghfast.top/https://github.com/stilleshan/frpc
# 国内镜像
vi /root/frpc/frpc.toml
# 配置 frpc.toml 文件

安装容器并启动:

docker run -d --name=frpc --restart=always -v /root/frpc/frpc.toml:/frp/frpc.toml stilleshan/frpc

以上命令 -v 挂载的目录是以 git clone 本仓库为例,也可以在任意位置手动创建 frpc.toml 文件,并修改命令中的挂载路径.

服务运行中修改 frpc.toml 配置后需重启 frpc 服务:

vi /root/frp/frpc.toml
# 修改 frpc.toml 配置
docker restart frpc
# 重启 frpc 容器即可生效