Unbound | 域名解析&缓存
2019 11 11, Mon
之前我们在路由器上配置了简单的dnsmasq,但是没有配置DNS服务。逐个比较了一下各种dns服务器,决定用unbound来做内网dns缓存
DNS/nameserver
What
DNS服务就是我们日常访问网站的时候,把域名翻译成真实IP的服务。比如说我们访问coolshell.cn,那浏览器就会和DNS服务器请求’A coolshell.cn’,DNS返回150.95.172.163,然后我们的浏览器才会建立连接
Problems
但是实际上这套系统是可能有很多问题的。举几个例子:
Lantency
DNS解析是一级级的,你访问你家里的DNS服务器,如果找不到记录就会继续访问某个运营商的,运营商再访问它的上级,最后到根服务器,直到查到结果,或者确认没有为止。每一都需要时间,每一级都让人等那么一会儿,一级时间不长,加起来还是很让人焦躁。
Hijacking
DNS劫持是我们经常遇到的一个问题。劫持我们DNS的人可能是某个能接触到上游网络的人,也可能是伪基站,也可能是我们本应该很信任的电信运营商。
被劫持的结果也是各种个样,我们可能本来想访问网站A却访问到了网站B,找不到需要的资料,或者被窃取密码和个人信息,也可能发现自己无论访问什么网站,网页上都飘着广告。
事情说大不大,说小也不小。
Solution
在家里搭建一个DNS缓存。
Unbound
Unbound是我找到的一个相对比较成熟的DNS服务器,支持多种上游,比如说DNS over tls,可以有效防止DNS劫持。
可以用stubby代替
installation
CentOS自带
# yum install unbound -y
configuration
支持TLS的服务器不是很多,参考https://blog.ylx.me/archives/671.html
在/etc/unbound/unbound.conf中替换或者添加forward-zone
forward-zone:
name: "."
forward-ssl-upstream: yes
forward-addr: 1.1.1.1@853
forward-addr: 1.0.0.1@853
打开端口
# firewall-cmd --add-service=domain || iptables -n filter -I -p udp -dport 53 -j ACCEPT
把DHCP服务
Next Steps
如果你用的是国外的DNS服务器,会遇到淘宝、bili获取地址为国外的情况,需要改一下DNS结构
- unbound内加速国内域名
- 或者加一个dns relay,比如说dnsmasq,然后用 https://github.com/felixonmars/dnsmasq-china-list/raw/master/accelerated-domains.china.conf 加速国内域名