泄露检测
安全 DNS 怎么开
要点
问:三处开关各管哪一段查询?
短答:客户端管走代理的那部分,系统管没被客户端接住的程序,浏览器的开关只管它自己。
| 位置 | 管哪些查询 | 什么时候改它 |
|---|---|---|
| 代理客户端的 DNS 设置 | TUN 模式下整台电脑的查询;系统代理模式下客户端为分流做的查询 | 开着代理测出泄露或污染时,先改这里 |
| 系统 DNS | 没被客户端接管的所有程序 | 不开 TUN、或这台设备不装代理时 |
| 浏览器的安全 DNS | 只有这个浏览器 | 只想让浏览器单独加密 |
安全 DNS[概念]用 HTTPS(DoH)或 TLS(DoT)包起来的域名查询。① 路上的设备看不到查了什么,也改不了答案;② 它不改变网页从哪个出口连出去。参见:DoH、DoT。
DoH[协议]DNS over HTTPS,走 443 端口,看起来和访问网页一样。浏览器的安全 DNS 开关用的就是它。
DoT[协议]DNS over TLS,走 853 端口。Linux 的 systemd-resolved 和安卓的「私人 DNS」用的是它。
问:代理客户端里改哪几个开关?
短答:打开 DNS 接管,上游填加密 DNS;TUN 模式下再把 DNS 劫持打开。
各客户端的菜单名字不一样,但都有下面几项,找对名字即可:
- DNS 接管:客户端在本机起一个 DNS 服务,替系统回答查询。不开它,系统照旧问本地运营商。
- 上游 DNS:客户端自己去问的服务器。填加密地址,例如
https://1.1.1.1/dns-query或https://dns.google/dns-query;国内域名走直连的,可以另给它们配一个国内的加密 DNS。 - fake-ip 模式:客户端先回一个 198.18 开头的假地址,真正的解析交给节点那一端。浏览器和本地运营商都看不到真实查询。少数需要真实地址的程序(局域网发现、部分游戏)要加进排除列表。
- DNS 劫持(TUN 选项):把发往任何服务器 53 端口的查询都截进客户端。程序里手动写死了 DNS 的,也会被收进来。
问:系统 DNS 怎么改成加密的?
短答:Windows 11 的网络设置里能直接开 DoH;macOS 要装描述文件;Linux 改 systemd-resolved 的配置开 DoT。
Windows 11:设置 → 网络和 Internet → 以太网或 WLAN → DNS 服务器分配 → 编辑 → 手动 → 打开 IPv4 → 上面那个 DNS 框填 1.1.1.1、下面那个填 1.0.0.1,两个框下方的「DNS over HTTPS」选「开(自动模板)」→ 保存。也可以用 PowerShell 先改地址(接口名用 Get-NetAdapter 查):
Set-DnsClientServerAddress -InterfaceAlias "WLAN" -ServerAddresses 1.1.1.1,1.0.0.1
# 撤销:改回自动获取
Set-DnsClientServerAddress -InterfaceAlias "WLAN" -ResetServerAddresses
macOS:打开系统设置的「网络」,点正在用的那个连接,进「详细信息」里的 DNS 一栏,可以加服务器地址,但这里只能填普通 DNS。系统层的加密 DNS 要安装 DNS 服务商提供的描述文件(.mobileconfig),装好后在系统设置的搜索框里输入「描述文件」就能找到它,删掉它即撤销。
Linux(systemd-resolved):
sudo tee /etc/systemd/resolved.conf.d/dot.conf <<'EOF'
[Resolve]
DNS=1.1.1.1#cloudflare-dns.com 9.9.9.9#dns.quad9.net
DNSOverTLS=yes
EOF
sudo systemctl restart systemd-resolved
resolvectl status
# 撤销
sudo rm /etc/systemd/resolved.conf.d/dot.conf && sudo systemctl restart systemd-resolved
resolved.conf.d 目录不存在时先用 sudo mkdir -p 建出来;地址后面 # 号接的是服务器的证书名,DoT 用它核对对方身份。
问:浏览器的安全 DNS 开关在哪?
短答:Chrome、Edge、Firefox 都在隐私或安全设置里,Safari 没有单独的开关。
| 浏览器 | 路径 | 怎么选 |
|---|---|---|
| Chrome | 设置 → 隐私和安全 → 安全 → 使用安全 DNS | 选自定义,挑一家服务商 |
| Edge | 设置 → 隐私、搜索和服务 → 安全性 → 使用安全的 DNS 指定如何查找网站的网络地址 | 选择服务提供商 |
| Firefox | 设置 → 隐私与安全 → 基于 HTTPS 的 DNS | Increased Protection 或 Max Protection |
| Safari | 跟随系统 | 按上一节改系统 |
开着代理时要注意两点。系统代理模式下,走代理的网页由节点那一端解析,浏览器这个开关只影响直连的网页。TUN 的 fake-ip 模式下,浏览器自己用加密 DNS 拿到真实地址后再连,客户端就看不到域名,按域名写的分流规则可能对浏览器失效;遇到这种情况,要么关掉浏览器的安全 DNS,要么在客户端打开域名嗅探。
问:改完怎么确认?
短答:清缓存、重开浏览器,再跑一次泄露检测,DNS 一栏没有本地运营商才算改好。
- 清系统缓存和浏览器缓存,三个系统各自的命令列在 DNS 检测 一页的对照表里。
- 完全退出浏览器再打开。
- 回 DNS 泄露检测 用 ipleak.net 或 browserleaks 再测一次,对照判断表。
- 顺手按一次 WebRTC 泄露 页面上的按钮,三条泄露路径一起确认。
问:什么时候改 DNS 也没用?
短答:答案已经对了,连接却仍被重置或超时,那问题在连接这一层,不在 DNS。
用加密 DNS 拿到的地址和网站真实地址一致,浏览器仍提示连接被重置,对照 err_connection_reset;出口地区本身不被服务接受,DNS 改得再干净也绕不过去,要回到 IP 纯净度查询 看出口读数。