Naive Proxy
👍优点:Naive Proxy的原理和trojan很像,Naive协议消除了客户端的tls指纹和tls-in-tls特征,并且Naive协议基于http2,自带多路复用,对比ws需要频繁握手来讲延迟更低,前面也说过Naive客户端使用chrome浏览器内核作为网络协议栈,从防火墙的角度来看,就像是你在正常的使用正常的谷歌浏览器访问正常的网站
👎缺点:客户端生态不够完善
GFW封锁升级:基于TLS的翻墙工具面临挑战,Naive Proxy暂时安全
自北京时间2022年10月3日起,超过一百名用户报告他们至少有一台基于TLS的翻墙服务器被封锁了。被封锁的服务器使用的协议包括了trojan,Xray,V2Ray TLS+Websocket,VLESS,以及gRPC。还未收到任何naiveproxy被封锁的消息。
封锁先是针对翻墙服务的端口。如果用户在端口被封后,改换了端口,那么整个服务器都会被封锁。需要指出,封锁似乎只是基于端口或IP地址,与翻墙服务有关的域名似乎并没有被加入到GFW的DNS或SNI黑名单中。
尽管大多数用户报告443端口被封,一部分使用非443端口的用户也报告了封锁。尽管大多数用户的服务器在流行的VPS提供商那里(比如),但至少有一位用户位于欧洲的家中的服务器也被封锁了。
在一些案例中(并非全部案例中),封锁是动态的:用户通过浏览器还是可以直接访问翻墙端口,但同一个端口,用翻墙软件就连不通。
所有以上的信息都指向GFW已经可以精准的识别并封锁这些翻墙协议,而并非简单地封锁所有的443端口,或封锁所有的流行机房。
基于以上信息,我推测(但还未进行实证性的测量),这些封锁可能与翻墙软件客户端发出的Clienthello指纹相关。开发者们或许可以考虑采用uTLS。这个论文阅读小组,这篇总结,以及这篇博文都是关于TLS指纹的,也许会有帮助。
准备工作
我实验的操作系统是ubuntu22.04 amd64,如果你使用其他操作系统,在搭建过程中如果和视频的预期效果不同,希望你能自行解决,域名要做好了dns解析绑定到了当前VPS的ip地址
📎相关链接⬇️
VPS购买搬瓦工:https://bwg.bulianglin.com优惠码: BWH3HYATVBJW
域名购买namesilo:https://name.bulianglin.com优惠码:oldtong
SSH工具FinalShell:https://www.hostbuf.com/t/988.html
v2rayN客户端:https://github.com/2dust/v2rayN
naive服务端配置
编译安装caddy+naive:
apt install golang-go
go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
~/go/bin/xcaddy build --with github.com/caddyserver/forwardproxy@caddy2=github.com/klzgrad/forwardproxy@naive
如果第二条指令执行出错,可以尝试执行go env -w GO111MODULE=on 再重试,还不行的话请自行搜索升级go版本方法
vim Caddyfile
Caddyfile配置:
:443, naive.buliang0.tk #你的域名
tls example@example.com #你的邮箱
route {
forward_proxy {
basic_auth user pass #用户名和密码
hide_ip
hide_via
probe_resistance
}
#支持多用户
forward_proxy {
basic_auth user2 pass2 #用户名和密码
hide_ip
hide_via
probe_resistance
}
reverse_proxy <https://demo.cloudreve.org> { #伪装网址
header_up Host {upstream_hostport}
header_up X-Forwarded-Host {host}
}
}
caddy常用指令:
前台运行caddy:./caddy run后台运行caddy:./caddy start停止caddy:./caddy stop重载配置:./caddy reload
caddy配置守护进程(开机自启):https://github.com/klzgrad/naiveproxy/wiki/Run-Caddy-as-a-daemon
自定义端口:
naive如果要用自定义端口,需要使用json的配置方式,新手可以直接跳过
启动方式:./caddy start --config config.json
config.json内容:
//需删除注释内容caddy才能加载
{
"apps": {
"http": {
"servers": {
"srv0": {
"listen": [
":4431" //监听端口
],
"routes": [
{
"handle": [
{
"auth_user_deprecated": "user", //用户名
"auth_pass_deprecated": "pass", //密码
"handler": "forward_proxy",
"hide_ip": true,
"hide_via": true,
"probe_resistance": {}
}
]
},
{
"handle": [
{
"handler": "reverse_proxy",
"headers": {
"request": {
"set": {
"Host": [
"{http.reverse_proxy.upstream.hostport}"
],
"X-Forwarded-Host": [
"{http.request.host}"
]
}
}
},
"transport": {
"protocol": "http",
"tls": {}
},
"upstreams": [
{
"dial": "demo.cloudreve.org:443" //伪装网址
}
]
}
]
}
],
"tls_connection_policies": [
{
"match": {
"sni": [
"naive.buliang0.tk" //域名
]
},
"certificate_selection": {
"any_tag": [
"cert0"
]
}
}
],
"automatic_https": {
"disable": true
}
}
}
},
"tls": {
"certificates": {
"load_files": [
{
"certificate": "/root/a.crt", //公钥路径
"key": "/root/a.key", //私钥路径
"tags": [
"cert0"
]
}
]
}
}
}
}
客户端配置
naive客户端:https://github.com/klzgrad/naiveproxy/releases/latest
客户端配置:
{
"listen": "socks://127.0.0.1:1080",
"proxy": "<https://user:pass@example.com>"
}
使用v2rayN加载naive内核需要将配置文件的log行删除,否则会断流
TLS指纹查看
jarm工具:https://github.com/salesforce/jarm
下载jarm:wget <https://raw.githubusercontent.com/salesforce/jarm/master/jarm.py查看网站jarm指纹:python3> jarm.py naive.buliang0.tk
网络空间资产搜索引擎:https://fofa.info


...