小樱 发表于 2021/8/12 03:27

linux 安装使用frp做BT下载内网穿透踩坑记录 获取用户真实IP

linux 安装使用frp做BT下载内网穿透踩坑记录 获取用户真实IP

踩坑
https://gofrp.org/docs/features/common/realip/ 获取用户真实IP这个功能开启后,如果不支持该协议,则会导致端口穿透失败,关掉就正常了

通过网络抓包,可以发现建立内网穿透连接的过程,frp会发送一个报文到客户端,解密后报文为如下,感觉可以利用这串报文来实现frp获取真实ip以便防止反吸血出问题(可以尝试提交给BT开发者来适配frp),目前客户端显示用户为127.0.0.1,BT汇报客户端监听端口50888
{"proxy_name":"BT Listen TCP","src_addr":"183.50.207.148","dst_addr":"172.30.0.37","src_port":2349,"dst_port":22223,"error":""}
观察字段,172.30.0.37为vps服务器eth0 ip,src_addr为对方真实ip,src_port为对方连接远程端口,dst_port为本机被访问端口,proxy_name为frp客户端中设置的注释名
随后客户端会响应内容到服务端,数据为
{"run_id":"cb4b18c4513d2def","privilege_key":"","timestamp":0}
最终服务端通知客户端交换证书密钥,升级到SSH加密通道进行传输数据(该操作为BT客户端的DHE加密,并非是frp执行了加密传输)

frp如果用作websocket握手阶段,默认请求地址为
http://服务器ip:8000/~!frp

frp用作tcp建立请求握手报文
{"version":"0.37.1","hostname":"","os":"windows","arch":"amd64","user":"","privilege_key":"40dc610c48f590fe85aa11bdd1ab7bb0","timestamp":1628709693,"run_id":"","metas":null,"pool_count":1}
服务器响应
{"version":"0.37.1","run_id":"ddf3ad339579a62d","server_udp_port":8000,"error":""}
总结,,,frp传输默认情况下无任何加密措施,全部数据均为明文传输,会被运营商干扰导致速度变慢
需要在客户端中common字符串增加以下参数强制启用tls加密,此时无法被抓包探测数据内容
tls_enable = true

下方这个代理字段中的参数是无效的,测试0效果存在BUG,请用上方那个tls_enable = true执行加密
use_encryption = true

完美使用版教程:https://bbs.itzmx.com/thread-98648-1-1.html

不可名 发表于 2021/8/28 04:01

{:3041:}{:3020:}
页: [1]
查看完整版本: linux 安装使用frp做BT下载内网穿透踩坑记录 获取用户真实IP