安装

此次示例服务端和客户端均为CentOS 7.9

  1. 首先检查服务端和客户端架构:

服务端:
image.png
客户端:
image.png

  1. 根据系统版本和架构下载相应的软件版本:https://github.com/fatedier/frp/releases(Golang语言编写,所以是二进制文件):

image.png
附:frp_0.43.0_linux_amd64.zip

  1. 解压后得到这些文件,将其中的 frpc 相关文件拷贝到内网服务所在的机器上,将 frps 相关文件拷贝到具有公网 IP 的机器上,放置在任意目录下:

image.png

  1. 编写配置文件

    通过 SSH 访问内网机器,需要提前开通服务器端的端口(7001和6001)

服务端frps.ini:
image.png
客户端frpc.ini:
image.png

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

服务端:
image.png
客户端:
image.png

  1. 后台运行

    以下以编写frps的systemd文件为例

编写systemd文件:/etc/systemd/system/frps.service

  1. [Unit]
  2. Description = frp server
  3. After = network.target syslog.target
  4. Wants = network.target
  5. [Service]
  6. Type = simple
  7. ExecStart = /etc/frps/frps -c /etc/frps/frps.ini
  8. [Install]
  9. WantedBy = multi-user.target

image.png
启动frps服务:
image.png
检查frps服务状态:
image.png
开启自启服务:
image.png

  1. 最后通过 SSH 访问内网机器,假设用户名为 test:

    1. ssh -oPort=6001 test@x.x.x.x
    2. frp 会将请求 x.x.x.x:6001 的流量转发到内网机器的 22 端口

    参考

  2. frp官方文档

  3. fatedier/frp - Github
  4. 内网穿透原理解析 - 贝锐