Centos7下dnscrypt-proxy和dnsmasq安装

DNS劫持指的是“一些设备”会拦截DNS解析请求,并将错误的DNS信息返回给主机;DNS污染指的是“一些设备”会将错误的域名信息下发至公共的DNS服务器中(比如114),这样用户在进行DNS查询的时候将会得到错误的IP信息。针对这两个问题,可通过搭建基于TCP且加密的DNS代理服务器来解决。

1、安装依赖包libsodium

wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.10.tar.gz
tar -xvzf libsodium-1.0.10.tar.gz 
cd libsodium-1.0.10/
CFLAGS="-O3 -fPIC" ./configure
make && make install
echo /usr/local/lib > /etc/ld.so.conf.d/usr_local_lib.conf
sudo ldconfig

2、安装dnscrypt-proxy

wget https://download.dnscrypt.org/dnscrypt-proxy/dnscrypt-proxy-1.7.0.tar.gz
tar -xvzf dnscrypt-proxy-1.7.0.tar.gz 
cd dnscrypt-proxy-1.7.0/src/libevent-modified/
CFLAGS="-O3 -fPIC" ./configure
make && make install
cd ../..
echo /usr/local/lib > /etc/ld.so.conf.d/usr_local_lib.conf
sudo ldconfig
./configure 
make -j 2 && make install

3、运行并加入开机自启动

[root@localhost ~]# /usr/local/sbin/dnscrypt-proxy --resolver-name=d0wn-sg-ns1 --local-address=127.0.0.1:35535
[root@localhost ~]#  vi /etc/rc.d/rc.local
#添加如下一行
/usr/local/sbin/dnscrypt-proxy --resolver-name=d0wn-sg-ns1 --local-address=127.0.0.1:35535
[root@localhost ~]#  chmod +x /etc/rc.d/rc.local

/usr/local/share/dnscrypt-proxy/dnscrypt-resolvers.csv中存放了已经支持dnscrypt查询的公共dns,上边表达式中的“-R d0wn-sg-ns1”代表的是这个文档中第一列的name。

主要需要指定解析服务器和端口,d0wn-sg-ns1是解析服务器列表中的第一个,速度还可以,自己找一个速度比较快的就可以。默认的端口是53,53必须留给dnsmasq用,所以必须换另外一个端口。
dnscrypt-proxy 服务启动之后,用dig命令查询 youtube.com 的 ip 测试一下:

dig @127.0.0.1 -p 35535 youtube.com
; <<>> DiG 9.9.4-RedHat-9.9.4-18.el7 <<>> @127.0.0.1 youtube.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53341
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;youtube.com.                   IN      A

;; ANSWER SECTION:
youtube.com.            1       IN      A       74.125.68.136
youtube.com.            1       IN      A       74.125.68.91
youtube.com.            1       IN      A       74.125.68.190
youtube.com.            1       IN      A       74.125.68.93

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun May 22 21:13:25 CST 2016
;; MSG SIZE  rcvd: 93

应该就能查询到正确的 ip 地址。

然后安装配置 dnsmasq。

yum install dnsmasq -y

dnsmasq 的配置文件在 /etc/dnsmasq.conf 中,在配置文件中写入:

#配置文件的目录,dnsmasq-china-list的配置文件就放在这个目录中,会陪自动加载
conf-dir=/etc/dnsmasq.d
#禁用resolv配置文件
no-resolv
no-poll
#resolv server 使用本机的dnscrypt-proxy
server=127.0.0.1#35535
#cache 大小,默认为150
cache-size=1500

然后将dnsmasq-china-list项目中的三个 .conf 配置文件放到 /etc/dnsmasq.d 目录下。

yum install git -y
git clone https://github.com/felixonmars/dnsmasq-china-list.git
cd dnsmasq-china-list
mv /root/dnsmasq-china-list/accelerated-domains.china.conf /etc/dnsmasq.d/
mv /root/dnsmasq-china-list/bogus-nxdomain.china.conf /etc/dnsmasq.d/

这样,一个无污染,快速的DNS服务器就搭建好了!

点赞