• 前言-frp 是什么?

    • frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
  • 为什么使用frp?
    通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:

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

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

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

  • 部署

    • 解压缩下载的压缩包,将其中的 frpc 拷贝到内网服务所在的机器上,将 frps 拷贝到具有公网 IP 的机器上,放置在任意目录。
    • frps为服务端、frpc为客户端
  • 配置文件编写

    • 服务端的配置文件的简单编写frps.ini

      1
      2
      3
      4
      [common]
      bind_port = 7000
      token = *****
      #连接服务器的密码
    • 客户端的配置文件的简单编写

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      [common]
      server_addr = x.x.x.x
      #填写服务器的公网IP
      server_port = 7000
      #服务器监听的端口
      token = *****
      #连接服务器的密码

      [Minecraft]
      #连接名备注
      type = tcp
      #连接类型
      local_ip = 127.0.0.1
      #本地IP
      local_port = 25565
      #本地端口
      remote_port = 25565
      #frp 服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口。

      [ssh]
      type = tcp
      local_ip = 127.0.0.1
      local_port = 22
      remote_port = 6000
    • 通过 SSH 访问内网机器,假设用户名为 test:

      ssh -oPort=6000 test@x.x.x.x

      frp 会将请求 x.x.x.x:6000 的流量转发到内网机器的 22 端口。

  • 开始使用

    • 编写配置文件,先通过

      1
      ./frps -c ./frps.ini

      启动服务端,再通过

      1
      ./frpc -c ./frpc.ini 

      启动客户端。如果需要在后台长期运行,建议结合其他工具使用,例如 systemd 和 supervisor。
      如果是 Windows 用户,需要在 cmd 终端中执行命令。

综上关于内网穿透的一些简单操作就完成了,更加详细的步骤可以移步到Frp 官方文档介绍 – Frps.cn 中文文档 博客文章内容节选自Frp 官方文档介绍 – Frps.cn 中文文档