Google和OpenDNS提供的DNS服务器地址经常被屏蔽或者恶意修改,所以有必要启用DNSCrypt了。
DNSCrypt是OpenDNS发布的加密DNS工具,可加密DNS流量,阻止常见的DNS攻击,如重放攻击、观察攻击、时序攻击、中间人攻击和解析伪造攻击。DNSCrypt支持Mac OS和Windows,是防止DNS污染的绝佳工具。
有人把DNSCrypt移植到了OpenWrt上面,称为dnscrypt-proxy-openwrt,下面是在OpenWrt上安装和配置的方法:
1、安装DNSCrypt,对于ar71xx平台,black-roland维护了一个第三方的软件包,在/etc/opkg.conf文件中添加OpenWrt对应版本的源:
wget http://exopenwrt.and.in.net/trunk/ar71xx/packages/exOpenWrt/libsodium_0.7.0-1.E_ar71xx.ipk wget http://exopenwrt.and.in.net/trunk/ar71xx/packages/exOpenWrt/dnscrypt-proxy_1.4.0-5.E_ar71xx.ipk opkg install libsodium_0.7.0-1.E_ar71xx.ipk dnscrypt-proxy_1.4.0-5.E_ar71xx.ipk
2、配置DNSCrypt,DNSCrypt默认监听127.0.0.1:2053,可以通过/etc/config/dnscrypt-proxy文件进行配置。
config dnscrypt-proxy option address '127.0.0.1' option port '2053' # option resolver 'opendns' # option resolvers_list '/usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv'
resolver默认是opendns,可以改成其他的public DNSCrypt resolvers。
然后设置开机启动DNSCrypt:
/etc/init.d/dnscrypt-proxy enable /etc/init.d/dnscrypt-proxy start
由于DNSCrypt可能会在网络接口完全连接之后启动,所以有可能会失败,所以最好在/etc/rc.local里面添加:
sleep 10 /etc/init.d/dnscrypt-proxy start
3、配置dnsmasq,由于使用DNSCrypt查询DNS会比较慢,所以不想所有域名都通过DNSCrypt来解析,而是针对被污染的域名使用DNSCrypt,这样速度会快一些,可以编辑/etc/dnsmasq.conf,将需要走DNSCrypt的域名添加上:
server=/twitter.com/127.0.0.1#2053 server=/google.com/127.0.0.1#2053 server=/youtube.com/127.0.0.1#2053 server=/facebook.com/127.0.0.1#2053 ......
配置完之后重启dnsmasq,就可以试试看效果了:
root@OpenWrt:~# nslookup twitter.com Server: 127.0.0.1 Address 1: 127.0.0.1 localhost Name: twitter.com Address 1: 199.59.148.82 r-199-59-148-82.twttr.com Address 2: 199.59.148.10 r-199-59-148-10.twttr.com Address 3: 199.59.150.7 r-199-59-150-7.twttr.com Address 4: 199.59.149.198 www2.twitter.com