其实一直想再写一篇关于DNS泄露的文章,毕竟这个话题一直争论不断,争论者们有写防DNS泄露教程的,也有写DNS泄露技术原理的,但依旧无法停止对这个话题的争论。
因为双方虽然都在讨论DNS泄露,但讨论的就不是同一个话题。所以我写了这篇文章,为纠结DNS泄露问题的用户解惑。如果懒得阅读原理,拉到结尾看结论即可。
DNS泄露之前世
其实在Chrome浏览器还没有普及前,就已经有DNS泄露检测了,那个年代的代理工具并不像现在这般功能强大,只是单纯的做流量转发,DNS解析是在本地进行的。
所以只需要绕开DNS缓存,使递归DNS请求权威DNS,再获取DNS出口的IP,与请求站点的IP进行地理位置对比,就可以判断出用户是否使用代理。
用白话来讲:DNS泄露是一些站点用来检测访问者是否使用代理而设置的,而随着设备升级带来的传感器参数增多,以及代理软件开始使用服务端解析域名,这种检测方式已逐渐退出历史舞台。
这就是为什么很多懂技术的人,都说不必在意DNS泄露的原因。
前世总结:DNS泄露原本就是站点用来检测用户做风控的,而且只有你与所访问站点的运维人员才能获取到结果,目前能在网上找到的DNS泄露检测网站都是如此。
DNS泄露之今生
那么为什么很多人会担心DNS泄露暴露使用代理的问题?
这就要提一下代理软件的分流模式了,除了使用代理域名的名单分流外,也可以使用IP分流模式来自动判断,即遇到不在代理名单中的域名时,先向国内DNS查询,如果返回非中国大陆IP则使用代理,再通过远程代理服务器的DNS重新解析。
因为DNS泄露检测网站的服务器都在境外,检测域名又没在代理名单上,所以会先向国内DNS进行一次查询,获取到海外IP后会再通过远程代理服务器重新解析。
这就是为什么会在DNS泄露网站上看到国内IP的原因,而使用代理用户所担心的,是当某些域名不在代理名单时,向国内DNS解析是否会被审查的安全问题,并非是DNS泄露本身。
今生总结:用户担心的问题跟DNS泄露就没什么关系,只是检测DNS泄露的网站可以变相测试代理软件的分流情况,即如何处理不在代理名单的域名。
DNS分流之安全
至此就会理解,网上一直在争论的从来就不是DNS泄露的问题,只是一些博主在用DNS泄露检测网站做测试讲解,但并未讲清楚原理,导致很多用户在纠结这个问题,所以下次遇到有人纠结DNS泄露,可以分享这篇文章解惑。
其实真正需要讨论是:代理软件在IP分流时查询国内DNS是否安全?
排除掉内网就有审查的情况,使用运营商DNS会留存域名解析记录,这也是用户担心是否安全的原因。
首先要搞清楚,哪些域名会被国内DNS记录并产生风险?在国内直连名单的域名肯定是没风险的,被阻断的绝大部分都在代理名单中,并不会使用国内DNS查询,此时不在代理名单中又需要走代理的域名,究竟是为了请求加速还是绕过防火墙呢?
结论很明显:对于绝大部分用户,根本无需纠结这个问题。
退一步讲,即使运营商拿到了你请求海外域名的解析记录,也没办法作为审查依据。
比如一些安卓模拟器会请求海外域名,一些没被阻断的国际APP会请求海外域名,甚至设备中了病毒也会请求海外域名,监管部门就不可能依据DNS解析记录把人喊去调查。
那有没有极端情况?当然有。
比如你是一个加密货币投资者,使用了某个国内可以访问的钱包APP,而这个钱包APP在当地被用于多起电诈,那当你使用国内DNS解析这个钱包APP使用的域名时,就很有可能会接到反诈中心或社区的电话,仅此而已。
如果在意上面的问题,更有效的方法是放弃IP分流,直接非国内名单的域名全部走代理,然后手动维护规则;或者选择那些解决这个问题的小众加密DNS。
至少我在做EasyMosdns的分流服务时,更多考虑的是解决一些域名返回空解析或保留IP的问题,以及解决类似Apple系统服务域名CDN节点不准的问题等等,最后欢迎大家来体验与探讨。