作为开发人员,通常都会面临支付、公众号回调、第三方回调等方面的问题,其中一个常见的挑战是内网无法访问。为了解决这个问题,您可以使用内网穿透技术,将内部系统映射到外部,从而使第三方系统能够轻松调用本地的API接口。接下来将详细介绍如何设置FRP内网穿透
本次安装的最新版本: frp_0.52.3,截止目前最新的版本,和旧版本配置有点区别frp_0.52版本开始官方支持toml`yamljson 配置文件。请注意,ini` 已弃用

准备一台公网云服务器

  1. 必要的端口

    • bind_port(例如:7000):服务端监听的主端口,用于客户端连接。
    • dashboard_port(例如:7500):用于访问FRP的Web管理界面的端口。
    • remote_port(例如:6000):用于从外部访问内网服务的端口,每个穿透的服务都需一个唯一端口。
  2. 防火墙/安全组设置

    • 确保在云服务器的防火墙或安全组中开放上述所有端口。

服务端(FRPS)配置 - Linux

  1. 下载与解压

    • 为了方便大家下载,可以直接点下载 https://songzixian.lanzouq.com/b013ut6oj 密码:6chp
    • 也点击访问 FRP Releases官方仓库
    • 选择合适的Linux服务器版本下载,例如:frp_x.xx.x_linux_amd64.tar.gz
    • 使用tar -zxvf frp_x.xx.x_linux_amd64.tar.gz解压文件。
  2. 配置文件frps.toml

    # 客户端通用配置
    [common]
    # 服务端(云服务器)的公网IP地址
    server_addr = "127.0.0.1"
    # 服务端的bind_port
    server_port = 7066
    
    # 服务穿透配置 ssh是名称自定义的,保持唯一即可
    [ssh]
    # 代理类型为TCP
    type = "tcp"
    # 本地IP地址
    local_ip = "127.0.0.1"
    # 本地服务端口
    local_port = 8288
    # 远程端口,通过此端口在公网访问本地服务
    remote_port = 8077
    • 确保文件名为frps.toml,并位于解压目录。
  3. 启动服务端

前台测试运行./frps -c ./frps.toml

    • 在解压目录中后台运行nohup ./frps -c ./frps.toml &以在后台启动FRP服务端。
    • 使用ps -ef | grep frps来检查服务端是否运行。
    • 若要停止服务端,使用kill命令,如kill -9 [进程号]
    1. 访问Dashboard

      • 通过浏览器访问http://[云服务器公网IP]:7500,使用配置的用户名和密码登录。
      • Dashboard提供了对FRP服务和代理统计信息的实时监控。

    客户端(FRPC)配置 - Linux

    1. 下载与解压

      • 同上述下载步骤,但选择适用于Linux客户端的版本。
    2. 配置文件frpc.toml

      [common]
      server_addr = "云服务器公网IP"
      server_port = 7000
      
      [ssh]
      type = "tcp"
      local_ip = "127.0.0.1"
      local_port = 22
      remote_port = 6000  # 用于外部访问的端口

      上面配置单个客户端,如果需要配置多个客户端类似这样配置即可

      # 客户端通用配置
      [common]
      # 服务端(云服务器)的公网IP地址
      server_addr = "云服务器公网IP"
      # 服务端监听的端口
      server_port = 7000
      
      # SSH服务代理配置 ssh是自定义名称.要唯一
      [ssh]
      # 代理类型,此处为TCP
      type = "tcp"
      # 本地SSH服务的IP地址,通常是本机
      local_ip = "127.0.0.1"
      # 本地SSH服务监听的端口
      local_port = 22
      # 远程端口,外部通过云服务器公网IP和此端口访问本地SSH服务
      remote_port = 6000
      
      # Web服务代理配置 web是自定义名称.要唯一
      [web]
      # 代理类型,此处为HTTP
      type = "http"
      # 本地Web服务的IP地址,通常是本机
      local_ip = "127.0.0.1"
      # 本地Web服务监听的端口
      local_port = 80
      # 远程端口,外部通过云服务器公网IP和此端口访问本地Web服务
      remote_port = 8000
      
      # 数据库服务代理配置 database是自定义名称.要唯一
      [database]
      # 代理类型,此处为TCP
      type = "tcp"
      # 本地数据库服务的IP地址,通常是本机
      local_ip = "127.0.0.1"
      # 本地数据库服务监听的端口
      local_port = 3306
      # 远程端口,外部通过云服务器公网IP和此端口访问本地数据库服务
      remote_port = 33060
      • 在这个配置中,[ssh][web][database]是代理的名称,每个名称都是唯一的。这些名称用来标识不同的代理配置块,每个块定义了一个内网服务如何映射到云服务器的公网IP地址和特定的远程端口上。确保代理名称在整个配置文件中保持唯一。
      • 文件名为frpc.toml,确保与FRP客户端程序在同一目录。
    3. 启动客户端

      • 运行nohup ./frps -c ./frps.toml &以在后台启动FRP客户端。
      • 使用ps -ef | grep frpc检查客户端是否运行。
      • 若要停止客户端,使用kill命令,如kill -9 [进程号]

    客户端(FRPC)配置 - Windows

    1. 下载与解压

      • 访问FRP的GitHub发布页面,下载适用于Windows的版本,如frp_x.xx.x_windows_amd64.zip
      • 解压下载的文件。
    2. 配置文件frpc.toml

      [common]
      server_addr = "云服务器公网IP"
      server_port = 7000
      
      [ssh]
      type = "tcp"
      local_ip = "127.0.0.1"
      local_port = 22
      remote_port = 6000  # 用于外部访问的端口

      确保文件名为frpc.toml,并与frpc.exe位于同一目录。

      3.启动FRP客户端:

      • 双击frpc.exe或在命令行中运行frpc.exe -c frpc.toml
      • 推荐使用进入解压目录,使用cmd命令支持frpc.exe -c frpc.toml,这样不会出现闪退的情况
    Last modification:December 10, 2023
    如果觉得这篇技术文章对你有用,请随意赞赏