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

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

2014年4月26日星期六

Linux下使用VPNGate的方法

VPNGATE 已经推出一段时间了,网上相关介绍很多,在这里我不做赘述。它有很多优点,使用方便,是突破网络封锁的利器之一。但对于诸多LINUX用户却不然,官方对该平台的支持也很一般,虽然SoftEther本身是开放软件,也可以在LINUX平台使用,但由于远不及在Windows等其他平台上使用的简单,给用户带来了很多不便与困扰。对于很多坚持全套使用LINUX平台的用户,很可能选择绕行,使用其他工具。

虽然在LINUX平台下,我们无法享受官方客户端带来的快捷与方便,但仍然可以利用已有的工具,使用VPNGATE提供的OpenVPN服务。我们打开官方网站,会看到VPN服务列表上有很多服务器提供OpenVPN服务,我们只要下载配置文件,正确配置好以后,便可以自由享受翻墙的乐趣。

这篇文章虽然以介绍LINUX上使用VPNGATE的OpenVPN为目的,但决不仅限于VPNGATE上的此类服务。很多其它VPN服务商,虽然提供OpenVPN服务,却也不同程度的缺乏对LINUX平台的有效支持。为此,网友们可以借用这篇文章,为自己的翻墙之路增加一条选择。

先转载一篇《Ubuntu环境下使用VPNGATE的方法》文章,后面会补充博主的个人体会。原文引自http://mikutc.sinaapp.com/archives/552,同时感谢该文作者分享自己的经验。

---------------------------------------------引文分割线-----------------------------------------------

VPNGate是日本筑波大学的一个学术项目。你可以自备梯子访问这里
> http://www.vpngate.net/en/

对于我个人而言他最大的优点就是可以使用日本的VPN(来玩艦隊これくしょん)。

因为上网本的关系,毕竟是性能吃紧,我抛弃了Microsoft转向了Linux,装了个Ubuntu企图解决Flash卡顿的问题(Linux毕竟比Windows占用资源少[至少我是这么认为的])。

但是筑波大学的黑科技偏偏不支持Linux系统 = = 很是头痛。好在终于找到了解决的办法。

这个方法通过OpenVPN实现。如果你不确认是否安装了OpenVPN,请新建一个终端输入以下命令并执行:
sudo apt-get install openvpn network-manager-openvpn

首先你需要先找个梯子在Ubuntu里面访问项目页面,查看服务器列表。

http://minus.com/m1bWXxVzCo8Yw

选择合适的服务器,下载OpenVPN配置文件(TCP UDP皆可,我使用的是TCP)

http://minus.com/m1bWXxVzCo8Yw

用文本编辑器打开下载的文件(ovpn格式),找到<ca></ca>之间的内容,全部选中并剪切。

http://minus.com/m1bWXxVzCo8Yw

新建一个文件,将剪切的内容粘贴在里面,直接保存成crt格式文件(比如ca.crt,文件名不影响,这就是一个证书文件),之前修改的ovpn文件也直接保存

http://minus.com/m1bWXxVzCo8Yw

网络连接》VPN连接》配置VPN,单击导入并选择刚才下载并修改过的ovpn文件。

http://minus.com/m1bWXxVzCo8Yw

认证类型选择密码,用户名和密码都填 vpn ,CA证书选择刚才保存的crt文件。

http://minus.com/m1bWXxVzCo8Yw

设置完成,去VPN连接里面选择刚才建立的VPN试试吧。失败的话再换一个服务器重复之前的操作即可。

P.S. 现在玩艦隊これくしょん玩的风生水起不能自拔中……居然这么蛋疼的去玩一个游戏我是不是该吃药了ORZ

Translate from > http://www.kabatology.com/05/09/ubuntu-connect-to-vpn-gate-with-openvpn/

---------------------------------------------引文分割线-----------------------------------------------

再次感谢该文作者的翻译与分享 。

我这里要补充的是, 作者导入的.ovpn文件使用的认证类型是密码,而我下载到的几个都是“证书(TLS)”,里面不仅包含<ca>...</ca>的内容,还包含<cert>...</cert><key>...</key>的内容,配置的时候不需要输入用户名与密码。用户需要用相同的方法将这三组数据分别保存到三个文件里面,文件名与文件类型不限,可以都保存为.crt 以方便导入。<cert>、<ca>、<key>分别对应“用户证书”,“CA证书”,“密钥”“密钥密码”如果有就填写,没有就不填。配置完毕保存好,就可以尝试连接了。

细心的网友会发现,认证类型里面还有两类,“密码和证书(TLS)”以及“静态密钥” ,前者是密码证书(TLS)的组合,静态密钥我还没有遇到过,等遇到了再作补充。

题外话:出于VPNGATE的开放性原因,里面的服务器会不定期变动。而每次重新下载和配置新的VPN,都需要额外的代理,使用起来确实有点麻烦,但好过没法用。学会浏览.ovpn文件后,我们可以通过直接浏览这个不算长的文件,看到所有配置信息,不再依赖于任何配置工具。作为软件开发人员,当然也可以编辑一些工具,小则可以将.ovpn拆分成ca cert key等文件,方便导入;大则可以模仿Windows版本下的基于SoftEther的管理工具,提供贴心的用户体验。这些都只能期待有时间精力的有心人与大家分享。