可以说DNS是整个Internet中,最薄弱的部分(虽然其他某些部分也不安全)。因为这个dns是UDP的,可以随便被修改,这样就会让你上冒牌网站了。想想就吓尿了。这也被我们伟大的墙利用了,当然这只是小手段。最近(2014.2.14)左右,youtube可以“直接”上了。瞬间让我看到了希望。习大大果然不同凡响。
为什么说是“直接”上呢?因为墙降低了手段,只用了DNS污染,只要DNS正确就能上youtube。这就方便多了,网速也很快。虽然我不怎么上youtube,但这是一种自由的象征。
不仅如此,如果你遭受了ARP攻击,而采用下面的DNS查询方式可以免于被DNS污染。可见安全的DNS是非常重要的,当然也是非常有意思的。
DNSCrypt 是由来已久的,目前有很多“free, DNSCrypt-enabled resolvers”,像opendns(我就用过这个,感觉很可以,所以就一直用着了。我就担心这些dns被墙掉)。而只有服务器也不行啊,需要工具与服务器交流。我使用的是dnscrypt-proxy。公开源码,可以自己编译。arch直接安装就好了。
1 2 3 | #pacman -S dnscrypt-proxy #systemctl start dnscrypt-proxy //启动服务,试用 #bash -c 'echo nameserver 127.0.0.1 > /etc/resolv.conf' //修改dns解析地址,最好先备个份 |
完成以上这几个步骤,可以打开测试地址,默认的dns解析服务器是opendns的,配置文件是/etc/conf.d/dnscrypt-proxy,可以进行修改,具体man dnscrypt-proxy。
如果测试成功,就可以进行下一步,不行的话也试试下一步再重启。
光有DNSCrypt还不是完美的,因为他没有cache,每次有query他都会重新访问OpenDNS。这样效率就低了,可以看看有cache和没有cache的区别。
没有cache:
有cache:
我是用unbound解决这个问题的,当然还有代替工具powerdns这样的,但是用不来。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #pacman -S unbound #vim /etc/unbound/unbound.conf 大概改成下面这样: server: username: "unbound" directory: "/etc/unbound" use-syslog: yes do-not-query-localhost: no port:53 forward-zone: name: "." forward-addr: 127.0.0.1@40 |
修改/usr/lib/systemd/system/dnscrypt-proxy.service, port 40。或者修改/etc/conf.d/dnscrypt-proxy,里面的DNSCRYPT_LOCALPORT=40。
准备完毕,可以开机启动服务。
1 2 | #systemctl enable dnscrypt-proxy #systemctl enable unbound |
最好重启一下。
最后有个问题,就是这里的53端口被监听了,我就不能建ap了,这个还不知道原理,以后再思考一下怎么解决。
链接:
速度飞了起来!但貌似不是特别稳定!
在学校的话,youtube什么的直接上,速度飞起。但家里就不行,家里就抵挡一下电信的拦截了。