本文将教你如何快速搭建一个 naiveproxy 代理。
为什么要使用 naiveproxy?
首先贴上大佬对目前能用的翻墙协议的简单评价 。
为什么要使用 naiveproxy? 这个问题,直接摘录 naiveproxy 的 README 就可以回答。
与 naiveproxy 相似的项目还有 trojan。
二者都是使用 TLS 协议穿越 GFW,以减少流量特征,抵抗主动/被动检测以及运营商的 Qos。
如同大佬所说 今天能用的协议就是好协议;但是今天能用不等于明天能用
,所以我们需要早做打算。
快速搭建 Caddy Proxy
本节只是导入,如果想直接进入正文,请点击这里。
安装 Caddy
创建配置文件
example.com { gzip tls i@example.com forwardproxy { basicauth Username Password hide_ip hide_via probe_resistance secert.localhost } }
修改 Username
、Password
、secert
后将上述内容写入 Caddyfile
。
启动 Caddy
如果出现报错,运行 sudo setcap cap_net_bind_service=+ep $(which caddy)
。
如果没有报错,Caddy Proxy 搭建完成。
设置代理
在浏览器中将代理设置为 https://example.com
,然后访问 secert.localhost
,在弹出的提示框中输入 Username
、Password
即可。
到此为止,你已经有了一个可用的 HTTP/2 proxy,但是为什么不直接使用这个 HTTP/2 proxy 呢?
对于这个问题可以阅读项目的 FAQ。
简而言之,TLS-in-TLS 在包长度上会有明显的特征,很容易被 GFW 探测出来然后封杀。
用作者的话来说,NaiveProxy 只是做了以下工作。
NaiveProxy does HTTP Fast CONNECT similar to TCP Fast Open, i.e. send subsequent data immediately after CONNECT. Also, you may have to type in the password for the proxy everytime you open the browser. NaiveProxy sends the password automatically.
搭建 NaiveProxy
下面开始正文,以下演示基于 Debian 9 系统。
安装 libnss3
创建前端网页
cd /tmp/ wget https://github.com/jiashigrsyt/jiashigrsyt.github.io/archive/master.zip unzip master.zip find jiashigrsyt.github.io-master/ -name "*.html" | xargs -n 1 sed -e "s/jiashigrsyt\.github\.io/example.com/g" -i find jiashigrsyt.github.io-master/ -name "*.md" | xargs -n 1 sed -e "s/jiashigrsyt\.github\.io/example.com/g" -i sudo -u www-data cp -r jiashigrsyt.github.io-master/ /var/www/html
仅做演示,请根据自己情况,自行修改,切莫无脑使用。
下载 naiveproxy
cd /tmp wget https://github.com/klzgrad/naiveproxy/releases/download/v71.0.3578.98-2/naiveproxy-v71.0.3578.98-2-linux.tar.xz tar -xf naiveproxy-v71.0.3578.98-2-linux.tar.xz cd naiveproxy-v71.0.3578.98-2-linux/ cp naive /usr/local/bin/
请适当修改下载地址,下载地址请至 latest release 查看。
创建 naiveproxy 配置文件
服务端
客户端
添加 naiveproxy 服务
配置 Caddy
example.com { gzip tls i@example.com root /var/www/html forwardproxy { basicauth Username Password hide_ip hide_via probe_resistance secert.localhost upstream http://127.0.0.1:8080 } }
如需自启,请自行创建服务。
参数调优
将上述内容写入 `/etc/sysctl.d/local.conf
。
使用 NaiveProxy
至 latest release 页面,根据系统下载相应的压缩包,解压。
修改
config.json
文件(参见创建 naiveproxy 配置文件)。在命令行界面,当前目录下运行
./naive config.json
。本地 1080 端口已经监听一个 socks5代理,仿照 Shadowsocks 使用该 socks5代理。