概览

frp 是什么?

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

为什么使用 frp?

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

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

安装

关于如何安装 frp 的说明。

frp 采用 Golang 编写,支持跨平台,仅需下载对应平台的二进制文件即可执行,没有额外依赖。

系统需求

由于采用 Golang 编写,所以系统需求和最新的 Golang 对系统和平台的要求一致,具体可以参考 Golang System requirements

下载

目前可以在 Github 的 Release 页面中下载到最新版本的客户端和服务端二进制文件,所有文件被打包在一个压缩包中。

部署

解压缩下载的压缩包,将其中的 frpc 拷贝到内网服务所在的机器上,将 frps 拷贝到具有公网 IP 的机器上,放置在任意目录。

快速使用(临时测试使用)

编写配置文件,先通过 ./frps -c ./frps.ini 启动服务端,再通过 ./frpc -c ./frpc.ini 启动客户端。如果需要在后台长期运行,建议结合其他工具使用,例如 systemd 和 supervisor。

Linux部署

  1. 快速使用(临时测试使用)
编写配置文件,先通过 ./frps -c ./frps.ini 启动服务端需要有公网IP,再通过 ./frpc -c ./frpc.ini 启动客户端。如果需要在后台长期运行,建议结合其他工具使用,例如 systemd 和 supervisor。
  1. 使用 systemd 部署
这个示例将会演示在 Linux 系统下使用 systemd 控制 frps 及配置开机自启。 
在 Linux 系统下,使用systemd 可以方便地控制 frp 服务端 frps 的启动和停止、配置后台运行和开启自启。
要使用 systemd 来控制 frps,需要先安装 systemd,然后在 /etc/systemd/system 目录下创建一个 frps.service 文件。
  • 如Linux服务端上没有安装 systemd,可以使用 yum 或 apt 等命令安装 systemd。

    1
    2
    3
    4
    # yum
    yum install systemd
    # apt
    apt install systemd

    Ubuntu 20 执行如下图

  • 使用文本编辑器,如 vim 创建并编辑 frps.service 文件。

    1
    $ vim /etc/systemd/system/frps.service

    写入内容

    本文frp下载后存放位置如下图

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    [Unit]
    # 服务名称,可自定义
    Description = frp server
    After = network.target syslog.target
    Wants = network.target

    [Service]
    Type = simple
    # 启动frps的命令,需修改为您的frps的安装路径
    ExecStart = /root/frp_0.48.0_linux_386/frps -c /root/frp_0.48.0_linux_386/frps.ini

    [Install]
    WantedBy = multi-user.target

    frps.ini 配置文件参照说明

    效果如下图

    让后保存,按ESC键,再输入小写的wq后,回车即可保存,如下图

  • 使用 systemd 命令,管理 frps。

    1
    2
    3
    4
    5
    6
    7
    8
    # 启动frp
    systemctl start frps
    # 停止frp
    systemctl stop frps
    # 重启frp
    systemctl restart frps
    # 查看frp状态
    systemctl status frps

    执行启动命令如下图

  • 配置 frps 开机自启。

    1
    systemctl enable frps

    执行命令如下图

  • 启动客户端(示例为Windows,Linux类似)

    解压后的位置如下图(注意杀毒软件会误报,信任即可)

    frpc.ini 配置文件参照说明

    在命令行执行如下命令(注意切换目录到解压后的位置)

    1
    frpc.exe -c frpc.ini