校园网环境下的DNS泄露与隐私保护

Abstract

每一位理工科专业的学生,都有连接世界互联网的需求。在校园范围内,无论是使用校园网还是手机流量连接互联网,都有可能存在隐私泄露的隐患。而问题的源头常见于DNS环节:DNS 查询可能被网络提供方记录,造成隐私暴露风险。本文将基于校园网环境下,探讨不同上网配置造成的DNS泄露情况,以此给出应对DNS泄露的解决方案。实验表明,DNS泄露问题普遍存在,完全规避 DNS 泄露在复杂网络环境下具有一定难度。使用clash内核衍生出的代理软件,解决DNS泄露较为复杂;而其他分流简单的软件如nekoray则相对容易。文末给出了不同软件的使用建议。

Introduction

科学上网时,传输层使用TCP链接代理服务器,在应用层上使用各类加密协议。因此理论上,网络监管者只能看到用户与代理服务器持续的TCP链接,但是看不到访问的实际网站,包括使用的协议、网站的域名、传输的内容等。尽管可以通过流量特征等判断出存在科学上网的行为,但访问内容的隐私仍然是有保证的。

在解析域名时,要向DNS服务器发起查询请求,获得服务器的ip地址。理性的情况当然是:访问国内域名,使用国内最快的DNS服务器(如运营商DNS,校园网DNS);访问海外域名,由代理服务器代理,使用海外DNS。DNS查询不会只使用一个DNS服务器,而是查询多个DNS服务器,选取最快响应的结果。这就导致了严重的问题:解析海外域名时,代理软件不只向海外DNS查询,同时也把请求发送给了国内的DNS,这也就是DNS泄露。

DNS泄露会导致严重的隐私问题:

  • 校园网(CERNET)、运营商会知道你访问的海外网站,具体到网站域名。(比如你的导员

  • 海外网站(如netfix)可判断你在科学上网,拒绝为你提供服务。

图1 理想DNS解析方式

图2 DNS泄露

判断自己是否存在DNS泄露,可以访问下面两个网站,可尝试规则模式和全局模式:

browserscan: https://www.browserscan.net/zh/dns-leak

browserleaks : https://browserleaks.com/dns

判断标准:网站检测到的DNS中,只要存在中国大陆DNS服务器,则存在DNS泄露。

下面的图展示了DNS泄露:

图3 DNS泄露示例

如上图,检测结果里出现了大陆DNS,并且该DNS就是学校里面的街道名称。即访问海外域名的同时,也把请求发给了学校的DNS,造成了DNS泄露。在学校范围内,校园网(教育网)和通讯运营商之间存在合作关系,最终出口服务器仍然有学校参与管理。因此无论使用校园网还是手机流量,DNS泄露后域名解析都可被校方记录。

目前常用的代理软件仍然是clash主流。clash作者宣布停更后,社区转向了mihomo内核。本文只考虑mihomo版本,并同时与sing-box内核的nekoray(nekobox)比较。clash 与 sing-box 尽管不是最新的代理内核,但其可在Windows、Android、软路由上简易安装和配置。

Implements

实验分为软路由和客户端两部分。在软路由方案下,使用openclash(mihomo)插件尝试不同的配置;在客户端方案下,Windows 使用 Clash Verge Rev(mihomo)、nekobox(sing-box),Android使用Flclash(mihomo)、nekoray(sing-box)。

表1 测试方案

判别DNS泄露的标准是访问上文提到的两个检测网站,出现大陆DNS则存在泄露。为了区别DNS泄露的程度,会记录下每次检测的DNS服务器的数量、ISP、Location数,并着重记录是否存在校园网DNS。

软路由方案

以下均在openclash Fake-IP模式下。

  • testA-1:原生设置,rule模式。
  • testA-2:testA-2下,rule改成global。
  • testA-3:自定义上游DNS, 分流不同请求,rule模式。
  • testA-4:testA-3下,rule改成global。

客户端方案

以下方案均进行双端测试。

  • testB-1:mihomo默认设置,rule模式。
  • testB-2:testB-1下,rule改成global。
  • testB-3:sing-box默认设置(开启Fake-IP),绕过大陆。
  • testB-4:testB-3下,全局模式。
  • testB-5:mihomo开启Fake-IP,DNS路由,rule模式。
  • testB-6:testB-5下,rule改成global。

Result

表2 软路由方案测试结果

表3 客户端方案测试结果

上述结果可以看出,mihomo在rule模式下,启用Fake-IP与否均会DNS泄露,在global模式下泄露消失。而sing-box启用Fake-ip后均不会出现DNS泄露。

Solution

软路由模式

软路由下解决DNS泄露,存在已验证的方案:MosDNS + openclash自定义DNS分流。

参考: 哔哩哔哩:MosDNS+Openclash 设置防止 DNS 泄露:https://www.bilibili.com/video/BV1SEp4zeEfW/

该方案可在Fake-IP下,遵循rule模式并解决DNS泄露。

客户端模式

mihomo内核客户端开启global,或者参照软路由方案修改配置文件yaml,达到类似效果。总之,mihomo在rule模式下解决DNS泄露较为麻烦。

Recommendations

在大学校园网的环境下,进行科学上网时应当注重隐私保护。有的人会反驳:既然都选择用校园网了,并且还科学上网,有什么隐私可言?这是一种典型的“躺平”脑回路。

注重网络空间的隐私是有必要的,尽管加密流量会被侦测,社工库屡禁不止,数据泄露事件频发。借用徐涛老师说的,这是一个“应然”和“实然”的问题。应然是人们的隐私应当受到主动的和被动的保护,实然是大多数人不在乎他人和自己的隐私。为了实现真正的隐私权,必然要有所行动。

如果你是宿舍神圣的网络管理员,你有义务做到:

  • 开启DoH/DoT加密DNS
  • 排查DNS泄露的问题
  • 拦截错误发给校园网DNS的UDP包

如果你是使用者,你也应当自查:

  • DNS泄露情况
  • 尽量开启global
  • 尽量不使用分流
  • 在移动设备上配置DoT

参考文献

  1. 关于DNS泄露,挂一篇奇文
  2. 浅谈DNS 泄露| lololowe 的博客
  3. DNS泄露/dns劫持的危害,容易暴露自己的上网行为,泄露自己的个人隐私!
Licensed under CC BY-NC-SA 4.0
最后更新于 2026年5月4日 18:15
使用 Hugo 构建
主题 StackJimmy 设计