最后更新于:2025年12月

很多人认为只要开启了 VPN 或科学上网工具,自己的网络活动就完全匿名和安全了。这是一个危险的误解!
即使你使用了最顶级的代理服务,如果配置不当,仍然可能发生 DNS 泄漏(DNS Leak),导致你的真实位置和浏览记录暴露。
什么是 DNS 泄漏?
DNS 是什么?
DNS(Domain Name System),域名系统,是互联网的"电话簿"。
当你访问 www.google.com 时:
- 浏览器需要知道这个域名对应的 IP 地址
- 它会向 DNS 服务器发起查询
- DNS 服务器返回 IP 地址(如
142.250.80.46) - 浏览器通过这个 IP 访问网站
DNS 泄漏的危害
正常情况下,DNS 查询应该通过你的 VPN 隧道发送到代理服务器的 DNS。但如果发生泄漏:
❌ 错误流程(发生泄漏):
你的设备 → [本地 DNS 查询] → 运营商 DNS(暴露真实位置)
↓
VPN 隧道 → 代理服务器 → 目标网站
✅ 正确流程(无泄漏):
你的设备 → VPN 隧道 → 代理服务器 → [DNS 查询] → 安全 DNS
↓
目标网站
泄漏后果:
- 🔴 运营商知道你访问了哪些网站(即使内容加密)
- 🔴 政府机构可以监控你的网络行为
- 🔴 广告商可以追踪你的兴趣偏好
- 🔴 在某些地区可能导致法律风险
如何检测 DNS 泄漏?
方法一:使用在线检测工具(推荐)
1. dnsleaktest.com
- 确保你的 VPN/代理已开启
- 访问 dnsleaktest.com
- 点击 “Standard test” 或 “Extended test”
- 查看结果:
- ✅ 安全:只显示 VPN 服务商的 DNS
- ❌ 泄漏:显示你的 ISP(运营商)DNS
2. ipleak.net
- 访问 ipleak.net
- 页面会自动检测:
- IP 地址(应该是代理服务器的)
- DNS 服务器
- WebRTC 泄漏
- 向下滚动查看详细信息
3. browserleaks.com/ip
专门检测浏览器层面的泄漏,包括:
- DNS 泄漏
- WebRTC 泄漏
- Canvas 指纹
- 时区泄漏
方法二:命令行检测(高级用户)
Windows:
nslookup google.com查看返回的 DNS 服务器地址,如果是你的运营商 DNS,说明发生泄漏。
Mac/Linux:
dig google.com查看 SERVER 字段。
DNS 泄漏的常见原因
1. 未配置代理 DNS
很多新手只设置了 HTTP/SOCKS 代理,但没有配置 DNS 转发。
2. WebRTC 泄漏
浏览器内置的 WebRTC 功能可能绕过代理,直接暴露真实 IP。
3. IPv6 泄漏
如果你的代理只处理 IPv4 流量,IPv6 请求可能直连。
4. 应用程序绕过
某些应用(如游戏、P2P 软件)可能不使用系统代理设置。
5. DNS 缓存
操作系统和浏览器会缓存 DNS 记录,可能在切换代理后仍使用旧 DNS。
解决方案:彻底防止 DNS 泄漏
方案一:v2rayN 中配置防泄漏(推荐)
步骤 1:启用内置 DNS
- 打开 v2rayN
- 点击 “设置(V)” → “参数设置(P)”
- 切换到 “DNS 设置” 标签
- 勾选 “启用 DNS”
- DNS 服务器选择:
- 国外 DNS:
8.8.8.8(Google)、1.1.1.1(Cloudflare) - 国内 DNS:
223.5.5.5(阿里)、119.29.29.29(腾讯)
- 国外 DNS:
步骤 2:配置路由规则
- 在 DNS 设置中,找到 “路由域名”
- 选择策略:
- IPIfNonMatch(推荐):IP 不匹配时使用域名路由
- AsIs:仅使用域名路由
- IPOnDemand:优先使用 IP 路由
步骤 3:禁用系统 DNS
- 打开 Windows 网络设置
- 找到当前使用的网络连接
- 右键 → “属性”
- 双击 “Internet 协议版本 4 (TCP/IPv4)”
- 选择 “使用下面的 DNS 服务器地址”
- 填入:
PLAINTEXT
首选 DNS:127.0.0.1 备用 DNS:8.8.8.8首选 DNS:127.0.0.1 备用 DNS:8.8.8.8
方案二:使用 DNS over HTTPS (DoH)
DoH 将 DNS 查询通过 HTTPS 加密传输,防止中间人窃听。
在浏览器中启用 DoH
Chrome/Edge:
- 地址栏输入:
chrome://settings/security - 找到 “使用安全 DNS”
- 开启开关
- 选择提供商:
- Cloudflare (
1.1.1.1) - Google (
8.8.8.8) - 自定义:
https://dns.alidns.com/dns-query
- Cloudflare (
Firefox:
- 地址栏输入:
about:preferences#privacy - 滚动到 “DNS over HTTPS”
- 选择 “增加保护” 或 “最大保护”
- 选择提供商
在系统中启用 DoH
Windows 11:
- 设置 → 网络和 Internet → 以太网/WiFi
- 点击当前连接的 “硬件属性”
- 找到 “DNS 服务器分配” → 编辑
- 选择 “手动”
- 启用 “DNS over HTTPS (DoH)”
- 填入 DoH 服务器地址
方案三:禁用 WebRTC
WebRTC 可能绕过代理暴露真实 IP。
Chrome/Edge 扩展程序
安装 “WebRTC Network Limiter” 或 “uBlock Origin”:
- 访问 Chrome 网上应用店
- 搜索扩展程序
- 点击"添加至 Chrome"
- 在扩展设置中启用 WebRTC 阻止
Firefox 内置设置
- 地址栏输入:
about:config - 搜索:
media.peerconnection.enabled - 双击改为
false
方案四:禁用 IPv6
如果你不需要 IPv6,可以直接禁用以避免泄漏。
Windows:
- 控制面板 → 网络和共享中心
- 点击当前网络连接
- 点击 “属性”
- 取消勾选 “Internet 协议版本 6 (TCP/IPv6)”
- 点击确定
Mac:
- 系统偏好设置 → 网络
- 选择当前连接 → 高级
- 切换到 TCP/IP 标签
- 配置 IPv6:“仅本地链接”
方案五:清理 DNS 缓存
每次修改 DNS 设置后,务必清理缓存。
Windows:
ipconfig /flushdnsMac:
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponderLinux:
sudo systemd-resolve --flush-cachesChrome 浏览器:
- 地址栏输入:
chrome://net-internals/#dns - 点击 “Clear host cache”
推荐的 DNS 服务器列表
国际 DNS(适合代理使用)
| 提供商 | IPv4 | IPv6 | DoH 地址 |
|---|---|---|---|
| Cloudflare | 1.1.1.1, 1.0.0.1 | 2606:4700:4700::1111 | https://cloudflare-dns.com/dns-query |
| 8.8.8.8, 8.8.4.4 | 2001:4860:4860::8888 | https://dns.google/dns-query | |
| Quad9 | 9.9.9.9, 149.112.112.112 | 2620:fe::fe | https://dns.quad9.net/dns-query |
| OpenDNS | 208.67.222.222, 208.67.220.220 | - | https://doh.opendns.com/dns-query |
国内DNS(适合直连使用)
| 提供商 | IPv4 | IPv6 | DoH 地址 |
|---|---|---|---|
| 阿里云 | 223.5.5.5, 223.6.6.6 | 2400:3200::1 | https://dns.alidns.com/dns-query |
| 腾讯云 | 119.29.29.29, 182.254.116.116 | - | https://doh.pub/dns-query |
| 114DNS | 114.114.114.114, 114.114.115.115 | - | - |
| 百度DNS | 180.76.76.76 | - | - |
DNS 选择建议
- 代理流量:使用国际 DNS(Cloudflare/Google)
- 直连流量:使用国内 DNS(阿里/腾讯)
- 注重隐私:优先选择支持 DoH 的 DNS
- 追求速度:选择距离你地理位置近的 DNS
TUN 模式下的 DNS 配置
如果你已经开启了 TUN 模式(见上一课),DNS 配置会更加简单:
- v2rayN 会自动接管所有 DNS 查询
- 确保在 TUN 设置中启用了 “Fake DNS”
- Fake DNS 会在本地模拟 DNS 响应,进一步提升速度
验证方法:
nslookup google.com返回的服务器应该是 127.0.0.1 或类似本地地址。
完整检查清单
在确认你的配置无误后,按照以下清单逐项检查:
- 运行 dnsleaktest.com 测试,确认无泄漏
- 运行 ipleak.net 测试,确认 IP 和 DNS 一致
- 浏览器已启用 DoH
- WebRTC 已禁用或限制
- IPv6 已禁用(如不需要)
- DNS 缓存已清理
- v2rayN DNS 设置已启用
- 路由规则配置正确(分流国内外)
- 定期(每月)重新测试一次
高级技巧:自建 DNS 服务器
对于极客用户,可以考虑自建 DNS 服务器:
方案一:AdGuard Home
- 开源免费
- 支持广告拦截
- 可部署在路由器或 NAS 上
- 官网:adguard.com
方案二:Pi-hole
- 轻量级
- 树莓派友好
- 社区活跃
- 官网:pi-hole.net
方案三:CoreDNS
- Go 语言编写
- 高度可定制
- 适合技术人员
- GitHub:coredns/coredns
总结
DNS 泄漏是一个容易被忽视但极其重要的安全问题。通过本文的学习,你应该已经掌握:
✅ DNS 泄漏的原理和危害
✅ 如何检测 DNS 泄漏
✅ 多种防止泄漏的方法
✅ 推荐的 DNS 服务器列表
✅ 完整的检查清单
关键要点:
- 🔐 始终使用加密 DNS(DoH/DoT)
- 🔐 定期检测是否泄漏
- 🔐 不要依赖单一防护措施
- 🔐 保持软件和系统更新
记住:安全是一个持续的过程,而不是一次性的配置。定期检查和维护,才能确保你的隐私真正得到保护。
👉 下一课: iOS/Android 手机端科学上网完整教程
在下一课中,我们将讲解如何在手机上配置科学上网,包括 Shadowrocket、Quantumult X、Clash for Android 等主流客户端的使用教程。
常见问题 FAQ
Q: 使用公共 DNS 会影响速度吗?
A: 优质公共 DNS(如 Cloudflare、Google)通常比运营商 DNS 更快更稳定。
Q: DoH 会降低网速吗?
A: 几乎不会。HTTPS 握手开销很小,且现代浏览器有优化。
Q: 为什么我禁用了 WebRTC 后某些网站无法视频通话?
A: WebRTC 用于实时通信。可以在需要时临时启用,使用后再次禁用。
Q: IPv6 真的有必要禁用吗?
A: 如果你的代理不支持 IPv6,建议禁用。否则可能发生泄漏。
Q: 多久检测一次 DNS 泄漏?
A: 建议每月检测一次,或在更换机场/客户端后立即检测。