加密DNS传输的工具 DNSCrypt

12年前
dnscrypt-proxy 可当作是一个 DNS 代理服务器,用于提供 DNS 客户端和服务器之间的安全通讯。

DNSCrypt是一个确保客户与DNS服务器之间传输安全的工具,基于DNSCurve修改而来。

由于Domain Name System(DNS)设计上的缺陷,用户在浏览器里输入很多海外网址以后,如果遭遇MITM(Man in the Middle,中间人攻击)或者DNS污染,浏览器就可能接收到错误的IP而导致安全问题。为了解决这个问题,IETF在十几年前便开始制定DNS的安全 扩展(DNSSEC),主要是利用公开密钥加密技术,通过对DNS数据进行数字签名,DNSSEC能够验证DNS数据来源和验证在传输过程中DNS是否被 篡改。

但是DNSSEC不保证DNS数据的机密性,DNS数据本身并没有被加密,加之DNS的阶层式模式,这便 为一些机构提供监视,控制网络的手段,典型的例子就是不能访问一些海外的网站。DNSSEC也不提供免于DOS(Deny of Service,拒绝服务)攻击的办法,由于数字签名和签名验证需要额外的数据运算,DNSSEC反而更容易受到DOS攻击。DNSCurve相对于 DNSSEC的好处是,DNSCurve使用了更有效率的椭圆曲线加密算法而减少了运算量,可以对每条DNS查询都单独加密,从而更加安全。

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系统上运行)

加密DNS传输的工具 DNSCrypt

以上介绍内容来自:http://hi.baidu.com/bgp90/blog/item/e9d632e5489ce2ce2e2e2118.html