一、环境准备

操作系统 IP地址 用途 所需服务
Centos7 运营商分配公网地址 FRP服务端 Firewald、FRPS(服务端)
Centos7 内网服务端(例如内网Apache服务器) FRP内网服务器端 Apache、FRPC(FRP客户端)
Windows10或任何可使用浏览器的设备 不要与内网服务端在同一内网网段 测试服务器 Chrome浏览器

在域名中添加解析记录
image.png

二、环境搭建

1、简介

利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。
对于 http, https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。
利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。

2、安装FRP服务端

使用Xshell连接到公网中的Centos7服务器(FRP服务端主机),点击下载Xshell

1、安装wget工具

  1. [root@localhost ~]# yum -y install wget

2、下载FRP安装包,直接进入到Github中使用wget命令下载即可,Github地址:https://github.com/fatedier/frp/releases

image.png
我们使用的服务端以及客户端都是Centos7,故此处下载frp_0.25.1_linux_amd64.tar.gz这个包即可。
光标移动到此处,鼠标右键复制“链接地址即可”即可(也可以在此处点击下载,然后上传到服务器)。

4、将下载链接复制到Xshell中,使用Wget命令下载

  1. [root@localhost ~]# wget https://github.com/fatedier/frp/releases/download/v0.25.1/frp_0.25.1_linux_amd64.tar.gz

正在下载中
image.png
出现如下提示后表示下载完成
image.png

5、解压安装包

  1. [root@localhost ~]# tar -zxvf frp_0.25.1_linux_amd64.tar.gz

6、进入到刚刚解压的压缩包中并查看文件

  1. [root@localhost ~]# cd frp_0.25.1_linux_amd64
  2. [root@localhost frp_0.25.1_linux_amd64]# ls
  3. frp_0.25.1_linux_amd64/
  4. frp_0.25.1_linux_amd64/frps_full.ini # frp服务端满配置文件(参考使用,一般用不到这么多功能)
  5. frp_0.25.1_linux_amd64/frps.ini #FRP服务端配置文件,启动服务的时候会用到,我们可以将自己需要的功能添加到此处
  6. frp_0.25.1_linux_amd64/frpc # FRP客户端程序
  7. frp_0.25.1_linux_amd64/frpc_full.ini # RRP客户端满配置文件,启动客户端服务的时候会用到,我们可以将自己需要的功能添加到此处
  8. frp_0.25.1_linux_amd64/frps # FRP服务端程序
  9. frp_0.25.1_linux_amd64/LICENSE
  10. frp_0.25.1_linux_amd64/frpc.ini # FRP客户端配置文件
  11. ### 此处是服务端,我们可以将客户端的程序以及配置文件删除,根据自己需要删除,此处不做删除。
  12. ### 关于FRP配置文件中的内容在文章开始的部分官方文档已经介绍的很详细了,此处不做介绍。

7、编辑frps.ini将我们需要的用能以及服务端必要配置添加进去即可

  1. [root@localhost frp_0.25.1_linux_amd64]# vim frps.ini
  2. [common]
  3. # 服务端口号
  4. bind_port = 7000
  5. # 自定义二级域名
  6. subdomain_host = ctoclubwin.com
  7. # http使用端口号
  8. vhost_http_port = 80
  9. # https使用端口号
  10. vhost_https_port = 443
  11. # dashboard使用端口号
  12. dashboard_port = 7500
  13. # dashboard 用户名密码,默认都为 admin
  14. dashboard_user = admin
  15. dashboard_pwd = admin
  16. #TCP多路复用
  17. tcp_mux = false
  18. # 日志文件
  19. log_file = /var/log/frpc.log
  20. #保存并退出即可!!!

8、开放防火墙端口号(在配置文件中我们使用了80、443、7000以及7500号端口)

  1. firewall-cmd zone=public add-port=80/tcp permanent
  2. firewall-cmd zone=public add-port=443/tcp permanent
  3. firewall-cmd zone=public add-port=7000/tcp permanent
  4. firewall-cmd zone=public add-port=7500/tcp permanent

