bind + DNSCrypt 实现安全加密转发,避免DNS污染

首先我先贴俩图,看看现象

我解析下敏感域名

巧了,我瞎蒙的随便一个国外地址都特么是DNS ?

当然不是,因为祖国的出口伫立着一套高端设备,,,,   不说了,敏感了!

此法的基本思路是避免DNS污染和DNS劫持。(不关心原理的同学请跳过此段)众所周知,GFW的一大凶器是在DNS上做文章。关于DNS污染和DNS劫持的区别,请参考这篇文章。概括地说,DNS劫持是通过DNS服务器返回虚假的IP地址实现的,我们只需将本机使用的DNS服务器改成8.8.8.8等国外服务器即可。但这种方法无法避免DNS污染,因为DNS查询默认使用UDP协议,而墙可以干扰我们与DNS服务器的通信。今天介绍的dnscrypt-proxy,则开设本地的DNS服务器,对DNS请求进行加密(墙无法干扰加密后的请求),从国外的DNS服务器获取正确的IP地址后反馈回来,是为DNS代理的基本原理。

但这也就决定了,此法不可能成为通用的翻墙方法,因为GFW对于有些网站是直接通过IP地址屏蔽的。

平台:RHEL 6.6 x64 (CentOS)

dns服务器:Bind Server

yum源并没有dnscrypt-proxy,所以只能编译安装了

首先下载 dnscrypt-proxy

下载地址http://download.dnscrypt.org/dnscrypt-proxy/  (巧,这也被qiang了)

另外需要安装 libsodium依赖库 (我这里选择的是libsodium-0.5.0-mingw.tar.gz)

下载地址http://download.libsodium.org/libsodium/releases/

wget http://download.libsodium.org/libsodium/releases/libsodium-0.5.0-mingw.tar.gz 
tar xf libsodium-0.5.0-mingw.tar.gz
cd cd libsodium-0.5.0
CFLAGS="-O3 -fPIC" ./configure
make  &&  make install
ldconfig

依赖库装好了,下面来安装 dnscrypt

上传dnscrypt-proxy-1.4.0.tar.gz至服务器

tar xf dnscrypt-proxy-1.4.0.tar.gz
cd dnscrypt-proxy-1.4.0
cd src/libevent-modified/
CFLAGS="-O3 -fPIC" ./configure
make && make install
cd ..
cd ..
./configure 
make -j 2 && make install

安装好了

 dnscrypt-proxy -h   //显示帮助信息可用选项
 -a	--local-address=...   //监听的本地地址[端口] (不指定端口默认监听在53端口)
 -d	--daemonize        //后台运行(不提示错误信息)
 -R	--resolver-name=...  //选定的国外加密解析服务器
 -T	--tcp-only         //仅以TCP协议运行(默认监听在udp tcp上)
 -k                        //手动指定密钥串
 -V	--version          //版本信息

常用就这几个选项   更多详细帮助 man  dnscrypt-proxy

运行 dnscrypt-proxy 提示有错误,但是请注意这一条

这个文件中有默认的已经支持dnscrypt查询的公共dns  opendns也在其中。

我们来查看下这个文件  dnscrypt-resolvers.csv

第一行定义的是列标题,每个字段用逗号隔开,每一行开头就是 resolver_name

用法如下

dnscrypt-proxy --resolver-name=resolver_name --local-address=127.0.0.1:40 --daemonize
dnscrypt-proxy -R resolver_name -a 127.0.0.1:40 -d   //简写,监听在本地udp tcp40端口,远端加密dns选用resolver_name

不加-d参数 默认是前台运行

然后如果需要局域网开启加密访问,记得在iptables开启相应端口

最后在其他电脑上查询一下看是否生效,

dig www.youtube.com @*.*.*.* -p 3535
; <<>> DiG 9.10-P2 <<>> www.youtube.com @*.*.*.* -p 3535
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32356
;; flags: qr rd ra; QUERY: 1, ANSWER: 8, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.youtube.com.               IN      A
;; ANSWER SECTION:
www.youtube.com.        86400   IN      CNAME   youtube-ui.l.google.com.
youtube-ui.l.google.com. 900    IN      CNAME   youtube-ui-china.l.google.com.
youtube-ui-china.l.google.com. 180 IN   A       173.194.72.138
youtube-ui-china.l.google.com. 180 IN   A       173.194.72.102
youtube-ui-china.l.google.com. 180 IN   A       173.194.72.100
youtube-ui-china.l.google.com. 180 IN   A       173.194.72.113
youtube-ui-china.l.google.com. 180 IN   A       173.194.72.101
youtube-ui-china.l.google.com. 180 IN   A       173.194.72.139
;; Query time: 872 msec
;; SERVER: *.*.*.*#3535(223.255.7.250)
;; WHEN: Sun Jan 11 99:29:00 ?D1ú±ê×?ê±?? 2015
;; MSG SIZE  rcvd: 205

解析是对了,但是并不代表 FQ  所以,这主要是搭配其他工具来实现FQ 。

