今天突然看到原来大名鼎鼎的AdGuard开源了一个AdGuard Home,原理就是在dns查询的层面就拦截了广告域名,达到不加载广告就拦截广告的目的,而且因为是dns,所以只需要给设备配置dns就可以,简单方便。
由于是dns,所以大家尽量采用国内的服务器来搭建,因为我们这个还需要配置上游dns,上游dns查询的结果是根据服务器的位置来的,所以如果你用国外的服务器,要查询的网站使用的全球cdn,那么查询到的就是国外cdn的地址,这无形中会减慢网页加载的速度。
亲身实践,不要买腾讯云,腾讯云会检测你是否开放了53端口(dns端口),如果开放了并且有流量通过则会发出警告。
下面我们开始操作
我这里以Centos7演示
Shell
#下载AdGuard Home
wget https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.102.0/AdGuardHome_linux_amd64.tar.gz
#解压
tar -zxvf AdGuardHome_linux_amd64.tar.gz
#进入AdGuardHome目录
cd AdGuardHome
1
2
3
4
5
6
#下载AdGuard Home
wgethttps://github.com/AdguardTeam/AdGuardHome/releases/download/v0.102.0/AdGuardHome_linux_amd64.tar.gz
#解压
tar-zxvfAdGuardHome_linux_amd64.tar.gz
#进入AdGuardHome目录
cdAdGuardHome
解压完之后你需要开通3000、53、以及80端口,如果你的服务器已经有网站占了80端口就换成其他自定义的端口。
注意:宝塔面板开的端口经测试,只是开了tcp的端口,而udp则没有开,dns查询默认使用udp,所以53端口需要命令开通udp。
#firewalld放行53端口udp
firewall-cmd --zone=public --add-port=53/udp --permanent
firewall-cmd --reload
1
2
3
#firewalld放行53端口udp
firewall-cmd--zone=public--add-port=53/udp--permanent
firewall-cmd--reload
ok,开通了端口之后在AdGuardHome目录下将AdGuardHome注册成服务
Shell
./AdGuardHome -s install
1
./AdGuardHome-sinstall
之后你就可以用以下命令控制AdGuardHome
Shell
#启动
systemctl start AdGuardHome
#开机自启
systemctl enable AdGuardHome
#重启
systemctl restart AdGuardHome
#停止
systemctl stop AdGuardHome
1
2
3
4
5
6
7
8
#启动
systemctlstartAdGuardHome
#开机自启
systemctlenableAdGuardHome
#重启
systemctlrestartAdGuardHome
#停止
systemctlstopAdGuardHome
运行AdGuardHome后会提示打开http://ip:3000来初始化AdGuardHome
只需要根据自己需要修改后台80端口,其他一路默认。
如果你步骤都是对的,那么你应该可以打开AdGuardHome的后台了。
点击设置、DNS设置,这里可以设置上游dns,也就是你的服务器要请求的公共dns,你可以填写诸如腾讯、阿里、114等公共dns地址
dns服务设定中限制修改为0,并且禁用ipv6
然后点击过滤器,dns封锁清单,里面内置了AdGuard的基础拦截规则,但在中国可能水土不服,所以我们需要添加自定义规则。下面是我推荐的3个规则,至少可以拦截99%的广告。点击添加阻止列表添加它们。
1、adgk去广告规则:https://gitee.com/banbendalao/adguard/raw/master/ADgk.txt
2、乘风规则:https://raw.githubusercontent.com/xinggsf/Adblock-Plus-Rule/master/ABP-FX.txt
3、乘风规则2:https://gitee.com/xinggsf/Adblock-Rule/raw/master/rule.txt
最后就是设置你自己的dns,AdGuard Home很贴心的给我们很多设备的设置方式。
下面就是测试dns是否生效,我这里以windows为例,在设置好dns后打开cmd
nslookup www.baidu.com
1
nslookupwww.baidu.com
如果能够成功查询到baidu的ip,再返回AdGuard Home后台刷新状态就可以看到dns查询+1了。