本文最后更新于 2024-07-28,文章可能存在过时内容,如有过时内容欢迎留言或者联系我进行反馈。

前言

本教程基于群晖的NAS设备DS423+docker功能进行搭建FRP的客户端,DSM版本为 7.2.1-69057 Update 5。采用香港机Debian 12系统的服务器来安装FRP的服务端作为演示。

服务器购买地址https://www.crash.work/aff/AQXGDNKY

简介

FRP(Fast Reverse Proxy)是一个高性能的反向代理应用,它可以帮助您将内网服务通过反向代理暴露到公网上。FRP使用Go语言编写,具有跨平台的特性,可以在多种操作系统上运行。以下是FRP的一些主要特点:

  1. 多协议支持:FRP支持多种协议,包括HTTP、HTTPS、TCP、UDP等,使得它可以代理多种类型的服务。

  2. 端口映射:FRP可以将内网服务的端口映射到公网,使得用户可以通过公网访问内网服务。

  3. 加密通信:FRP支持TLS/SSL加密,可以保证数据传输的安全性。

  4. 身份验证:FRP提供了多种身份验证方式,包括Token、HTTP Basic Auth等,以增强安全性。

  5. 插件系统:FRP具有插件系统,允许开发者自定义功能,如日志记录、认证等。

  6. Web管理界面:FRP提供了一个Web管理界面,方便用户监控和管理代理服务。

  7. 配置简单:FRP的配置文件简单明了,易于设置和管理。

  8. 高可用性:FRP支持服务的高可用性配置,可以设置多个服务器进行负载均衡。

  9. 跨平台:由于FRP是用Go语言编写的,它可以在Windows、Linux、MacOS等多种操作系统上运行。

FRP通常用于以下场景:

  • 内网穿透,允许远程访问内网服务。

  • 负载均衡,将流量分发到多个服务器。

  • 服务的安全性增强,通过代理进行加密和身份验证。

FRP是一个开源项目,可以在GitHub上找到其源代码和文档。

部署

1Panel

为了方便,我将先部署一个1Panel来作为管理面板,然后在此基础上安装Frps。

环境要求

安装前请确保您的系统符合安装条件:

  • 操作系统:支持主流 Linux 发行版本(基于 Debian / RedHat,包括国产操作系统);

  • 服务器架构:x86_64、aarch64、armv7l、ppc64le、s390x;

  • 内存要求:建议可用内存在 1GB 以上;

  • 浏览器要求:请使用 Chrome、FireFox、IE10+、Edge等现代浏览器;

  • 可访问互联网。

安装部署

  1. 使用你熟悉的SSH工具连接到服务器,我使用的是Xterminal。

  2. 先安装Docker,输入以下命令脚本一键安装Docker。

    bash <(curl -sSL https://linuxmirrors.cn/docker.sh)

  3. 是否安装最新版本的 Docker Engine ,输入Y​然后回车。

  4. 请选择并输入你想使用的 Docker CE 源,输入13​然后回车。

    因为我的服务器不是中国大陆的,所以我直接选择了官方源,国内服务器请选择其他源。

  5. 请选择并输入你想使用的 Docker registry 源,输入14​然后回车,等待安装。

    因为我的服务不是中国大陆的,是香港的服务器,所以我选择了14,实际根据自己服务器情况进行选择。

  6. 显示以下界面,则表示安装完成。

  7. 根据自己的服务器系统选择1Panel的安装脚本。

    • RedHat / CentOS

      curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh
      
    • Ubuntu

      curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh
      
    • Debian

      curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh
      
    • openEuler / 其他

      1. 安装 docker

      bash <(curl -sSL https://linuxmirrors.cn/docker.sh)
      
      1. 安装 1Panel

      curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh
      

    我所使用的是Debian,因此我将使用Debian的服务器系统作为安装演示。

  8. 设置 1Panel 安装目录(默认为/opt),直接回车,默认将1Panel安装在/opt​目录下。

  9. 设置 1Panel 端口(默认为19526),不推荐使用默认端口,容易被人爆破登录,因此我们这里修改一下默认端口,我修改成了1998​

  10. 设置 1Panel 安全入口,面板安全入口仅支持字母、数字、下划线,长度 3-30 位。我设置成了1panel​

  11. 设置 1Panel 面板用户,我设置成了admin​,请根据自己的实际情况进行修改。

  12. 设置 1Panel 面板密码,输入密码时,不会有显示,所以输入完以后直接回车。

  13. 在浏览器中输入访问地址,根据自己设置的账号和密码进行登录。

Frp服务端

  1. 在1Panel面板中,进入到“应用商店”,搜索frp​,选择frp服务端​,点击”安装“。

  2. 将“服务端口”、“Dashboard 端口”和“密码”的默认值进行修改。

  3. 等待安装完成后,点击“📂”文件夹小图标进入安装目录。

  4. 找到frps.toml​这个文件,点击“打开”。

  5. 编辑修改一下“auth.token”的值,然后点击“确认”。

    每次修改配置后,记得要重启容器,才能生效。

Frp客户端

  1. 打开群晖Web管理后台,在“File Station”中创建一个目录,用于存储Frp客户端数据。

  2. 在本地新建一个文本文档,然后编辑文本,输入以下内容。

    # 服务器地址
    serverAddr = "192.168.1.1"
    # 服务器端口
    serverPort = 7007
    # 鉴权方式,默认为token
    auth.method = "token"
    # 鉴权密钥,与服务端设置必须一致,否则无法连接
    auth.token = "xiaoxiaobijidadayongchu"
     
    [[proxies]]
    # 隧道名称,可自定义,不能重复
    name = "web_nas_http"
    # 隧道类型,可用tcp, udp, http, https, tcpmux, stcp, sudp, xtcp
    type = "tcp"
    # 本地IP地址,如果是本机就127.0.0.1
    localIP = "127.0.0.1"
    # 本地端口,本地服务端口
    localPort = 30080
    # 远程端口,连接隧道时用的端口
    remotePort = 80
    
    [[proxies]]
    name = "web_nas_https"
    type = "tcp"
    localIP = "127.0.0.1"
    localPort = 30443
    remotePort = 443

    填写完成以后把注释删除掉,以免产生其他影响。

  3. 将文本文档上传至之前我们创建好的路径。

  4. 在“Container Manager”内,选择“注册表”,搜索stilleshan/frpc​​,选中后点击“下载”,等待下载完成。

  5. 在“容器”内,点击“新增”,“映像”选择我们刚刚下载好的镜像,然后勾选一下“启用自动重新启动”,最后点击“下一步”。

  6. 点击“添加文件”。

  7. 选择我们之前上传的frpc配置文件。

  8. 容器的存储目录请填写固定的/frp/frpc.toml​不要修改,然后点击“下一步”。

  9. 网络更改为host​,然后点击“下一步”。

  10. 检查一下配置,没问题的话,直接点击“完成”。

  11. 在浏览器中输入Frp的控制面板地址,查看穿透的对应的端口是否生效。