9、重新加载防火墙

  1. firewall-cmd reload

10、运行FRPS(此命令是让frps在前台运行断开Shell后服务会自动停止,此处仅用于展示)

  1. [root@localhost frp_0.25.1_linux_amd64]# ./frps -c ./frps.ini

11、让FRPS服务在后台运行

  1. # 创建FRPS启动文件
  2. [root@localhost frp_0.25.1_linux_amd64]# vim /usr/lib/systemd/system/frps.service
  3. [Unit]
  4. Description = FRP to bypass NAT Network
  5. Wants = network-online.target
  6. After = network.target
  7. [Service]
  8. Type = simple
  9. # 此处的路径应改为您FRPC服务安装的路径
  10. ExecStart = /root/frp_0.25.1_linux_amd64/frps -c /root/frp_0.25.1_linux_amd64/frps.ini
  11. StandardOutput = syslog
  12. StandardError = inherit
  13. [Install]
  14. WantedBy = multi-user.target

12、启动FRPS服务

  1. systemctl start frps.service

13、查看FRPS服务状态

  1. [root@localhost ~]# systemctl status frps.service
  2. frps.service FRP to bypass NAT Network
  3. Loaded: loaded (/usr/lib/systemd/system/frps.service; disabled; vendor preset: disabled)
  4. Active: active (running) since Sat 2019-03-16 14:15:33 EDT; 7s ago
  5. Main PID: 1368 (frps)
  6. CGroup: /system.slice/frps.service
  7. └─1368 /root/frp_0.25.1_linux_amd64/frps -c /root/frp_0.25.1_linux_amd64/frps.ini
  8. Mar 16 14:15:33 localhost.localdomain systemd[1]: Started FRP to bypass NAT Network.
  9. Mar 16 14:15:33 localhost.localdomain systemd[1]: Starting FRP to bypass NAT Network
  10. Mar 16 14:15:34 localhost.localdomain frps[1368]: 2019/03/16 14:15:34 [I] [service.go:136] frps tcp listen on 0.0.0.0:7000
  11. Mar 16 14:15:34 localhost.localdomain frps[1368]: 2019/03/16 14:15:34 [I] [service.go:178] http service listen on 0.0.0.0:80
  12. Mar 16 14:15:34 localhost.localdomain frps[1368]: 2019/03/16 14:15:34 [I] [service.go:199] https service listen on 0.0.0.0:443
  13. Mar 16 14:15:34 localhost.localdomain frps[1368]: 2019/03/16 14:15:34 [I] [service.go:229] Dashboard listen on 0.0.0.0:7500
  14. Mar 16 14:15:34 localhost.localdomain frps[1368]: 2019/03/16 14:15:34 [I] [root.go:204] Start frps success

14、将FRPS服务设置为开机自启

  1. [root@localhost ~]# systemctl enable frps.service
  2. Created symlink from /etc/systemd/system/multi-user.target.wants/frps.service to /usr/lib/systemd/system/frps.service.

至此,服务端已经配置完成

3、配置客户端(内网服务主机)

