目录
Frp使用须知
Frp的工作原理
Frp配置服务端
frp文件夹内的文件
frps.ini配置文件
仪表盘
Frp配置客户端
文件目录
frpc.ini配置文件
Frp使用须知
前言:自建frp需要部署服务端以及客户端,服务端类似于花生壳服务端,ngrok服务端一样暴露出通信端口,客户端连接后进行通信
服务端:需要有公网IP,最合适的机器为云服务(linux)
客户端:本地的linux虚拟机或者其他物理机(要穿透的内网机器windows)
Frp的工作原理
理解:
- 当客户端启动时,它会向frp服务器发送一条请求,请求服务器分配一个唯一的客户端ID。
- 服务器返回分配的客户端ID。frp服务器将分配一个唯一的客户端ID,并将其返回给客户端。
- 客户端连接到服务器。客户端使用分配的客户端ID连接到frp服务器,以便服务器可以知道客户端要连接的计算机和端口。
- 当外部网络发出请求时,frp服务器将请求转发到客户端,客户端透过服务端将请求转发到指定的外网计算机和端口上。
Frp配置服务端
下载好frp安装包:https://github.com/fatedier/frp/releases
注意:下载后缀为linux__amd64的最新版。
将压缩包放入linux内的用户(root)文件夹中。
解压该压缩包:tar xzvf frp_0.34.3_linux_amd64.tar.gz
将解压后的文件名命名为frp:mv frp_0.34.3_linux_amd64 frp
frp文件夹内的文件
- frpc:客户端执行文件
- frpc_full.ini:客户端完整配置文件
- frpc.ini:客户端配置文件
- frps:服务端执行文件
- frps_full.ini:服务端完整配置文件
- frps.ini:服务端配置文件
注意:frpc文件供客户端使用,frps供服务端使用。在服务端把相关客户端文件都删掉。
删掉客户端文件:rm -f frpc frpc_full.ini frpc.ini
frps.ini配置文件
[common]
#监听客户端地址,默认0.0.0.0表示全部
bind_addr = 0.0.0.0
#frps与frpc交互用的端口,记得关闭防火墙
bind_port = 7000
#设置token
privilege_token = 12345678
#开启日志
enable_prometheus = true
#日志路径
log_file = ./frps.log
#日志级别
log_level = info
#日志保存天数
log_max_days = 3
#连接池数量,如果有很多链接最好弄高点,默认5
max_pool_count = 5
#后台仪表盘,登录后服务端可查看frp状态
dashboard_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
#要转发的端口(可写多个,对应下面的转发组)
vhost_tcp_port01=7100
vhost_tcp_port02=260
vhost_tcp_port03=270
vhost_tcp_port04=280
#心跳连接,若不加60s就自动断连
heartbeat_timeout = 30
注意:vhost_xxx_port字段没有实际意义,其只是描述该端口是干嘛的
后台启动frps:nohup ./frps -c frps.ini &
注意:-c表示指定配置文件。
仪表盘
前言:我们将服务端启动后就可以通过 Dashboard 来方便的查看 FRP 的状态以及代理统计信息展示。
注意:仪表盘的用户名密码就在frps.ini的配置文件中
- 用户名:dashboard_user
- 密码:dashboard_pwd
访问仪表盘:服务器公网ip:dashboard_port
Frp配置客户端
下载好frp安装包:https://github.com/fatedier/frp/releases
注意:下载后缀为windows__amd64的最新版,并解压在电脑的文件中。
文件目录
注意:将文件名为frps的文件删除。
frpc.ini配置文件
[common]
#服务器的公网ip,网址也行
server_addr = 198.44.165.183
#frps与frpc交互用的端口,记得关闭防火墙
server_port = 7000
#设置token,对应frps
privilege_token = 12345678
#日志路径
log_file = ./frps.log
#日志级别
log_level = info
#日志保存天数
log_max_days = 3
#心跳连接
heartbeat_timeout = 30
[ssh]
#连接类型
type = tcp
#被访问的本机IP
local_ip = 192.168.1.14
#被访问的端口
local_port = 8080
#监听的服务器端的端口
remote_port = 7100
#是否加密信息
use_encryption = true
#是否压缩信息
use_compression = true
#限制该隧道的带宽,单位为KB或MB
bandwidth_limit = 1MB
#一次映射多个端口写法
[range:top]
type = tcp
local_ip = 192.168.1.14
local_port = 230,240,250
remote_port = 260,270,280
理解:
- 外网设备访问公网IP的7100端口,那么就会跳转到内网本机的8080端口
- 默认情况下只要知道 FRP 服务端开放的端口,任意 FRP 客户端都可以随意在服务端上注册端口映射,因此需要token这个参数,只有知道该token的客户端才可以在服务端上注册端口映射
- 中括号内的英文只是为了标识作用,没有实际意义;其可以写多组,一组代表要转发一组端口
- 写多组端口转发后,那么在服务端应该配置要转发的端口(vhost_xxx_port)
- 一次映射多个端口时,映射顺序是一一对应的
配置完成后,在当前目录进入cmd,执行以下指令
frpc.exe -c frpc.ini