最近 Cloudflare 默认启用 ECH,它会导致代理软件通过嗅探 SNI 实现的域名分流功能失效,本文通过禁用 ECH 来解决此问题。另外也可配置代理软件的 DNS 查询规则让其拒绝 HTTPS
记录以达到禁用 ECH 的效果,但本文只讨论 Chromium/Chrome。
编辑注册表(Chrome&Windows)
Windows 用户可创建一个 ech.ps1
脚本,然后右键通过管理员权限运行它。
$PATH = "HKLM:\\Software\Policies\Google\Chrome\"
$NAME = "EncryptedClientHelloEnabled"
if (-not(Test-Path $PATH)) {New-Item -Path $PATH -Force}
New-ItemProperty -Path $PATH -Name $NAME -Value 0x0 -Force
手动编辑注册表
如果希望手动修改,编辑注册表 Software\Policies\Google\Chrome\EncryptedClientHelloEnabled
将其更改为 0x0
即可。
添加策略文件(Linux)
对于 Chromium&Ubuntu:mkdir -p /etc/chromium-browser/policies/managed
其它 Chromium&Linux: mkdir -p /etc/chromium/policies/managed
对于 Chrome&Linux:mkdir -p /etc/opt/chrome/policies/managed
之后添加 ech.json
配置文件到新创建的 managed
目录里,注意不要忘记配置权限。
{
"EncryptedClientHelloEnabled": false
}
配置权限
# template
# chmod -R 755 /etc/<Your config directory>
# for Chromium&Ubuntu
chmod -R 755 /etc/chromium-browser
# for Other Chromium&Linux
chmod -R 755 /etc/chromium
# for Chrome&Linux
chmod -R 755 /etc/opt/chrome
验证策略
访问 chrome://policy/ 验证是否成功配置策略,下图为成功配置本文所述策略的状态。