DNSCrypt

来源 https://www.cnblogs.com/qiudabai/articles/9219840.html

https://www.opendns.com/about/innovations/dnscrypt/

https://github.com/opendns/dnscrypt-win-client

http://opendns.github.com/dnscrypt-osx-client/

DNS(Domain Name System)是专门用来解析域名的一项协议。

比如我们要访问 Google 主页,大致过程如下:首先浏览器向 DNS 服务器发出请求,DNS 服务器会返回一个对应的 IP 地址,接着浏览器向这个 IP 地址发出 HTTP 连接请求,建立连接传输网页数据,浏览器解析网页数据。

这是一个传统的解析过程,然而由于最初设计方面的缺陷,在 DNS 解析和 HTTP 连接全过程中,都是采用明文传输的数据(类似于「裸奔」),极易泄露数据和受到攻击。

那么为了确保客户端与服务器之间安全的传输,后来制定了 DNSSEC 、HTTPS 等协议。HTTPS 加密了 HTTP 传输的数据,确保了传输安全,而 DNSSEC 只是对 DNS 数据加了电子签名,在传输过程中并没有对数据进行加密,只能验证传输过程中数据是否经过了篡改。

基于此,计算器网络界大佬——Cisco 公司,基于 DNSCurve,研发了一个加密 DNS 传输的协议——DNSCrypt(介绍页面)。使用 DNSCrypt 协议可以加密传输客户端到支持 DNSCrypt 协议的 DNS 服务器之间的连接,确保不会受到 DNS 攻击。

使用 DNSCrypt

DNSCrypt 已经开源,可以运行在绝大多数系统之上。

在 macOS 系统上使用

推荐使用 DNSCrypt-OSXClient 工具,这是一个图形化工具,安装包采用标准的 pkg 安装过程。安装完成后只需打开 DNSCrypt ,在提供的 DNS 服务器列表中选择一个服务器(按需选择,建议选择 OpenDNS 服务器),然后勾选上「Enable DNSCrypt」,DNSCrypt 就开始工作了。

在 Windows 系统上使用

推荐使用 Simple DNSCrypt 工具,这也是一个图形化易于操作的工具。打开 Simple DNSCrypt 后,在「网卡列表」中勾选要应用的网卡,然后设置服务器。这个工具提供了两个服务器设置的选项,可以根据需要设置服务器并且开始工作。

在 Linux 系统上使用

推荐使用 DNSCrypt-Loader 或 Pcap_DNSProxy 工具。当然也可以根据源码自己编译。

在 iOS、Android 系统上使用

在 iOS 上使用首先要越狱设备,Android 系统上要 Root 系统,然而这些操作可能会导致一定的安全风险,我们并不提倡这么做,除非你非要使用 DNSCrypt。

在路由器上使用

根据官网的介绍,DNSCrypt 可以在 Tomato、OpenWrt 和 Entware 系统上工作。当然也可以根据源码自己编译。

搭建服务器

你可以在传统 DNS 服务器上添加 DNSCrypt 协议的支持,最简单的方法就是通过 Docker 映像 来运行。

更多介绍请到 DNSCrypt 项目官网 了解。

测试 DNSCrypt 是否正常运行

很简单,在浏览器里面打开一个以往不是能那么顺利打开的网站(最好是 HTTPS 访问哦),如果现在很轻松就能打开了,那么 DNSCrypt 就已经在工作啦

