首页 公告 项目 RSS

使用smartdns作为你的内网dns服务器

November 23, 2020 本文有 870 个字 需要花费 2 分钟阅读

简介

我使用过很多dns软件,但是唯独没有使用过bind,这个真的很有意思,今天要说的是smartdns,一个十分优秀的dns服务器

为什么要使用它

为了对抗dns污染,大家都知道一点的是dns污染最大的原因是dns使用了udp协议,所以理论上如果你的dns查询请求发出之后,如果dns劫持设备的发出的响应比真正dns服务器的响应包快的话,你永远会获取不到真正的域名ip,就比如我家的宽带请求某些域名得到的响应ip永远是127.0.0.1,这个就很有意思了,所以为了解决这个问题内网的dns服务器是要支持doh(DNS Queries over HTTPS和dot(DNS over TLS ),正好smartdns是支持使用dot或者doh方式去获取dns解析结果的。

当然除了解决dns污染,还有一个好处就是smartdns支持定义多个上游dns服务器,并且同时对上游的服务器进行查询,支持返回最快的ip地址,也支持域名分流,支持添加自定义解析,支持缓存查询结果,最关键的是支持持久化缓存的查询结果,不会因为dns服务器重启导致缓存丢失,跨平台,不仅x86平台可以使用,树莓派也是可以的

安装

首先clone项目

git clone https://github.com/pymumu/smartdns.git

之后编译

cd smartdns

make

当然可能需要安装openssl依赖,如果你没有的话

dnf install openssl-devel

make install

之后就是启动了

systemctl restart smartdns.service

如果一切正常,那么应该就可以解析域名了,之后我们自定义配置一下

定义一下缓存的记录

cache-size 409600

缓存持久化

cache-persist yes

持久化缓存文件的路径

cache-file /home/smartdns.cache

定义一下日志相关的东西

log-level info # 日志级别
log-file /home/smartdns.log # 日志文件路径
log-size 12800k # 日志文件大小
log-num 10 # 保留的日志文件数量

定义几个上游的dns服务器

server 114.114.114.114 
server 223.5.5.5 
server 119.29.29.29 
server 8.8.8.8 
server 8.8.4.4 
server 208.67.222.222 
server 119.29.29.29 
server 1.2.4.8 

-group的意思是

定义几个tls dns服务器

server-tls 1.0.0.1:853 
##RedFish
server-tls 118.89.110.78:853 
server-tls 47.96.179.163:853 
##GeekDNS
server-tls 119.29.107.85:853 
server-tls 47.101.136.37:853 

定义几个https dns服务器

server-https https://dns.google/dns-query 
server-https https://cloudflare-dns.com/dns-query 
server-https https://dns.rubyfish.cn/dns-query 
server-https https://sdns.233py.com/dns-query 

多定义几个没事,因为就算dns服务器访问不了,只要有一个dns服务器可以查询那么就可以返回正确的结果

定义自定义域名

address /redis.bboysoul.cn/10.10.100.121

详细的参数可以看

https://pymumu.github.io/smartdns/

最后说几句

这几天使用下来的感受还可以,功能上比dnsmasq强很多,之后慢慢观察吧,内网的速度也快了很多

欢迎关注我的博客www.bboy.app

Have Fun