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结构