DNSCrypt的更多相关文章

  1. 关于MAC系统的DNSCrypt的设置教程

    DNSCrypt的设计完全是为了解决某些网站DNS系统被污染的问题. 如图是查看本地的DNS DNS系统是一个主要领域的安全保障,因为受损数据从一个DNS服务器会导致你的系统或者无法找到需要的服务器需 ...

  2. 如何在 Arch Linux 中安装 DNSCrypt 和 Unbound

    DNSCrypt 是一个用于对 DNS 客户端和 DNS 解析器之间通信进行加密和验证的协议.它可以阻止 DNS 欺骗或中间人攻击. DNSCrypt 可用于大多数的操作系统,包括 Linux,Win ...

  3. 将 DNSCrypt 部署到 Openwrt 路由器上+ DNSmasq 解析国内域名用本地 DNS[ZT+实践]

    原文地址: 1.https://typcn.com/legacy/blog/posts/openwrt-dnscypt.html 2.http://www.openwrt.pro/post-376.h ...

  4. 使用DNSCrypt解决Dropbox污染问题

     作者:半点闲 时间:2014-6-27 18:27 博客:blog.csdn.net/cg_i 邮箱:b_dx@sohu.com 背景知识:防火长城(GFW) keyword:DNSCrypt ...

  5. 一个DNS统计,RCFs,工具站点

    RCFs http://www.statdns.com/rfc/ DNS resources A collection of DNS related resources DNS Servers Nam ...

  6. Centos7下dnscrypt-proxy安装

    DNS劫持指的是"一些设备"会拦截DNS解析请求,并将错误的DNS信息返回给主机:DNS污染指的是"一些设备"会将错误的域名信息下发至公共的DNS服务器中(比如 ...

  7. 解决Dropbox无法连接的问题

    同步共享服务Dropbox从6月18日开始再次遭到封锁,原因是DNS污染.Dropbox上次在2010年5月曾遭到IP封锁和网址关键字过 滤,2012年5月除文件外链功能外其它功能可正常访问:2014 ...

  8. 解决OneNote的无法同步的问题

    微软的OneNote一直是我比较喜欢的笔记软件,一些复杂的笔记用它来存储比Evernote要强大很多,然而这几天发现一直无法同步,登陆https://onedrive.live.com/看了一下,发现 ...

  9. 使用DNSSCrypt解决DNS污染问题

    本文转自 月光博客,如有需要,请阅读原文. google近期在国内是不能访问了,dropbox这货居然也被DNS污染了,幸好发现DNSCrypt这一神器,防止DNS污染的绝佳工具. 基本原理:DNSC ...

随机推荐

  1. python第四章:函数--小白博客

    Python函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可 ...

  2. 295B - Greg and Graph (floyd逆序处理)

    题意:给出任意两点之间的距离,然后逐个删除这些点和与点相连的边,问,在每次删除前的所有点对的最短距离之和 分析:首先想到的是floyd,但是如果从前往后处理,复杂度是(500)^4,超时,我们从后往前 ...

  3. 关于function和task的说明

    1.  关于函数function调用,总结两个要点: 1.  函数调用一般产生一个值,这个值被赋值给某个变量 2.  函数所返回的值只能是一个,不可以是多个,不能像C语言中采用指针的方式返回多个值.因 ...

  4. 牛客OI周赛8-普及组

    https://ac.nowcoder.com/acm/contest/543#question A. 代码: #include <bits/stdc++.h> using namespa ...

  5. 解决Window安全中心对Kitematic-0.17.3-Ubuntu.zip提示病毒,但无法删除的问题。

    Trojan:JS/Tisifi.B 类型:特洛伊木马 containerfile: C:\Users\Administrator\Desktop\Kitematic-0.17.3-Ubuntu.zi ...

  6. VS2008引入头文件包含目录和lib库目录

    全局级别的引入 为VS所有项目设置包含目录和库目录,对所有项目都有效 如下图所示:工具-选项-项目和解决方案-VC++目录-包含文件:在此添加头文件目录即可 工具-选项-项目和解决方案-VC++目录- ...

  7. 开发神器之phpstorm破解与日常使用

    PhpStorm 是 JetBrains 公司开发的一款商业的 PHP 集成开发工具,旨在提高用户效率,可深刻理解用户的编码,提供智能代码补全,快速导航以及即时错误检查. PhpStorm可随时帮助用 ...

  8. [转帖]K8H3D 病毒 腾讯御剑的解析

    https://weibo.com/ttarticle/p/show?id=2309404344350225132710 永恒之蓝下载器木马又双叒叕升级了新的攻击方式​​ 背景 腾讯安全御见威胁情报中 ...

  9. 小程序获取当前页面URL

    var pages = getCurrentPages() //获取加载的页面 var currentPage = pages[pages.length-1] //获取当前页面的对象 var url ...

  10. scala下划线

    作为函数的参数 一个匿名的函数传递给一个方法或者函数的时候,scala会尽量推断出参数类型.例如一个完整的匿名函数作为参数可以写为 scala> def compute(f: (Double)= ...