2014年4月30日星期三

当心DNS泄漏你的隐私

1. 什么是DNS泄漏(DNS Leak),我们为什么要关注它

本段翻译自 What is a DNS leak and why should I care?

当您使用匿名或隐私服务时,非常重要的一件事是保证从您的终端发起的所有数据都要通过指定的匿名网络进行传输。如果有任何流量泄漏到指定的安全网络连接之外,所有正在监视您流量的危险人物,都有能力记录您的网络活动。

DNS(域名系统)是用来将诸如 www.privacyinternational.org 的域名转换为如 123.123.123.123 的数字IP地址的,您的终端设备会使用这个数字IP地址向互联网发送数据。当您希望访问互联网上的某个服务器时,比如您在浏览器中输入了一个URL网址,您的终端设备将首先向DNS服务器发送请求,要求获得相应的数字IP地址。大多数的网络服务商(ISP)都会向客户提供一个由他们自己控制的DNS服务器,从而可以记录和保存客户的网络活动。

在某些情况下,虽然您的终端设备已经连入匿名网络,操作系统却可能仍在使用默认的,而不是匿名网络为您分配的DNS服务器,从而导致DNS泄漏。DNS泄漏会严重威胁您的网络隐私,因为匿名网络会给您带来一种安全浏览的假象,而您的网络活动极有可能正通过DNS泄漏被危险人物监视。

如果担忧DNS泄漏问题,您有必要了解透明DNS代理技术(Transparent DNS proxy),以便确保您选择的解决方案可以避免DNS泄漏。




2.什么是透明DNS代理 (transparent dns proxy)

本段翻译自 What are transparent DNS proxies?

目前,已经有一些网络服务商(ISP)使用这种叫做透明DNS代理的技术。它通过拦截客户全部的DNS查询请求(TCP/UDP端口53),迫使客户使用他们的服务器进行DNS解析。

如果您将DNS设置改为“开放”的DNS服务器,例如Google、Comodo或者OpenDNS,并期待您的DNS请求不会再被发送到ISP提供的DNS服务器上,那么很遗憾,您会惊奇的发现他们在使用透明DNS代理。您可以简单地通过访问这里,点击 dns leak test 按钮来检测您现在使用的DNS服务是否使用了透明DNS代理技术。

如果您的网络服务商使用了透明DNS代理技术,您一定要使用下面介绍的几种方法之一,来确保当连接上VPN之后,您的DNS请求不会被拦截。



注:前面两段,我尽量按照dnsleaktest的原文翻译,目的是方便网友们对照。如果出现错误或疑问,也容易通过查找原文,及时发现或澄清。可能部分网友会觉得我写的不贴近生活,不易理解,那么我推荐另外一篇文章 请点击这里。这篇文章涉及DNS泄漏的部分也是基于dnsleaktest,但言简意赅、生动无比,此外还包括DNS劫持和DNS污染的内容,可供网友们学习。

3. 如何解决DNS泄漏问题

本段不翻译dnsleaktest的原文了,有兴趣的读者可以到这里阅读。

不翻译的原因是,原文提供的两个解决方案我都不推荐,前者用于OpenVPN,是Windows平台上的客户端,需要安装,适用范围有限;后者则有可能需要更改网络设置,略显麻烦。如果非常符合网友的实际使用,可以自行尝试,原文里有详细讲解。

解决方案1:VPN
单层VPN的用户,往往对安全和隐匿性要求不高,不浏览“高危”网站,所以我习惯于不将单层VPN看作隐匿上网。用户可以先通过dnsleaktest提供的在线检测工具测试一下是否存在DNS泄漏,点击这里。如果没有泄漏,则正常使用;如果仍然存在泄漏,可以查找一下是什么绕开了VPN,并发送DNS请求的。如果很难找到,可以考虑尝试以下解决方案。

解决方案2:隐匿上网(推荐)
对于经常翻墙,且对隐匿性有一定要求的网友,使用单层VPN是不被推荐的。为增强隐匿性和安全性,往往使用虚拟机+多层代理的组合。相关的知识,我向网友们推荐编程随想博客的系列文章如何隐藏你的踪迹,其中详细讲解了隐匿上网的基础知识,文风严谨、语言幽默,适合不同程度和水平的翻墙者阅读学习。由于隐匿上网的方法很多,往往是VPN、多层代理(如I2P或TOR)和若干虚拟机的组合,我无法一一列举。很多方法和工具我也没有使用过,不敢误人子弟。但隐匿上网必然需要避免DNS泄漏,所以可以算作解决方案,而且是相当有效的解决方案,毕竟防止DNS泄漏是保护隐私的一部分。有顾虑的朋友可以使用不同的检测工具进行检测,以保证“万无一失”。

解决方案3:使用DNSCrypt加密DNS传输(推荐)
DNSCrypt是OpenDNS发布的,旨在确保客户端与DNS服务器传输安全的工具,基于DNSCurve发展而来,浏览官网请点这里。使用该软件后,DNS通讯采用加密传输,因此即使不使用VPN,只要OpenDNS的服务器不被墙,就能在相当程度上,既防止泄漏,又防止劫持。即使使用者不打算翻墙,一样可以使用该工具保护DNS通信。DNSCrypt是开源项目,已经支持Windows,Linux,iOS和Android等多个平台,是避免DNS泄漏与劫持的利器。

解决DNS泄漏的方法应该是很多的,不同用户使用不同的系统,装有不同的应用软件,会有不同的情况,我无法面面俱到。甚至很多情况,我根本不懂得如何解决。在这里只能普及一点基础知识,谈一点自己的经验。

欢迎网友指正文中的错误,交流各自的经验。

没有评论:

发表评论