FRP隧道代理研究与优化

FRP:frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。

URL:https://github.com/fatedier/frp

最新的0.44版:

1.plugin_key_path如果和plugin_crt_path对于插件https2https和为空,则使用自动生成的证书https2http。
2.服务器仪表板支持 TLS 配置。

特点:

1.客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。
2.采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。
3.代理组间的负载均衡。
4.端口复用,多个服务通过同一个服务端端口暴露。
5.多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 6.客户端完成某些工作。
7.高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。
8.服务端和客户端 UI 页面

FRP代理类型:

类型 描述
tcp 单纯的 TCP 端口映射,服务端会根据不同的端口路由到不同的内网服务。
udp 单纯的 UDP 端口映射,服务端会根据不同的端口路由到不同的内网服务。
http 针对 HTTP 应用定制了一些额外的功能,例如修改 Host Header,增加鉴权。
https 针对 HTTPS 应用定制了一些额外的功能。
stcp 安全的 TCP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。
sudp 安全的 UDP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。
xtcp 点对点内网穿透代理,功能同 stcp,但是流量不需要经过服务器中转。
tcpmux 支持服务端 TCP 端口的多路复用,通过同一个端口访问不同的内网服务。

1. 了解目录:

作者工具的帮助手册:https://gofrp.org/docs/overview/

大概分析了一下它的内容:
Cmd:命令行模式
Conf:配置文件示例
Pkg:主要文件
Web:web模式

2. 工作模式

客户端:(frpc) 加载配置:(frpc.ini)
服务端:(frps) 加载配置:(frps.ini)

3. 使用

命令:
(linux)
./frps -c frps.ini
./frpc -c frpc.ini
(windows)
frps.exe -c frps.ini
frpc.exe -c frpc.ini

二开:
TLS加密

tlsenable = true #frpc.ini中加入

传输压缩

use_encryption = true
use_compression = true #frpc.ini中加入,开启tls不必进行传输压缩

信息修改

新版:\frp-dev\pkg\msg\msg.go
旧版:\frp\models\msg\msg.go
Version string json:"NS_learn"
Hostname string json:" NS_ip"
Os string json:" NS_0s"
Arch string json:" NS_ac"
User string json:" NS_username"
PrivilegeKey string json:" NS_pKEY"
Timestamp int64 json:" NS_time"
RunId string json:" NS_rID"
Metas map[string]string json:" NS_m"

流量特征修改

新版:\pkg\util\net\tls.go
旧版:\frp\utils\net\tls.go
var (FRP_TLS_HEAD_BYTE = 0x16 # 0x16十六进制修改)
c.Write([]byte{byte(FRP_TLS_HEAD_BYTE),byte(0x71),byte(0x72)}) #修改
sc, r := gnet.NewSharedConnSize(c, {4}) #4修改
buf := make([]byte, {3}) #3修改
if n == 1 && int(buf[0]) == FRP_TLS_HEAD_BYTE { #1修改

写死配置

pkg\config\client.go # frpc
pkg\config\server.go # frps

(根据自己想要的配置来进行写死)

GO编译

set GOARCH=amd64
set GOOS=linux
go build main.go

效果

在这里插入图片描述

优化FRP-Github链接

https://github.com/CllmsyK/nsfrp_0.45_amd64

使用

目标:nsfrp_0.44.exe
VPS:./nsfrp_0.44_mad64

拓展方法
方法一:远程加载frpc.ini(配置隐藏)

缺点:看命令日志会暴露一个web服务端,对流量做分析仔细点还是能看到
优点:隐藏配置文件,给溯源团队增加工作量
使用:

思考:配置文件只是用于加载,通过快速打点获取公网上的任何一台web服务,将配置文件上传,再通过公网得配置文件来加载进去frpc.exe中,接着把该配置文件从该web服务器上删除,如果再给该vps Ip做个CDN隐藏,是否能让溯源团队工作量增加。
在这里插入图片描述

方法二:购买CDN域名来替代真实IP(有钱即可)
方法三:通过域前置隐藏真实IP(未实现)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cllmsy_K

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值