跳到正文
查个机

泄露检测

安全 DNS 怎么开

首发 查于 第 1 版阅读约 6 分钟

要点

DNS 污染怎么解决,取决于查询从哪出去:开着代理先改客户端的 DNS,没开代理的设备再改系统或浏览器的安全 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 劫持打开。

各客户端的菜单名字不一样,但都有下面几项,找对名字即可:

  1. DNS 接管:客户端在本机起一个 DNS 服务,替系统回答查询。不开它,系统照旧问本地运营商。
  2. 上游 DNS:客户端自己去问的服务器。填加密地址,例如 https://1.1.1.1/dns-query 或 https://dns.google/dns-query;国内域名走直连的,可以另给它们配一个国内的加密 DNS。
  3. fake-ip 模式:客户端先回一个 198.18 开头的假地址,真正的解析交给节点那一端。浏览器和本地运营商都看不到真实查询。少数需要真实地址的程序(局域网发现、部分游戏)要加进排除列表。
  4. 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 一栏没有本地运营商才算改好。

  1. 清系统缓存和浏览器缓存,三个系统各自的命令列在 DNS 检测 一页的对照表里。
  2. 完全退出浏览器再打开。
  3. 回 DNS 泄露检测 用 ipleak.net 或 browserleaks 再测一次,对照判断表。
  4. 顺手按一次 WebRTC 泄露 页面上的按钮,三条泄露路径一起确认。

问:什么时候改 DNS 也没用?

短答:答案已经对了,连接却仍被重置或超时,那问题在连接这一层,不在 DNS。

用加密 DNS 拿到的地址和网站真实地址一致,浏览器仍提示连接被重置,对照 err_connection_reset;出口地区本身不被服务接受,DNS 改得再干净也绕不过去,要回到 IP 纯净度查询 看出口读数。

常见问题

开了安全 DNS,还需要代理吗?

两者管的事不同。安全 DNS 只管域名查询不被偷看、不被改,网页内容仍从你家宽带直接连过去;出口 IP 要换到别的地区,靠的是代理。

系统 DNS 改成境外公共 DNS 以后,部分国内网站变慢了,怎么办?

境外 DNS 会把国内网站解析到离它近的 CDN 节点,绕了远路。把系统 DNS 改回国内的加密 DNS,境外域名交给代理客户端去解析,两边各走各的。

DoH 和 DoT 选哪个?

看哪个能用。DoT 用 853 端口,单独一个端口,容易被网络环境整体拦掉;DoH 走 443 端口,和普通网页流量混在一起。浏览器只支持 DoH,Linux 的 systemd-resolved 只支持 DoT。

本页第 (1)
  • :首发

网站地图 · 机场推荐