官方文档:https://gofrp.org/zh-cn/docs

1705301050842

系统需求

由于采用 Go 语言编写,因此系统需求与最新的 Go 语言对系统和平台的要求一致,具体请参考 Golang System requirements

下载

您可以从 GitHub 的 Release 页面中下载最新版本的客户端和服务器二进制文件。所有文件都打包在一个压缩包中,还包含了一份完整的配置参数说明。

部署

  1. 解压下载的压缩包。
  2. frpc 复制到内网服务所在的机器上。
  3. frps 复制到拥有公网 IP 地址的机器上,并将它们放在任意目录。

开始使用

  1. 编写配置文件,目前支持的文件格式包括 TOML/YAML/JSON,旧的 INI 格式仍然支持,但已经不再推荐。

  2. 使用以下命令启动服务器:./frps -c ./frps.toml

  3. 使用以下命令启动客户端:./frpc -c ./frpc.toml

  4. 如果需要在后台长期运行,建议结合其他工具,如 systemdnohupsupervisor

    1
    2
    3
    4
    5
    # 服务端
    nohup ./frps -c ./frps.toml &

    # 客户端
    nohup ./frpc -c ./frpc.toml &

有关如何编写配置文件,详见 配置文件 章节中的内容。

完整的配置项说明,详见 官方文档 - 参考 中的内容。

配置文件

frps.toml

在具有公网 IP 的机器上部署 frps

部署 frps 并编辑 frps.toml 文件。以下是简化的配置,其中设置了 frp 服务器用于接收客户端连接的端口:

1
bindPort = 7000

frpc.toml

在需要被访问的内网机器上部署 frpc

部署 frpc 并编辑 frpc.toml 文件,假设 frps 所在服务器的公网 IP 地址为 x.x.x.x。以下是示例配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
serverAddr = "x.x.x.x"
serverPort = 7000

[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000

[[proxies]]
name = "nginx"
type = "http"
localIP = "127.0.0.1"
localPort = 80
remotePort = 8080
  • localIPlocalPort 配置为需要从公网访问的内网服务的地址和端口。
  • remotePort 表示在 frp 服务端监听的端口,访问此端口的流量将被转发到本地服务的相应端口。
  • type表示连接类型,常用的type包括httptcp
    • 常见的Web服务、Server服务都是http连接。
    • 如ssh、mysql、redis等服务的连接为tcp连接。