官方项目地址 | 官方文档


Step1:下载

下载安装frp https://github.com/fatedier/frp/releases

Step2:准备

准备两台计算机,一台具备公网ip,一台能正常访问网页即可,将下载后的frp文件拷贝到两台电脑并解压。
目录文件解释:

  1. .
  2. ├── frpc # 客服端可执行文件
  3. ├── frpc_full.ini # 客服端配置文件全部解释
  4. ├── frpc.ini # 客服端配置文件
  5. ├── frps # 服务端可执行文件
  6. ├── frps_full.ini # 服务端配置文件全部解释
  7. ├── frps.ini # 服务端配置文件
  8. ├── LICENSE
  9. └── systemd # 服务文件
  10. ├── frpc.service
  11. ├── frpc@.service
  12. ├── frps.service
  13. └── frps@.service

Step3:简单示例

  1. 在具备公网IP的电脑上(服务端)配置文件 frps.ini ``` Path: frp_0.35.1_linux_amd64/frps.ini

[common] bind_port = 7000

  1. 注:需要服务器防火墙放行7000端口
  2. 2. 在需要内网穿透的电脑上(客户端)配置文件 **frpc.ini**

Path: frp_0.35.1_linux_amd64/frpc.ini

[common] server_addr = x.x.x.x # x.x.x.x为上方有公网IP电脑的公网IP地址 server_port = 7000

[ssh] type = tcp local_ip = 127.0.0.1 # 配置为本地需要暴露到公网的服务地址和端口 local_port = 22 remote_port = 6000 # 表示在 frp 服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口

  1. <a name="zwIxU"></a>
  2. ### Step4:运行
  3. 1. 在具备公网IP的电脑上(服务端)执行命令
  4. - 前台执行:`./frps -c frps.ini`
  5. - 后台执行:`nohup ./frps -c frps.ini >/dev/null 2>&1 &`
  6. 2. 在需要内网穿透的电脑上(客户端)执行命令
  7. - 前台执行:`./frpc -c frpc.ini`
  8. - 后台执行:`nohup ./frpc -c frpc.ini >/dev/null 2>&1 &`
  9. 说明:>/dev/null 2>&1 &,表示丢弃。
  10. <a name="2Lewp"></a>
  11. ### Step5:运行结果
  12. 1. 服务端
  13. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/1404781/1614679453502-c16954f1-f3c8-47e7-92b7-4981ceba1b86.png#height=202&id=XTtHu&margin=%5Bobject%20Object%5D&name=image.png&originHeight=404&originWidth=1426&originalType=binary&ratio=1&size=610535&status=done&style=none&width=713)
  14. 2. 客户端
  15. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/1404781/1614679440273-6972cadc-507e-47d7-b234-869ea172f898.png#height=156&id=sSTWn&margin=%5Bobject%20Object%5D&name=image.png&originHeight=311&originWidth=1426&originalType=binary&ratio=1&size=465480&status=done&style=none&width=713)
  16. <a name="S1Pag"></a>
  17. ### 官方示例
  18. <a name="2N8DO"></a>
  19. #### 通过自定义域名访问内网的 Web 服务
  20. 这个示例通过简单配置 HTTP 类型的代理让用户访问到内网的 Web 服务。<br />HTTP 类型的代理相比于 TCP 类型,不仅在服务端只需要监听一个额外的端口 `vhost_http_port` 用于接收 HTTP 请求,还额外提供了基于 HTTP 协议的诸多功能。
  21. 1. 修改 frps.ini 文件,设置监听 HTTP 请求端口为 8080:

[common] bind_port = 7000 vhost_http_port = 8080

  1. 2. 修改 frpc.ini 文件,假设 frps 所在的服务器的 IP x.x.x.x`local_port` 为本地机器上 Web 服务监听的端口, 绑定自定义域名为 `custom_domains`

[common] server_addr = x.x.x.x server_port = 7000 [web] type = http local_port = 80 custom_domains = www.yourdomain.com [web2] type = http local_port = 8080 custom_domains = www.yourdomain2.com ```

  1. 分别启动 frps 和 frpc。
  2. www.yourdomain.comwww.yourdomain2.com 的域名 A 记录解析到 IP x.x.x.x,如果服务器已经有对应的域名,也可以将 CNAME 记录解析到服务器原先的域名。或者可以通过修改 HTTP 请求的 Host 字段来实现同样的效果。
  3. 通过浏览器访问 [http://www.yourdomain.com:8080](http://www.yourdomain.com:8080) 即可访问到处于内网机器上 80 端口的服务,访问 [http://www.yourdomain2.com:8080](http://www.yourdomain2.com:8080) 则访问到内网机器上 8080 端口的服务。

    常见错误

  • 程序运行失败:检查文件是否具有执行权限
  • 程序运行成功但无法访问:服务器端口未放行
  • 端口被占用:切换为未使用端口
  • 配置文件中[ ]内名字不能重复