什么是DNS污染 解决DNS污染能解决由于DNS污染导致的被墙问题,事例: 微软OneDrive疑被屏蔽 雅虎Flickr被屏蔽 韩国版微信Kakao疑被屏蔽 之前流行的google hosts “翻墙” 解决DNS污染不能解决:
- 封IP导致的被墙问题:六月以来Google问题
- 封关键词/url导致的被墙问题:Line被关键字屏蔽
- 开心一刻——>sinaapp.co躺枪
如果遇到上面问题,请自行走海外线路vpn/proxy等,不过注意安全问题,GoAgent为例:GoAgent的安全风险
本文下面只介绍如何解决DNS污染投毒,当然个人个人PC解决方式还是很简单的,于是详细说下局域网如何解决
两个工具: dnscrypt-proxy:通过加密线路请求DNS解析 dnsmasq:DNS缓存服务器
假设局域网机器10.0.0.8,DNS服务器10.0.0.2 其中 dnscrypt-proxy监听127.0.0.1:35535 dnsmasq监听10.0.0.2:53
当我们发起一次DNS请求时,首先经过10.0.0.2:53向dnsmasq请求,如果cache里没有,dnsmasq会通过127.0.0.1:35535向dnscrypt-proxy请求,dnscrypt-proxy通过加密线路向世界各地提供此服务的DNS服务器请求解析
大概流程如上,其中涉及的关键技术官网都有,
下面是些配置及测试(基于archlinux):
因为dnsmasq依赖dnscrypt-proxy,可以先配置dnscrypt-proxy
pacman -S dnscrypt-proxy
cat /etc/conf.d/dnscrypt-proxy
DNSCRYPT_LOCALIP=127.0.0.1
DNSCRYPT_LOCALPORT=35535
DNSCRYPT_USER=nobody
DNSCRYPT_PROVIDER_NAME=2.dnscrypt-cert.opendns.com
DNSCRYPT_PROVIDER_KEY=B735:1140:206F:225D:3E2B:D822:D7FD:691E:A1C3:3CC8:D666:8D0C:BE04:BFAB:CA43:FB79
DNSCRYPT_RESOLVERIP=208.67.220.220
DNSCRYPT_RESOLVERPORT=443
systemctl start dnscrypt-proxy && systemctl enable dnscrypt-proxy
上面的provider可以这里查看,不过需要测试,很多不能用,测试:
dig -p 35535 google.com
dnsmasq:
pacman -S dnsmasq
cat /etc/dnsmasq.conf
server=127.0.0.1#35535
listen-address=10.0.0.2
cat /etc/resolv.conf
nameserver 127.0.0.1
systemctl start dnsmasq && systemctl enable dnsmasq
可以在10.0.0.8上测试了,nslookup google.com
最后,其实也可以通过unbound等优秀的软件实现,当然有时候dnscrypt也并不是很好用,因此没有洁癖的情况下dnsmasq也够的,可以结合dnsmasq-china-list