DNSCrypt是一个确保客户与DNS服务器之间传输安全的工具,基于DNSCurve修改而来。
由于Domain Name System(DNS)设计上的缺陷,用户在浏览器里输入很多海外网址以后,如果遭遇MITM或者DNS污染,浏览器就可能接收到错误的IP,而存在安全问题。为了解决这样的问题,IETF在十几年前便开始制定DNS的安全扩展(DNSSEC)。利用公开密钥加密技术,通过对DNS数据进行数字签名,DNSSEC能够验证DNS数据来源和验证在传输过程中DNS是否被篡改。
但是DNSSEC不保证DNS数据的机密性,DNS数据本身并没有被加密,加之DNS的阶层式模式,这便为一些机构提供监视,控制网络的手段。典型的例子就是不能访问一些海外的网站。DNSSEC也不提供免于DOS(Deny of Service)攻击的办法,由于数字签名和签名验证需要额外的数据运算,DNSSEC反而更容易受到DOS攻击。DNSCurve相对于DNSSEC的好处是,DNSCurve使用了更有效率的椭圆曲线加密算法而可以负担的起每条查询都单独加密,从而更加安全。
DNSCrypt协议是非常类似DNSCurve的,作为一个DNS代理运行,侧重于客户端和第一级DNS服务器之间的通信安全,能够缓存DNS解析。DNSCrypt的上游DNS服务器是著名的OpenDNS服务,简单而言DNSCrypt就是加密了本机到OpenDNS服务器之间的DNS查询通信过程(使用椭圆曲线加密算法),所以可以不受GreatFireWall的DNS污染干扰。
首先下载对应平台的dnscrypt client然后运行,接着修改本地或者router的dns server为127.0.0.1. 然后你的所有dns请求都会加密进行从而绕过GreatFireWall的dns污染顺利解析到正确IP,以下是Win7系统设置的图示:(DNSCrypt可以在Windows/Linux/BSD/OSX/iOS系统上运行)
更多详情:https://github.com/opendns/dnscrypt-proxy/
下载地址:https://github.com/opendns/dnscrypt-proxy/downloads
使用后即可直接访问一些遭到DNS污染的网站,如果网站还支持https也可以访问其https网址,比如一些Google服务。