-
Couldn't load subscription status.
- Fork 0
Description
ECH + DoH
接上次提到的发现:CF 的边缘可以处理任意 CF 站点的 ECH 握手,即便 CF 账户面板上关闭了 ECH ,仍可被强制使用。
那么 cloudflare-dns.com 也只是打开小黄云的网站,因此我们使用 Xray-core MitM一下,强制启用 ECH即可。
通过优选 IP 自选 DNS 解析地
使用 CF 的 DoH 服务,客户端也是先连到 CF 的边缘,再由 CF 内部转到同一 CF POP 的递归 DNS 服务器。
访问 Anycast 的 1.1.1.1 可能被路由到延迟高的 CF POP,CF 的 DoH 域名解析出的 Anycast IP 也存在同样问题。
为此可以优选 CF IP,指定目标地区对应的 CF POP,避免被路由到远端节点。
使用著名的滥用工具 CloudflareSpeedTest ,这次就不用跑测速了,只测延迟以及通过 colo 参数筛选 CF POP。
常见且延迟较低的 colo 有:HKG(香港)、NRT(东京)、SIN(新加坡)、SJC(圣何塞)、LAX(洛杉矶)。
通过扫描得到的 IP,即可连上该POP的DNS递归服务器进行解析,只要能扫到的colo,就能自选作为解析地。
优点:
1.无DNS污染。
2.使用ECH,直连穿墙,延迟最低。
3.DoH 查询流量可混入普通 ECH 的 HTTPS 流量,更隐蔽(在不考虑流量指纹的情况下)。
4.可根据自选 IP ,选择延迟最低的递归 DNS 服务器;有需要时可灵活指定 DNS 解析地。
缺点:
1.遗憾的是,Cloudflare的DNS不支持EDNS Client Subnet,而Cloudflare和科赋锐中间隔着太平洋,没有中国大陆的colo。
2.需要自签 CA 证书并导入为受信任根证书;使用结束后记得吊销证书并销毁私钥。
配置与使用方法
1.创建证书xray tls cert -ca -file=mycert
2.手动导入mycert.crt,到受信任的根证书颁发机构
3.修改hosts文件:
(用于跳过解析连到本机xray mitm的443端口,涵盖绝大部分浏览器和客户端使用的CF DoH,浏览器直接开启安全DNS并选择Cloudflare即可,不用手动填DoH URL。)
127.0.0.1 cloudflare-dns.com
127.0.0.1 one.one.one.one
127.0.0.1 chrome.cloudflare-dns.com
127.0.0.1 mozilla.cloudflare-dns.com
127.0.0.1 azure.cloudflare-dns.com
127.0.0.1 opera.cloudflare-dns.com
127.0.0.1 odoh.cloudflare-dns.com
127.0.0.1 1dot1dot1dot1.cloudflare-dns.com
127.0.0.1 security.cloudflare-dns.com
127.0.0.1 family.cloudflare-dns.com
填写echConfigList方法
1.选取的域名,首先不能被DNS污染,其次得可以正常获取HTTPS记录中ECH config值
例如:
gitlab.io
ai.com
www.nslookup.io
esm.sh
cloudflare.dev
research.cloudflare.com
pq.cloudflareresearch.com
cloudflarechallenge.com
欢迎补充
2.选取的DNS解析方式和DNS服务器,没有限制,能够解析上述域名并可以获取ECH config值即可,udp,国内DoH,都可以,因为是fronting,解析的不是你真实访问的网站
配置文件:
{
"log": {
"loglevel": "none",
"dnsLog": false,
"access": "none"
},
"inbounds": [
{
"protocol": "tunnel",
"listen": "127.0.0.1",
"port": 443,
"settings": {
"port": 443,
"network": "tcp,udp",
"followRedirect": true
},
"streamSettings": {
"security": "tls",
"tlsSettings": {
"alpn": ["h3", "h2", "http/1.1"], //暂且这么填,虽然没效果,但CFDoH是支持h3
"certificates": [
{
"usage": "issue",
"certificateFile": "mycert.crt", //自签CA证书,放到指定位置
"keyFile": "mycert.key" //自签CA私钥,放到指定位置
}
]
}
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {
"redirect": "###########################:443", //填写自选IP,注意ipv6加方括号
"domainStrategy": "ForceIP"
},
"streamSettings": {
"security": "tls",
"tlsSettings": {
"serverName": "fromMitM",
"verifyPeerCertInNames": ["fromMitM"],
"alpn": ["fromMitM"],
"allowInsecure": false,
"echConfigList": "ai.com+udp://9.9.9.9", //参考echConfigList填写方法
"echForceQuery": "full",
"fingerprint": "chrome"
}
}
}
]
}一个inbound,一个outbound,完了,就是上次ECH fronting的配置的一部分,单独只做DoH服务
这下压力全部给到cloudflare-ech.com这个outter SNI上了。。。。。
欢迎转载传播改进,一切随意,无需注明出处XD