首先我先贴俩图,看看现象bash
我解析下敏感域名
服务器
巧了,我瞎蒙的随便一个国外地址都特么是DNS ?
tcp
固然不是,由于祖国的出口伫立着一套高端设备,,,, 不说了,敏感了!ide
此法的基本思路是避免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)
ui
dns服务器:Bind Server
google
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
而后若是须要局域网开启加密访问,记得在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(*.*.*.*) ;; WHEN: Sun Jan 11 99:29:00 ?D1ú±ê×?ê±?? 2015 ;; MSG SIZE rcvd: 205
解析是对了,可是并不表明 FQ 因此,这主要是搭配其余工具来实现FQ 。