OpenWrt配置DNSCrypt防止DNS污染

标签: , , , , ,

之前我一直在OpenWrt上使用pdnsd通过TCP协议进行DNS查询来防止DNS污染,无奈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对应版本的源:

Barrier Breaker:

src/gz exopenwrt http://exopenwrt.and.in.net/barrier_breaker/ar71xx/packages/exOpenWrt

Attitude Adjustment:

src/gz exopenwrt http://exopenwrt.and.in.net/attitude_adjustment/ar71xx/packages

trunk:

src/gz exopenwrt http://exopenwrt.and.in.net/trunk/ar71xx/packages/exOpenWrt

然后使用命令安装:

$ opkg update
$ opkg install dnscrypt-proxy

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

如果想获得更快的速度,可以在dnsmasq和DNSCrypt之间加上一个pdnsd做永久缓存,具体如何配置参考pdnsd的文档。

参考链接:http://wiki.openwrt.org/inbox/dnscrypt

随机文章:

  1. C#清除WebBrowser的Cookie缓存
  2. VBS实现Unicode(UTF-16)转UTF-8
  3. VBS面向对象编程与Me关键字
  4. PHP return语句
  5. VBS基础教程第一篇

3 条评论 发表在“OpenWrt配置DNSCrypt防止DNS污染”上

  1. javake说道:

    意思是装了这个之后 可以访问 google了 ???
    不用 ss ?

  2. __说道:

    5.11.11.5 非洲公共DNS,时延还成。可以考虑上https://cn.vnet.link买个电信CN2的链路。

留下回复