时间: 2024-10-10 07:34:26

bind + DNSCrypt 实现安全加密转发,避免DNS污染的相关文章

使用DNSCrypt解决DNS污染问题

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

用DNSCrypt解决DNS污染造成的Dropbox无法连接问题

前段时间Dropbox一直都不能访问了,本以为是被WALL了,因为其他事情,所以一直没有处理,今天在网上看到一篇文章,亲自体验一下,Dropbox果然可以访问了. 众所周知的原因有2种,一种是你到服务器之间的连接被WALL了:另一种是你的DNS请求被污染了,返回给你了一个不存在的目的地.Dropbox不能访问就是因为后者,DNS污染. 因为到Dropbox之间的连接并没有被WALL,因此如果我们可以得到正确的DNS查询返回值,就可以正常同步Dropbox了. 原方中介绍的是一款OpenDNS发布

如何手动编译bind,如何使用view实现智能DNS解析,以及如何对DNS服务器进行压力测试。

今天带大家来看看如何手动编译源码bind,自己手动编译安装的很多文件都要自己去建立,配置文件也要从零写起,而且没有服务启动脚本,需要自己编写启动脚本. 实验规划: 1.在192.168.1.200这台主机上编译安装bind,完成后为named服务编写启动脚本,加入到service. 2.配置view实现智能DNS解析:当请求解析www.tuchao.com,来源为192.168.1.0/24时候,解析到192.168.1.100.其他的来源都解析到外网地址,1.1.1.1 3.使用querype

2014年Dropbox可用的Hosts文件 或 使用DNSCrypt解决DNS污染问题

一.Dropbox的可用Hosts文件 昨天Dropbox的域名突然被DNS污染,并且Dropbox域名也进了黑名单关键字,导致Dropbox客户端无法使用,不过我发现通过修改Hosts文件的方法可以让Dropbox继续正常使用,Hosts文件内容如下. 注释:我的Dropbox版本2.8.2,修改Hosts后可以通过https的方式去Dropbox网站下载最新版本.Dropbox有一些比较BT 的子域名如dl-client804.dropbox.com等等我没加到Hosts,加的话要多加100

DNS污染和DNS劫持的解决办法

DNS污染是指一些刻意制造或无意中制造出来的域名服务器分组,把域名指往不正确的IP地址. DNS劫持又称域名劫持,是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能访问或访问的是假网址. DNS污染解决方法 1.使用各种SSH加密代理,在加密代理里进行远程DNS解析,或者使用VPN上网. 2.修改hosts文件,操作系统中Hosts文件的权限优先级高于DNS服务器,操作系统在访问某个域名

DNS劫持 DNS污染 介绍 与 公共DNS 推荐

来源:http://www.itechzero.com/dns-hijacking-dns-pollution-introduction-and-public-dns-recommend.html 我们知道,某些网络运营商为了某些目的,对 DNS 进行了某些操作,导致使用 ISP 的正常上网设置无法通过域名取得正确的 IP 地址.常用的手段有:DNS劫持 和 DNS污染.DNS劫持 和 DNS污染 在天朝是非常常见的现象.一般情况下输入一个错误或不存在的 URL 后,本应该出现404页面,而我们

vpn中dnsmasq还遇到 dns 污染

最近我 VPN( 出口在欧洲 )  的机器还遭到 dns污染了 开始找原因: 1) 确认了VPN的域名服务器8.8.8.8 是没有有问题的 VPN中8.8.8.8的回答 nslookup > server 8.8.8.8 Default server: 8.8.8.8 Address: 8.8.8.8#53 > facebook.com Server:         8.8.8.8 Address:        8.8.8.8#53 Non-authoritative answer: Na

DNS污染——这是为什么VPN连接成功了网站还打不开的祸根

初次使用VPN的朋友,经常会遇到这样的一个问题.VPN虽然连接成功了,国内网站打开正常,QQ登录正常,但是就是国外网站各种打不开.当时那个郁闷啊,立马找VPN商家沟通,被告知是DNS污染,按照指引修改DNS,果然,Facebook打开了,顿时感觉太神奇了.下面就科普一下DNS污染相关的知识. DNS是什么?DNS有什么用? DNS是域名系统(Domain Name System)的缩写,平时我们说的DNS实际上是指的域名服务器,域名是通过使用一个由域名注册机构和数据库组成的全球范围的系统来管理的

ubuntu-利用pdnsd-TCP方式获取IP-拒绝DNS污染

那,自从国内技术出现了DNS污染问题呢,时常导致很多国外网站访问不正常,所以通过参考一些博客所属避免DNS污染的方法,决定搭建一个Ubuntu JeOS下的DNS缓存服务器,该服务器利用TCP方式获取IP解析,这样就可以避免DNS污染问题了. 首先,进入root权限: sudo –i 然后输入用户名对应的密码,进入root权限命令行. 利用以下指令安装所需软件Pdnsd: apt-get install pdnsd 安装后选择OK,Manual手动配置文件. vim /etc/pdnsd.con