简单记录下 Socks5 Over TLS, HTTPS and HTTP2 隧道代理的建立

1. 首先你需要购买一个域名;

2. 证书的获取:

Linux 下可以用 Certbot 等工具来从 Let’s Encrypt 获取证书;

Windows 下推荐用 Caddy 来获取证书,推荐吧域名服务器临时设为 Cloudflare 的,然后通过 API 让 Caddy 自动获取证书,Caddyfile 简单设置为:

mydomain.com:443
root E:\WWW
gzip
log ../access.log
tls {
dns cloudflare
}

然后直接运行一下 Caddy.exe 就行了,证书储存在 用户名/.caddy 目录下。

3. 创建服务端:

这里就要用到强大的 Gost 了,各类隧道创建方式:

gost -L="http://user:password@:25" -L="http2://user:password@:143?cert=cert.pem&key=key.pem" -L="socks+tls://user:password@:587?cert=cert.pem&key=key.pem" -L="http+tls://user:password@:465?cert=cert.pem&key=key.pem" -logtostderr -v 5

这么一行就依次创建了:一个监听在 25 端口的支持 http-connect 的代理,一个加密的 http2 代理,一个 Socks Over TLS 代理(目前 Surge 支持)和一个 https 代理,user:password 是用户名密码,cert 和 key 分别是上面域名的数字证书的公匙和私匙。

4. 客户端:

http,https 和 socks5 隧道,Chrome 浏览器(或者通过 SwitchyOmeda 扩展)都直接支持,Socks5 over TLS 目前只看到 Surge 直接支持,http2 没看到直接支持的。不过我们可以转换成普通的 http/socks5 代理来用(远程通讯依然是 TLS 或者 HTTP2 加密的),例如:

#转换 https 为 http,监听在本地 7575 端口
gost -L=http://0.0.0.0:7575 -F=http+tls://user:password@mydomain.com:465?cert=cert.pem&key=key.pem
#转换 socks5 over TLS 为 socks5
gost -L=socks://0.0.0.0:7676 -F=socks+tls://user:password@mydomain.com:587?cert=cert.pem&key=key.pem
#转换 http2 为 socks5
gost -L=socks://0.0.0.0:7878 -F=http2://user:password@mydomain.com:143?cert=cert.pem&key=key.pem

这样转换后的代理,是可以通过 redsocks2 来透明代理的。

https://www.quakemachinex.com/blog/?p=244