Naive Proxy

👍优点:Naive Proxy的原理和trojan很像,Naive协议消除了客户端的tls指纹和tls-in-tls特征,并且Naive协议基于http2,自带多路复用,对比ws需要频繁握手来讲延迟更低,前面也说过Naive客户端使用chrome浏览器内核作为网络协议栈,从防火墙的角度来看,就像是你在正常的使用正常的谷歌浏览器访问正常的网站

👎缺点:客户端生态不够完善

GFW封锁升级:基于TLS的翻墙工具面临挑战,Naive Proxy暂时安全

自北京时间2022年10月3日起,超过一百名用户报告他们至少有一台基于TLS的翻墙服务器被封锁了。被封锁的服务器使用的协议包括了trojanXrayV2Ray TLS+WebsocketVLESS,以及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