使用DNSCrypt解决DNS污染问题
admin
2023-03-22 01:01:02
0次


前言

在开始写这篇文章之前,先要普及一个知识中国长城防火墙(英文名:Great Firewall of China)好伟大的样子,是XX专门用来对网民进行网络封锁,闭关锁国的的工具。最近一批google.com, youtube.com, facebook.com, dropbox.com等一批国外知名网站,均无法正常访问,就是拜其所赐。它所实现的主要屏蔽技术有IP封锁,关键字过滤,域名劫持与污染以及HTTPS证书过滤四种。本文主要通过dnscrypt技术反其dns劫持与污染。

先了解一下什么是DNS劫持和DNS污染,其实两者并不是一个概念。大家都知道主机之间的通信通过ip来标识对方主机,但是IP不容易记忆,后来提出了域名的概念,比如www.baidu.com, 域名与IP之间就是通过DNS解析联系起来,实现了域名与IP之间的映射。这份映射关系存储在DNS服务器上。

什么是DNS劫持

DNS劫持一般发生在某些网络运营商身上,DNS劫持就是劫持了DNS服务器,获取DNS服务器的控制权。通过某些手段修改这些域名的目的解析IP地址。DNS劫持通过篡改DNS服务器上的数据,给用户返回一个错误的查询结果来实现的。

DNS劫持症状:在某些地区的用户在成功连接宽带后,首次打开任何页面都指向ISP提供的“电信互联星空”、“网通黄页广告”等内容页面。还有就是曾经出现过用户访问Google域名的时候出现了百度的网站。这些都属于DNS劫持

应对DNS劫持,只需要在网络配置中把DNS服务器地址配置成国外的DNS服务器地址就可以解决,比如谷歌提供的DNS服务器地址:8.8.8.8 8.8.4.4

什么是DNS污染

DNS污染是一种让一般用户由于得到虚假目标主机IP而不能与其通信的方法,是一种DNS缓存投毒***(DNS cache poisoning)。其工作方式是:由于通常的DNS查询没有任何认证机制,而且DNS查询通常基于的UDP是无连接不可靠的协议,因此DNS的查询非常容易被篡改,通过对UDP端口53上的DNS查询进行***检测,一经发现与关键词相匹配的请求则立即伪装成目标域名的解析服务器(NS,Name Server)给查询者返回虚假结果。

DNS污染症状:目前一些被禁止访问的网站很多就是通过DNS污染实现的,例如YouTube、Facebook、DropBox等网站。

对于DNS污染,普通用户是不能够通过简单地设置国外DNS服务器就能解决的。需要用到这篇所讲的重点:DnsCrypt-proxy,我通过这种方式解决了对Dropbox的访问封锁。

先看下谷歌DNS服务器(8.8.8.8)对www.dropbox.com的解析情况

使用DNSCrypt解决DNS污染问题

电信DNS服务器(114.114.114.114)对www.dropbox.com的解析情况

使用DNSCrypt解决DNS污染问题

www.dropbox.com均被解析到 59.24.3.173 这个IP, 这是一个韩国IP,使用站长ping工具检测一下,全部超时,我只截取其中的一部分,如果服务器不通或禁ping,则全部超时。

使用DNSCrypt解决DNS污染问题

无论我们是从谷歌服务器还是电信服务器拿到的数据包,在到手之前均被长城防火墙进行篡改。为了防止这份数据被篡改,我们需要借助DNSCrypt这款工具保证我们的dns查询数据包不被篡改。

DNSCrypt是OpenDNS发布的加密DNS工具,可加密DNS流量,阻止常见的DNS***,如重放***、观察***、时序***、中间人***和解析伪造***。DNSCrypt支持Mac OS和Windows 以及Linux,是防止DNS污染的绝佳工具。我在Mac OS与Centos上均做了尝试。

安装DNSCrypt-proxy

在Mac OS 与 Linux 上的安装非常简单,按照项目主页的文档一步一步操作即可。

Mac Os 可使用brew工具一键安装
brew install dnscrypt-proxy 

Linux安装
#安装依赖
cd /usr/local/src/
wget "https://download.libsodium.org/libsodium/releases/libsodium-0.5.0.tar.gz"tar -xzvf libsodium-*.tar.gzcd libsodium-*
./configure
make
make install
ldconfigecho /usr/local/lib > /etc/ld.so.conf.d/usr_local_lib.confcd /usr/local/src/
wget "http://download.dnscrypt.org/dnscrypt-proxy/dnscrypt-proxy-1.4.0.tar.bz2"bunzip2 -cd dnscrypt-proxy-*.tar.bz2 | tar xvf -cd dnscrypt-proxy-*
./configure
make
make install

启动dnscrypt_proxy

dnscrypt_proxy的用法可以通过man 8 dnscrypt_proxy查询

在启动之前,需要注意一项,因为dnscrypt_proxy作为查询代理是对通信加密的,这也要求目的dns服务器也要支持,项目主页提供一份可用列表

启动脚本

使用DNSCrypt解决DNS污染问题

最后我们可以看到建立了本机53端口与目的主机443端口的链接;按照官网的提示,如果我们安装成功,当我们执行dig txt debug.opendns.com,会看到debug.opendns.com. 0 IN TXT "dnscrypt enabled (......)"这样的输出。

使用DNSCrypt解决DNS污染问题

恭喜,我们成功了,下一步我们只需要把本机的dns服务器指向到这台代理即可

再来查看下www.dropbox.com的解析情况

使用DNSCrypt解决DNS污染问题

访问一下 https://www.dropbox.com

使用DNSCrypt解决DNS污染问题



相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...