如何优雅地使用 Frp 内网穿透
本文最后更新于:2023年2月20日 中午
前言
FRP 作为经典内网穿透工具,网络上已经有很多资料,我这里就提供一个基于 Docker 的搭建思路,使得 FRP 更加易用,实现类似于 思有云 的效果。
FRP 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
FRP 的工作原理如下:

搭建步骤
安装 Docker 和Docker Compose
参考 文档。
FRP 安装
FRP 分为客户端和服务端,客户端与服务端连接,服务端进行流量转发,从而可以内网穿透。此处仅介绍服务端的配置,客户端推荐OpenWRT 的luci-app-frp。
❗注意:以下步骤均在同一个文件夹下。
FRP 服务端配置文件设置
FRP 的配置文件比较简单,可直接参考 官方文档。
推荐的配置文件如下,保存至为 frps.ini(❗注意将形如[foobar] 的替换为自己的配置):
[common]
bind_port = 7123
kcp_bind_port = 7123
token = [token]
vhost_http_port = 80
vhost_https_port = 443
dashboard_port = 57234
dashboard_user = admin
dashboard_pwd = [dashboard_pwd]
enable_prometheus = true
log_level = trace
log_max_days = 1
tcp_mux = true
max_pool_count = 50
subdomain_host = [subdomain_host]🚨不建议修改 vhost_http_port 和vhost_https_port。
Docker Compose配置文件设置
docker-compose.yaml 文件如下所示:
version: '3'
services:
frps:
image: cloverzrg/frps-docker
container_name: frps
restart: always
volumes:
- ./frps.ini:/conf/frps.ini
ports:
- 7123:7123
- 7123:7123/udp
- 57234:57234
- 53310:80然后执行以下命令,就可以运行起来了:
docker-compose up -d此时 tcp/kcp bind 端口均为 7123,dashboard 端口为 57234,http 端口为53310。
反向代理
以下以宝塔面板为例。
反向代理 Dashboard
宝塔面板的反向代理直接在站点设置 - 反向代理里面添加即可。

同时建议配置好HTTPS。这样就能访问域名来访问 FRP 面板。
反向代理 HTTP 端口
与上一个步骤是相同的操作,注意 端口变了!

这样做的好处是,如果你想要添加新的设备,你只需要将新域名 CNAME 到已有的域名即可,对于一些给的端口不多的机器十分好用,也能更方便分享给你的小伙伴们。
如果你的 DNS 服务提供商支持泛域名的话,你也可以直接在宝塔面板里面添加类似于 *.example.com 的域名,这样就完全只用在客户端配置即可。
后记
如果对带宽要求不大的话,可以考虑用KCP,速度更加的快!
FRP 作为一个非常优秀的内网穿透应用,上手门槛也不高,希望国内类似的花某壳等耗子尾之。