FRP简介:
frp 全名:Fast Reverse Proxy,是一个使用 Go 语言开发的高性能的反向代理应用,可以实现内网穿透,对外网提供服务。frp支持 tcp, udp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。
FRP工具Github下载地址:https://github.com/fatedier/frp/releases
FRP工具GitHub使用教程:https://github.com/fatedier/frp
参考简书教程:https://www.jianshu.com/p/00c79df1aaf0
说明:
- Linux_386.tar.gz 对应32位Intel处理器;
- Linux_amd64.tar.gz 对应AMD的x86_64处理器;
- 部署路径(服务端和客户端):/software/frp/
- 服务端主机名: frp_server,客户端主机名:frp_client;
- frp版本号:frp_0.30.0_linux_amd64.tar.gz
—===================================================
需求说明:
内网网段 A (HH.XX.XX.XX)希望访问远程的内网网段 B(GG.XX.XX.XX),目前网段A 的服务器 HH.XX.XX.80 可以访问 网段B的服务器 GG.XX.XX.90的端口 7000;
实现方案:
在网段A 的服务器 HH.XX.XX.80 部署 frp 服务端程序,在 网段B的服务器 GG.XX.XX.90 部署 frp 客户端程序;
—===================================================
服务端和客户端的公共操作:
[root@frp_server software]# pwd
/software
--下载frp安装包
[root@frp_server software]# wget https://github.com/fatedier/frp/releases/download/v0.30.0/frp_0.30.0_linux_amd64.tar.gz
---解压tar.gz文件
[root@frp_server software]# tar -zxvf frp_0.30.0_linux_amd64.tar.gz
---文件目录改名为 frp
[root@frp_server software]# mv frp_0.30.0_linux_amd64 frp
[root@frp_server software]# cd frp
配置服务端frps.ini文件
---将客户端文件改名(即禁止读取)
[root@frp_server frp]# mv frpc frpc_bak && mv frpc.ini frpc_bak.ini
修改 frps.ini 文件内容如下:
[common]
bind_port = 7000
以后台运行方式启动 frps服务端
[root@frp_server frp]# nohup ./frps -c ./frps.ini &
配置客户端frpc.ini文件
---将服务端文件改名(即禁止读取)
[root@frp_client frp]# mv frps frps_bak && mv frps.ini frps_bak.ini
修改 frpc.ini 文件内容如下:
[common]
server_addr = HH.XX.XX.80
server_port = 7000
以后台运行方式启动 frpc服务端
[root@frp_client frp]# nohup ./frpc -c ./frpc.ini &
FRP高级功能:
- frp客户端进程状态查看
$ ./frpc status -c ./frpc.ini
Proxy Status...
TCP
- 配置dashboard检查frp状态和代理信息
实现方式:服务端 frps.ini 调整为如下配置
[common]
bind_port = 7000
dashboard_port = 7500
dashboard_user= admin
dashboard_pwd = admin
服务端访问方式:http://[HH.XX.XX.80]:7500
- 配置Hot-Reload方式加载配置
实现方式:客户端 frpc.ini 文件调整为如下配置
[common]
server_addr = HH.XX.XX.80
server_port = 7000
admin_addr = 127.0.0.1
admin_port = 7400
admin_user = admin
admin_pwd = admin
配置调整后重新加载指令
[root@frp_client frp]# ./frpc reload -c ./frpc.ini
reload success
[root@frp_client frp]#
- 通过frp进行客户端网段数据库端口转发
实现方式:客户端 frpc.ini 文件调整为如下配置
[common]
server_addr = HH.XX.XX.80
server_port = 7000
admin_addr = 127.0.0.1
admin_port = 7400
admin_user = admin
admin_pwd = admin
[db_A_91]
type = tcp
local_ip = GG.XX.XX.91
local_port = 1521
remote_port = 7001
[db_B_92]
type = tcp
local_ip = GG.XX.XX.92
local_port = 22
remote_port = 7002
访问方式:服务端网段A通过 Pl/sql工具 HH.XX.XX.80:7001/db_A,HH.XX.XX.80:7002/db_B;
- frp服务端开启身份验证
理论上只要服务端开放的端口,客户端都可以自由的在服务端进行端口映射,存在一定的风险;可以通过服务端和客户端开启身份验证的功能,来限制客户端的连接;
#frps.ini调整配置如下
[common]
privilege_token = 12345678
#frpc.ini调整配置如下
[common]
privilege_token = 12345678
- frp服务端开启端口白名单
为了防止 FRP 端口被滥用,FRP 提供了指定允许哪些端口被分配的功能。可通过 FRP 服务端的配置文件中 privilege_allow_ports 参数来指定:
#frps.ini调整配置如下
[common]
privilege_allow_ports = 7000-9000,10000-12000
================================ over ========================================