如何优雅地使用 Frp 内网穿透

本文最后更新于:2021年8月16日 凌晨

前言

FRP 作为经典内网穿透工具,网络上已经有很多资料,我这里就提供一个基于 Docker 的搭建思路,使得 FRP 更加易用,实现类似于 思有云 的效果。

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

FRP 的工作原理如下:

Frp Structure

搭建步骤

安装 DockerDocker Compose

参考 文档

FRP 安装

FRP 分为客户端和服务端,客户端与服务端连接,服务端进行流量转发,从而可以内网穿透。此处仅介绍服务端的配置,客户端推荐OpenWRTluci-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_portvhost_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 端口均为 7123dashboard 端口为 57234http 端口为53310

反向代理

以下以宝塔面板为例。

反向代理 Dashboard

宝塔面板的反向代理直接在站点设置 - 反向代理里面添加即可。

Dashboard Reverse Proxy

同时建议配置好HTTPS。这样就能访问域名来访问 FRP 面板。

反向代理 HTTP 端口

与上一个步骤是相同的操作,注意 端口变了

HTTP Reverse Proxy

这样做的好处是,如果你想要添加新的设备,你只需要将新域名 CNAME 到已有的域名即可,对于一些给的端口不多的机器十分好用,也能更方便分享给你的小伙伴们。

如果你的 DNS 服务提供商支持泛域名的话,你也可以直接在宝塔面板里面添加类似于 *.example.com 的域名,这样就完全只用在客户端配置即可。

后记

如果对带宽要求不大的话,可以考虑用KCP,速度更加的快!

FRP 作为一个非常优秀的内网穿透应用,上手门槛也不高,希望国内类似的花某壳等耗子尾之。