从Net4People的一篇Issue了解到,本次被封禁的协议包括Trojan、Xray、V2Ray TLS+Websocket、VLESS、gRPC。采用uTLS客户端连接代理服务器后,伪装成chrome指纹,暂时未发现端口封禁的情况。
由于NaïveProxy 使用 Chromium 的网络堆栈来伪装流量绕过GFW检测,所幸逃过一劫。现提供一种基于Docker搭建NaïveProxy服务器的思路,本文所涉及的服务端工具有Caddy、Docker、docker-compose ,客户端工具有NaïveProxy、V2RayN
Docker相关环境部署
Docker环境部署参照Docker Engine installation overview | Docker Documentation
docker-compose工具安装
从Releases · docker/compose选择VPS所对应的docker-compose文件下载,笔者选择的是
docker-compose-linux-x86_64重命名文件为docker-compose,并赋予运行权限
chmod +x docker-compose将docker-compose移动到
/usr/local/bin目录下
Docker镜像编译
这里提供一份Dockerfile文件
FROM golang:alpine
WORKDIR /app
RUN go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
RUN xcaddy build --with github.com/caddyserver/forwardproxy@caddy2=github.com/klzgrad/forwardproxy@naive
RUN chmod +x caddy
FROM caddy:alpine
COPY --from=0 /app/caddy /usr/bin/caddy新建文件夹caddy_docker,在此文件夹下创建文件Dockerfile并写入我所提供的配置,然后在caddy_docker文件夹下运行
docker build -t caddy .此命令运行成功后会生成名为caddy的镜像文件。
由于编译过程中会生成约2GB左右的中间镜像,所以得确保VPS剩余磁盘空间有2G以上,生成完成后通过docker image ls可以查看到一个没有tag的镜像,大小约2G,可以用docker rmi [Image_ID]删除该镜像释放空间,其中[Image_ID]为临时镜像的ID。
当然你也可以直接采用笔者编译好的docker镜像,直接pull下来就行
docker pull s0ph0n/caddy:latest原理: 由于caddy不能采用官方提供的版本,需自行编译,参考naiveproxy Wiki可知,需要包含naïve的caddy forwardproxy分支编译的Caddy v2才会具有forward_proxy的相关功能
服务端配置
在刚才的caddy_docker文件夹下新建两个文件写入以下信息
Caddyfile
:443 [你的域名]:443 {
tls [你的邮箱]
route {
forward_proxy {
basic_auth [用户名] [密码]
hide_ip
hide_via
probe_resistance
}
root * /usr/share/caddy
file_server
}
}
docker-compose.yml
version: '3'
#这里的image如果采用笔者提供的镜像,应该是s0ph0n/caddy:latest
services:
caddy:
image: caddy
privileged: true
container_name: caddy
restart: always
tty: true
ports:
- 80:80
- 443:443
volumes:
- ./data:/data
- ./Caddyfile:/etc/caddy/Caddyfile上述域名、用户、密码、邮箱需要换成自己的,不带方括号,然后运行docker-compose up -d即可成功运行服务端,如果想将伪装网站换成自己的,需要将网站目录挂载到container下的/usr/share/caddy
客户端配置
本次采用的客户端为NaïveProxy、V2RayN
从Releases · 2dust/v2rayN下载最新版的
V2RayN.zip和V2RayN-core.zip,解压V2RayN.zip,并将V2RayN-core.zip解压后覆盖解压后的V2RayN.zip从Releases · klzgrad/naiveproxy,下载
win-x64版本的压缩文件,解压后找到naive.exe放入V2RayN根目录创建
config.json文件,内容如下{ "listen": "socks://127.0.0.1:8088", "proxy": "https://[用户名]:[密码]@[你的域名]", "log": "" }其中用户名,密码,域名填你自己之前在
Caddyfile里面配置的,不带方括号开启V2RayN,依次进入
服务器→添加自定义配置服务器→别名(随便写)→浏览(选择写好的config.json文件)→core类型(navieproxy)→socks端口(8088)→确定右键屏幕右下角V字小图标
系统代理→自动配置系统代理
至此,服务端与客户端配置完成。