FRP

https://github.com/fatedier/frp/blob/master/README_zh.md

下载软件包

image.png

frp包里有如下文件

服务器端需要更改frps.ini文件
客户端需要更改frpc.ini文件

服务器

安装
https://github.com/snowdreamtech/frp?spm=a2c4e.10696291.0.0.4a5619a4SqlVwU :::success Docker

docker run —restart=always —network host -d -v /etc/frp/frps.ini:/etc/frp/frps.ini —name frps snowdreamtech/frps :::

修改frps.ini

  1. [common]
  2. #绑定的端口,
  3. bind_port = 7000
  4. #设置监听 HTTP 请求端口为 8080
  5. vhost_https_port = 8080
  6. #使用 xx.xx.xx.xx:7500 访问frp,展示你的信息
  7. dashboard_port = 7500
  8. #进入 xx.xx.xx.xx:7500 所需要的用户名和密码
  9. dashboard_user = admin
  10. dashboard_pwd = password
  11. # 自己设的token
  12. privilege_token = 123456
  13. #log_file日志文件
  14. log_file = ./frps.log
  15. #log_level记录的日志级别
  16. log_level = info
  17. #log_max_days日志留存天数
  18. log_max_days = 3
  19. #authentication_timeout超时时间
  20. authentication_timeout = 0
  21. #max_pool_count最大链接池,每个代理预先与后端服务器建立起指定数量的最大链接数
  22. max_pool_count = 50

image.png

:::success 配置文件 :::

  1. [common] # 通用配置段
  2. bind_addr = 0.0.0.0 # 绑定的IP地址,支持IPv6,不指定默认0.0.0.0;
  3. bind_port = 7000 # 服务端口;
  4. bind_udp_port = 7001 # 是否使用udp端口,不使用删除或注释本行;
  5. kcp_bind_port = 7000 # 是否使用kcp协议,不使用删除或注释本行;
  6. # proxy_bind_addr = 127.0.0.1 # 代理监听地址,默认和bind_addr相同;
  7. # 虚拟主机
  8. vhost_http_port = 80 # 是否启用虚拟主机,端口可以和bind_port相同;
  9. vhost_https_port = 443
  10. vhost_http_timeout = 60 # 后端虚拟主机响应超时时间,默认为60s;
  11. # 开启frps仪表盘可以检查frp的状态和代理的统计信息。
  12. dashboard_addr = 0.0.0.0 # frps仪表盘绑定的地址;
  13. dashboard_port = 7500 # frps仪表盘绑定的端口;
  14. dashboard_user = admin # 访问frps仪表盘的用户;
  15. dashboard_pwd = admin # 密码;
  16. assets_dir = ./static # 仪表盘页面文件目录,只适用于调试;
  17. # 日志配置文件
  18. log_file = ./frps.log # 日志文件,不指定日志信息默认输出到控制台;
  19. log_level = info # 日志等级,可用等级“trace, debug, info, warn, error”;
  20. log_max_days = 3 # 日志保存最大保存时间;
  21. token = 12345678 # 客户端与服务端通信的身份验证令牌
  22. heartbeat_timeout = 90 # 心跳检测超时时间,不建议修改默认配置,默认值为90;?
  23. # 指定允许客户端使用的端口范围,未指定则没有限制;
  24. allow_ports = 2000-3000,3001,3003,4000-50000
  25. max_pool_count = 5 # 每个客户端连接服务端的最大连接数;
  26. max_ports_per_client = 0 # 每个客户端最大可以使用的端口,0表示无限制
  27. authentication_timeout = 900 # 客户端连接超时时间(秒),默认为900s;
  28. subdomain_host = frps.com # 自定义子域名,需要在dns中将域名解析为泛域名;
  29. tcp_mux = true # 是否使用tcp复用,默认为true;
  30. # frp只对同意客户端的连接进行复用;

客户端/树莓派

  1. rm -f frps*
  1. [common]
  2. server_addr = 此处填服务器公网ip
  3. server_port = 7777 #此处要与服务器端frps.ini文件中bind_port相同
  4. [ssh]
  5. type = tcp
  6. local_ip = 192.168.31.65 #内网主机的ip
  7. local_port = 22 #ssh的默认端口
  8. remote_port = 6000 #自定义的访问内部ssh端口号,确保服务器已开放此端口

运行服务

  1. ./frpc -c frpc.ini #直接运行
  2. nohup ./frpc -c ./frpc.ini & #后台运行

测试

  1. ssh pi@公网ip -p 6000

端口占用问题

在外部云服务器上布置Frp服务的时候发现80被占用,于是用到了Ngnix反向代理功能