一、frp工作原理
服务端运⾏,监听⼀个主端⼝,等待客户端的连接;
客户端连接到服务端的主端⼝,同时告诉服务端要监听的端⼝和转发类型;
服务端fork新的进程监听客户端指定的端⼝;
外⽹⽤户连接到客户端指定的端⼝,服务端通过和客户端的连接将数据转发到客户端;
客户端进程再将数据转发到本地服务,从⽽实现内⽹对外暴露服务的能⼒。
二、frp的应用
1、文件列表
[root@hcss-ecs-e083 ~]# tree
.
!"" frp_0.33.0_linux_amd64
# !"" frpc
# !"" frpc_full.ini
# !"" frpc.ini
# !"" frps
# !"" frps_full.ini
# !"" frps.ini
# !"" LICENSE
# !"" nohup.out
# %"" systemd
# !"" frpc.service
# !"" frpc@.service
# !"" frps.service
# %"" frps@.service
!"" frp_0.33.0_linux_amd64.tar.gz
%"" nohup.out
2、frp的配置
a 内⽹主机 不可以被⽹络访问
b 外⽹主机 可以被外⽹通过ip或者域名访问
使⽤b代理a主机,通过访问b主机管理a主机
访问b主机的特定端⼝,管理a主机的22端⼝
现在我们说b为服务端,提供代理服务
a主机是客户端,被代理了
在服务端开启端口
# 打开控制台⾯板端⼝
[root@hcss-ecs-e083 ~]# firewall-cmd --zone=public --add-port=7500/tcp --permanent
# 打开frp服务端⼝
[root@hcss-ecs-e083 ~]# firewall-cmd --zone=public --add-port=7000/tcp --permanent
# 打开⼀组客户端⼝
[root@hcss-ecs-e083 ~]# firewall-cmd --zone=public --add-port=6000
6100/tcp --permanent
# 加载防⽕墙更新
[root@hcss-ecs-e083 ~]# firewall-cmd --reload
文件配置
[root@hcss-ecs-e083 ~]# ls -l frp_0.33.0_linux_amd64/frps*-rwxrwxr-x 1 yuanyu yuanyu 12976128 Apr 27 2020
frp_0.33.0_linux_amd64/frps-rw-rw-r-- 1 yuanyu yuanyu 4639 Apr 27 2020
frp_0.33.0_linux_amd64/frps_full.ini-rw-rw-r-- 1 yuanyu yuanyu 114 Jul 18 21:41
frp_0.33.0_linux_amd64/frps.ini
配置⽂件
[root@hcss-ecs-e083 ~]# vim ~/frp_0.33.0_linux_amd64/frps.ini-------------------------------------------------------------
# 服务名称
[common]
# 服务端⼝
bind_port = 7000
# 控制台⾯板账号
dashboard_user=xxxxxx
# 控制台密码
dashboard_pwd=xxxxxxx
# 控制台端⼝
dashboard_port=7500
# 代理标识
token=xxxxxxxx
客户端
文件
[root@hcss-ecs-e083 ~]# ls -l frp_0.33.0_linux_amd64/frpc*-rwxrwxr-x 1 yuanyu yuanyu 10629120 Apr 27 2020
frp_0.33.0_linux_amd64/frpc-rw-rw-r-- 1 yuanyu yuanyu 7575 Apr 27 2020
frp_0.33.0_linux_amd64/frpc_full.ini-rw-rw-r-- 1 yuanyu yuanyu 126 Apr 27 2020
frp_0.33.0_linux_amd64/frpc.ini
配置文件
# 服务器名称
[common]
# 服务器ip
server_addr = x.x.x.x
# 服务器端⼝
server_port = 7000
# 代理标识
token=xxxxxxx
# 被代理的主机名称,不允许和其他重复
[被代理主机名称xxx]
# 代理服务类型
type = tcp
# 本地ip
local_ip = 127.0.0.1
# 本地被代理的端⼝
local_port = 22
# 选择代理后的端⼝
remote_port = ⾃选端⼝xxxxxxx60000
3、启动服务
在服务端
# 如果希望后台运⾏,请添加nohub和&
[root@hcss-ecs-e083 ~]# ./frp_0.33.0_linux_amd64/frps -c
./frp_0.33.0_linux_amd64/frps.ini-------------------------------------------------------------------------------
2024/07/18 21:44:33 [I] [service.go:178] frps tcp listen on 0.0.0.0:7000
2024/07/18 21:44:33 [I] [service.go:277] Dashboard listen on
0.0.0.0:7500
2024/07/18 21:44:33 [I] [root.go:209] start frps success
2024/07/18 21:44:36 [I] [service.go:432] [57233d8d82bd4ca6] client login
info: ip [36.113.29.22:8771] version [0.33.0] hostname [] os [linux]
arch [amd64]
在客户端
[root@localhost ~]# cd frp_0.33.0_linux_amd64/
[root@localhost frp_0.33.0_linux_amd64]# ./frpc -c ./frpc.ini ------------------------------------------------------------------------------
2024/07/18 21:48:51 [I] [service.go:282] [568aa5e7395810d9] login to
server success, get run id [568aa5e7395810d9], server udp port [0]
2024/07/18 21:48:51 [I] [proxy_manager.go:144] [568aa5e7395810d9] proxy
added: [ssh]
2024/07/18 21:48:51 [I] [control.go:179] [568aa5e7395810d9] [ssh] start
proxy success
在服务端
打开浏览器搜索IP+:7500
客户端应该在这些端⼝都打开以后再启 动
创建ssh连接
连接代理成功