本文章永久分享链接: https://tflow.top/proxy/Protect-online-privacy
以下出现的”XXX”字符均等同于 las, 比如bxxxh即为blash,cxxxh即为魔法。
以下内容与操作均默认仅适用于windows设备,除了开源输入法是适用于全平台的
什么是DNS leak
在互联网中,DNS(域名系统)就像是一本“电话簿”,负责将您输入的网址(如 example.com)翻译为计算机能理解的 IP 地址。
- 正常情况: 您的所有网络请求(包括翻译网址的 DNS 请求)都会通过cxxxh来进行,外界和您的网络运营商只能看到您连接到了cxxxh,看不到您具体在浏览什么网站。
- DNS leak时: 尽管网页流量被加密了,但 DNS 请求却“绕过”了 cxxxh,直接跑去了您本地运营商的服务器进行解析。这就暴露了您正在访问的网站。
DNS leak的原因及复现
在 Windows 7 以上版本的 Windows 操作系统中,系统默认的多宿主名称解析策略会同时向系统内所有网卡发起 DNS 查询请求,cxxxh 无法拦截发给物理网卡的 DNS 查询请求。因此在系统默认配置下,开启虚拟网卡模式,必然出现 DNS leak。
注:本内容含义为从技术层面运营商可以获知你的目标域名,而不是你的运营商一定做了获知你目标域名的操作。
第一步,如下图所示 cxxxh 开启虚拟网卡模式,分流规则选择为全局。


第二步,打开 https://browserleaks.com/dns, 如果 DNS 列表中如下图所示出现中国 DNS 地址,则你的网络环境中存在 DNS leak。

如何关闭多宿主名称解析策略
复制以下指令:
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient" /v DisableSmartNameResolution /t REG_DWORD /d 1 /f
按win+S,搜索 CMD,找到“命令提示符”,点击 以管理员身份运行, 如图所示

将上面的指令粘贴到窗口中并按 回车键 执行。执行完成后,重启电脑即可。
重启完再次 开启虚拟网卡模式,分流规则选择全局,打开 https://browserleaks.com/dns,如果这次不出现中国 DNS 地址则 解决了DNS leak的隐私风险。
解决问题后,记得将分流规则重新选择为规则,从而避免影响国内服务访问。
关闭浏览器QUIC功能
QUIC协议是基于UDP的,它可能会绕过cxxxh劫持发起直连,关闭quic协议对于隐私保护也是很重要的。
以chrome为例,在地址栏输入 chrome://flags, 如图所示将quic的相关设置 关闭。
其他浏览器方法类似,自行google一下寻找关闭QUIC的教程。

使用开源输入法
输入法,尤其是手机端的输入法,一直以来都是隐私问题的重灾区,商业公司开发一款输入法,不是开慈善堂,它们的目的是为了盈利,而资本为了盈利,各种下作手段往往层出不穷,所以,挑选一个干净清爽、不索求用户隐私、并且词库好用的输入法,就显得非常有必要。
RIME是跨平台的开源输入法,在 Windows 平台上叫小狼毫, Mac 平台上叫鼠须管,Android 平台上叫同文输入法,一直以超强的自定义著称,功能上绝对是输入法当中首屈一指的存在,但因为是非营利性的开源作品,没有商业公司的重金投入,在词库上一直有着不大不小的痛点,加上配置的门槛较高,导致 Rime 一直是比较小众的输入法。
彻底关闭国产APP隐私权限
这是最重要的操作,否则即使输入法换成开源,隐私风险也依然没有任何缓解。
比如读取剪切板权限,会让剪切板内的隐私暴露得彻彻底底,国产应用统统都不开启该权限,仅影响XX口令使用。
获取应用列表的权限也要仅为可信的国外软件开放,国内软件统统禁止该权限。
IP规则如何避免DNS leak
当你的cxxxh配置使用了 IP-CIDR 或 GEOIP 规则,cxxxh需要判断当前访问的域名属于哪个 IP。如果IP规则后面没有加上 no-resolve,客户端会向 本地 DNS 发起查询,试图把域名转换成 IP 再进行匹配。这个 DNS 查询会发给你的本地网络服务商 (ISP),导致 DNS leak。
解决方案也很简单,通过在IP规则后添加 no-resolve,可以强制跳过本地 DNS 解析, 但直连IP规则则不需要添加no-resolve,因为直连访问的网站本身无需担心隐私问题。如图所示

开启DNS 劫持和 fake IP
由于 虚拟网卡 对应用是透明的,应用会自行使用系统 DNS 进行解析,这显然属于 DNS leak。为了解决这个问题,可以让 虚拟网卡 在网络层拦截所有发往 53 端口的数据包,并将其导入 cxxxh 的 DNS 模块。要这么做,只需按照 文档 在 TUN 设置中指定:
tun:
dns-hijack:
- any:53
- tcp://any:53
Fake IP 的原理其实也依赖于 DNS 劫持。
具体来说,当应用试图自行向系统 DNS 发起查询时,虚拟网卡 会在网络层拦截所有发往 53 端口的数据包,并将其导入 cxxxh 的 DNS 模块。之后 DNS 模块不会立即解析域名,而是先记录本次查询的域名,并直接返回一个 Fake IP 地址(通常属于 虚拟网卡 网段,如 198.18.0.1/16)。
应用收到这个 Fake IP 后,会向该 IP 发起连接。cxxxh在截获这个连接的同时,可以通过之前记录的 DNS 查询反查出对应的域名。这样,cxxxh就能利用域名规则进行流量分流。
启用 Fake IP 会影响所有需要获取真实 IP 的应用,为避免此类问题,需要获取真实 IP 的域名加入 Fake IP 白名单。常见需要加入白名单的域名如下:
# 黑名单模式表示如果匹配成功则不返回 Fake-IP, 白名单模式时只有匹配成功才返回 Fake-IP
fake-ip-filter-mode: blacklist
fake-ip-filter:
- "+.lan"
- "+.local"
- geosite:private
- geosite:cn
虚拟网卡 场景下必须启用 DNS 劫持,若已经启用了 Fake IP,则无需额外再启用 DNS 劫持。
参考文献