CoreDNS常规用途是用于k8s内的DNS和服务发现,但因为这个东西有很多插件又是go开发的,所以完全可以单独拿来出使用。
CoreDNS的配置语法也非常简单是类Caddy的,这里我把它部署在本地局域网的一台Debian9内,实现无污染的DNS和广告过滤。当然它也支持Windows等其他平台,你直接装在电脑内使用也是可以的。总而言之CoreDNS是一款扩展性很强的工具。
安装supervisor:
apt -y update apt -y install supervisor
下载/解压coredns:
mkdir -p /opt/coredns && cd /opt/coredns wget https://github.com/coredns/coredns/releases/download/v1.6.5/coredns_1.6.5_linux_amd64.tgz tar -xzvf coredns_1.6.5_linux_amd64.tgz
下载hosts文件,用于屏蔽广告域名(不需要屏蔽广告的话可以省略这些步骤)
wget https://github.com/StevenBlack/hosts/archive/2.5.28.tar.gz tar -xzvf 2.5.28.tar.gz cp hosts-2.5.28/hosts ./adblock.hosts
新建一个CoreDNS的配置文件:
nano Corefile
写入如下配置:
. { hosts adblock.hosts { fallthrough } forward . tls://1.1.1.1 tls://1.0.0.1 { tls_servername cloudflare-dns.com health_check 5s } cache 30 log }
注:
1.hosts配置块指定hosts文件,不在hosts文件内的域名全部移交给下一个配置块解析。
2.forward配置块用于DNS转发,将请求转发到支持DoT的DNS上防DNS污染。
配置好了之后新建一个supervisor的配置文件:
nano /etc/supervisor/conf.d/coredns.conf
写入:
[program:coredns] priority=1 directory=/opt/coredns command=/opt/coredns/coredns -conf Corefile autostart=true autorestart=true redirect_stderr=true stdout_logfile=/var/log/supervisor/coredns.log
更新supervisor配置然后查看coredns的运行状态,回显RUNNING就OK了:
supervisorctl update supervisorctl status coredns
简单测试一下是否能够正常工作:
未完待续。。因为我发现支持hosts这种格式的广告屏蔽规则不是很多,屏蔽的不彻底。。
不知道这个能不能把自己搭建的adguardhome做上游,然后在adguardhome添加过滤规则,这样能否过滤掉广告。
直接用adguardhome好像效果不好,油管的广告都过滤不了。最近一直在找一个dns方案能过滤掉油管广告的
你是不是说错了。。adguardhome的效果不好你还把adguardhome做上游然后继续在adguardhome里面添加规则??那最后和直接用adguardhome没区别呀。
好久没来了,一来就看到DNS相关的文章。正好最近需要,我也试试。
屏蔽规则的话还是自己改吧,比如这个我自己用的 https://www.codepile.net/pile/p2d8RD2G