1、使用Xshell连接到内网服务主机(由于本次演示环境中主机地址是刚刚安装的新环境,所以需要安装vim、wget以及apache等

  1. yum -y install vim wget httpd

2、创建apache配置文件(创建web测试内容,输入任意内容即可,输入完成后保存并退出

  1. vim /var/www/html/index.html
  2. FRP服务搭建测试!!!

image.png

4、启动Apache服务并设置为开机自启

  1. systemctl start httpd.service
  2. systemctl enable httpd.service

5、开放防火墙端口(本次测试环境中只需要使用到80端口即可)

  1. firewall-cmd zone=public add-port=80/tcp permanent
  2. firewall-cmd reload

6、测试内网是否能访问Web服务器(在浏览器中输入Web服务器IP地址即可,显示出我们刚刚输入的内容后即证明可以正常访问)

image.png

7、下载FRP文件,使用与服务单相同的安装包即可,安装包中同时包含客户端与服务器端

  1. wget https://github.com/fatedier/frp/releases/download/v0.25.1/frp_0.25.1_linux_amd64.tar.gz
  2. tar -zxvf frp_0.25.1_linux_amd64.tar.gz
  3. cd frp_0.25.1_linux_amd64
  1. [root@localhost frp_0.25.1_linux_amd64]# vim frpc.ini
  2. [common]
  3. #填写FRP服务器IP地址或已经设置好解析到该服务器的域名
  4. server_addr = ctoclubwin.com
  5. # 访问服务器的端口号
  6. server_port = 7000
  7. # TCP多路复用
  8. tcp_mux = false# http设置
  9. [web]
  10. # 类型
  11. type = http
  12. # http使用的端口号
  13. local_port = 80
  14. # 自定义二级域名(此处我们使用www.ctoclubwin.com访问的时候就可以直接跳转到该主机)
  15. subdomain = www

8、启动FRPC服务

  1. [root@localhost frp_0.25.1_linux_amd64]# ./frpc -c ./frpc.ini

9、将FRPC设置为后台启动以及开机自启

创建系统服务配置文件

  1. [root@localhost frp_0.25.1_linux_amd64]# vim /usr/lib/systemd/system/frpc.service
  2. [Unit]
  3. Description = FRP to bypass NAT Network
  4. Wants = network-online.target
  5. After = network.target
  6. [Service]
  7. Type = simple
  8. # 此处的路径应改为您FRPC服务安装的路径
  9. ExecStart = /root/frp_0.25.1_linux_amd64/frpc -c /root/frp_0.25.1_linux_amd64/frpc.ini
  10. StandardOutput = syslog
  11. StandardError = inherit
  12. [Install]
  13. WantedBy = multi-user.target

10、使用systemctl 启动FRPC服务

  1. systemctl start frpc.service

11、查看FRPC服务运行状态

  1. systemctl status frpc.service
  2. #结果如下
  3. frpc.service FRP to bypass NAT Network
  4. Loaded: loaded (/usr/lib/systemd/system/frpc.service; disabled; vendor preset: disabled)
  5. Active: active (running) since Sat 2019-03-16 14:04:01 EDT; 6s ago
  6. Main PID: 1650 (frpc)
  7. CGroup: /system.slice/frpc.service
  8. └─1650 /root/frp_0.25.1_linux_amd64/frpc -c /root/frp_0.25.1_linux_amd64/frpc.ini
  9. Mar 16 14:04:01 localhost.localdomain systemd[1]: Started FRP to bypass NAT Network.
  10. Mar 16 14:04:01 localhost.localdomain systemd[1]: Starting FRP to bypass NAT Network
  11. Mar 16 14:04:01 localhost.localdomain frpc[1650]: 2019/03/16 14:04:01 [I] [service.go:221] login to server success, get run rt [0]
  12. Mar 16 14:04:01 localhost.localdomain frpc[1650]: 2019/03/16 14:04:01 [I] [proxy_manager.go:137] [ab3bf8368f03f84c] proxy ad [web]
  13. Mar 16 14:04:01 localhost.localdomain frpc[1650]: 2019/03/16 14:04:01 [I] [control.go:144] [web] start proxy success
  14. Hint: Some lines were ellipsized, use -l to show in full.

12、将FRPC服务设置为开机自启

  1. systemctl enable frpc.service

13、通过外网主机浏览器测试使用域名是否可以访问服务器

image.png

14、使用Dashboard查看连接情况

使用浏览器访问FRPS服务器地址并输入在之前我们配置好的7500号端口并输入frps.ini中配置的用户名以及密码
image.png
在首页中可以看到一些基本参数
image.png

15、查看连接数

进入到Proxies → HTTP下(由于我客户端文件配置的类型是HTTP故此处切到HTTP下即可看到已经连接的设备)
image.png
相关文章:https://ctoclubs.com/2019/03/18/2447/
参考文档:https://www.cmdgy.com/20180429/384.html
官方文档:https://github.com/fatedier/frp