lisa主机lisa主机

使用AdGuard Home搭建一个无广告和跟踪的公共DNS

发布于:2019-02-28 Linux运维 64条评论

AdGuard Home 是一款全网广告拦截与反跟踪软件。在您将其安装完毕后,它将保护您所有家用设备,同时您不再需要安装任何客户端软件。随着物联网与连接设备的兴起,掌控您自己的整个网络环境变得越来越重要。

简单点说AdGuard Home就是一个公共DNS服务,如Google的公共DNS8.8.8.8,和DNSmasq一样AdGuard Home是开源的,可以自行搭建安装后在客户端配置使用。xiaoz之前分享过一个自己写的项目PHPDNS ,PHPDNS在DNSmasq的基础上开发了WEB界面,功能比较简单,不过该项目不在维护,这里推荐功能更加强大的AdGuard Home

AdGuard Home使用Golang开发,编译好了各大平台的二进制文件,因此安装非常简单,这里以CentOS 7为例,其它系统可参考官方帮助文档。

AdGuard Home主要功能

  • 拦截随处可见的广告
  • 注重隐私保护
  • 家庭保护模式
  • 自定义过滤

CentOS 7 X64安装

AdGuard Home二进制文件位于https://github.com/AdguardTeam/AdGuardHome/releases 可根据自己的平台下载最新版本。CentOS 7安装方法如下:

#下载AdGuard Home
wget http://soft.xiaoz.org/linux/AdGuardHome_v0.93_linux_amd64.tar.gz
#解压
tar -zxvf AdGuardHome_v0.93_linux_amd64.tar.gz
#进入AdGuardHome目录
cd AdGuardHome
#放行3000端口(AdGuardHome初始化需要使用)
#firewalld放行3000端口
firewall-cmd --zone=public --add-port=3000/tcp --permanent
firewall-cmd --reload
#iptables放行3000端口
iptables -A INPUT -p tcp --dport 3000 -j ACCEPT
service iptables save
#启动AdGuard Home
./AdGuardHome

运行AdGuardHome后,会提示打开http://IP:3000端口进行初始化,如下截图。

浏览器打开http://IP:3000,根据提示无脑的下一步即可。首次初始化会要求设置账号、密码(请牢记),下次登录需要使用。

AdGuardHome基本设置

设置中文

进入AdGuardHome后台 - 网页右下方 - 可设置为繁体中文,感觉是机器翻译的,不太准确,将就用。

设置上游DNS

AdGuard Home默认使用Cloudflare DNS作为上游服务器,如果您服务器在国内可能请求上游DNS延迟比较高,在后台 - 设定 - 可以设置为国内的DNS,如腾讯的119.29.29.29,但坏处是不支持DNS over TLS

过滤器

在后台 - 过滤器,可以看到AdGuardHome内置了部分广告过滤规则,但在中国有点水土不服,如果要想更完美的实现广告屏蔽还需要自己添加规则。

以下是过滤规则的一些说明,更多规则可以在AdGuardHome后台查看或参考官方帮助文档。

  1. ||example.org^ - 封锁example.org域及其他子域
  2. @@||example.org^ - 解除封锁example.org域及其他子域
  3. 127.0.0.1 example.org - 将example.org host指向到127.0.0.1(不包含其他子域)
  4. ! - 注释符号
  5. # - 也是一个注释符号
  6. /REGEX/ - 正则表达式模式

额外设置

为了方便管理,可以继续输入命令./AdGuardHome -s install安装为服务,然后就可以使用下面的命令来进行管理了。

#启动
systemctl start AdGuardHome
#开机自启
systemctl enable AdGuardHome
#重启
systemctl restart AdGuardHome
#停止
systemctl stop AdGuardHome

DNS默认使用53(TCP/UDP)端口进行通信,因此别忘记放行53端口,否则DNS无法正常使用。

#firewalld放行53端口
firewall-cmd --zone=public --add-port=53/tcp --permanent
firewall-cmd --zone=public --add-port=53/udp --permanent
firewall-cmd --reload
#iptables放行53端口
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
service iptables save

总结

AdGuard Home支持MacOS、Windows、Linux、树莓派等系统,提供二进制和docker安装方式,安装简单。AdGuard Home还提供了直观的统计系统,使用方便。如果您打算自建一个公共DNS,AdGuard Home值得一试。

其它

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注


已有 64 条评论

  1. 吹水波

    在买了轻量服务器,域名是否需要备案?只开doh

    1. xiaoz 吹水波

      国内服务商的服务器貌似不允许53端口和用于DNS(比如腾讯云)

  2. 望风飘

    求助,为什么装完并使用ip作为dns之后,国内国外的网都上不去了!求助。我是用国外vps搭建的。

    1. xiaoz 望风飘

      检查下53端口是否监听,防火墙是否放行53端口。

      1. 望风飘 xiaoz

        请问怎么查是否监听?

  3. 陈浩

    你好,我ESXI虚拟安装了爱快(主路由),openwrt(旁路由),安装了centos7(内装ADGUARDHOME),我想问,我centos7的DNS该怎么设置?望指教,谢谢!

    1. xiaoz 陈浩

      如果CentOS 7要使用AdGuard Home的DNS,只需要修改/etc/resolve.conf,填写nameserver 127.0.0.1即可。

      1. 陈浩 xiaoz

        非常感谢

  4. 橙子

    搭建好了,个人电脑如何设置?是不是直接设置个人电脑的dns就可以了?另外我想把指定的网址解析到另外一个ip地址怎么操作,比如把百度解析到我的ip上面?

  5. z

    AdGuard Home 无法为这个网络接口自动配置它。请参阅如何手动完成此操作的说明

    这个怎么办啊?无法读取服务器IP

    1. xiaoz z

      请参阅如何手动完成此操作的说明,手动设置为0.0.0.0呗

      1. z xiaoz

        – -设置了不能访问,发现有两道防火墙。。

        然后请问有没有办法国内外分流啊。路由器有海外IP自动中专。用海外服务器搭建全解析到海外IP全中转了。用国内服务器又在墙内。

        1. zz z

          我也是这种状况,请问你怎么解决的。

  6. 倩派微了

    提交命令时 ./AdGuardHome
    出现 Segmentation fault

    1. xiaoz 倩派微了

      你啥系统啊,是X64吗?

      1. 倩派微了 xiaoz

        是的

        1. xiaoz 倩派微了

          我的没有问题,是不是在Github下载的时候平台选错了?

      2. 倩派微了 xiaoz

        是不是还需要什么依赖包

        1. xiaoz 倩派微了

          二进制的不需要依赖包,是Github下载的么?

      3. 倩派微了 xiaoz

        github下载的0.10版

        1. xiaoz 倩派微了

          应该是这个:https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.102.0/AdGuardHome_linux_amd64.tar.gz 你不会下到ARM的去了吧?

      4. 倩派微了 xiaoz

        不好意思,还真下错了

  7. moon

    您好,请问下安装完之后过不久就无法访问管理界面是什么原因导致的,多次重装了

    1. moon moon

      提示拒绝了我们的连接请求。

    2. xiaoz moon

      重装无法解决问题的,无法打开的时候看下进程是否还在运行,尝试重新启动(systemctl start AdGuardHome)看能否恢复正常,检查下服务器日志是否有内存不足的情况,导致进程被kill

    1. xiaoz 冷月无声

      请贴出您的完整错误提示

  8. map

    博主,搭建好了DNS设置,规则添加,正常运行,本地DNS改成IP后无法上网呢?日志里也没显示

    1. xiaoz 小虾米

      感谢分享,空了我研究下。

  9. Geralt

    好文章,赞一个。

  10. 热心市民先生杨

    这个还得自己买台vps吧?还是直接用onedns过滤广告来的方便了

  11. Gin

    QPS有点低,只有个位数

    1. xiaoz Gin

      你是怎么测试出来的?

      1. Gin xiaoz

        用queryperf 测试,解析www.163.com最高测试是10QPS,解析自定义规则(打算将这功能用于内网污染)QPS最高为8。
        具体测试命令:
        queryperf -d 163.txt -s 127.0.0.1
        queryperf -d localtest.txt -s 127.0.0.1

        这两个星期一直在找一款高性能有良好web支持的DNS,用于企业内部。目前知道的有powerdns、bind-dlz、namedmanager。不知道博主有没有推荐的。

        1. xiaoz Gin

          其它的有unbound 和 DNSmasq,但具体性能没有测试过,不知道是否满足阁下要求。

          1. Gin xiaoz

            unbound这个没了解过,dnsmasq的话有使用过,命中缓存QPS很好看,但是会出现缓存错乱(像hosts绑定的域名解析到公网IP)以及较多解析超时。
            dnsmasq也有个不错的第三方webui:DNSmasqWeb

          2. Gin xiaoz

            今天研究了下adguardhome的配置文件,发现有两个参数可以提升QPS(提升很大)。
            ratelimit: 0 #DDoS保护,客户端每秒接收的数据包数。要禁用设置0,默认值为20.(之前测试主要是这功能影响的)
            blocked_response_ttl: 60 #TTL缓存时间

          3. xiaoz Gin

            那优化下参数效果应该还是可以的。

  12. wys

    内网架设好了简直就是神器,功能就不多说了,好处多多。

  13. XX

    怎么卸载呀?怎么卸载呀?怎么卸载呀?怎么卸载呀?怎么卸载呀?怎么卸载呀?怎么卸载呀?完了,服务器网站打不开了

    1. xiaoz XX

      那是因为你搭建的时候选择了使用80端口,和网站冲突了。直接停止服务,删除软件即可。

      1. XX xiaoz

        我暂停了,安装的文件在哪里,怎么卸载?

        1. xiaoz XX

          这是二进制的绿色文件啊,你下载到哪个目录的就删除哪个目录。

      2. XX xiaoz

        Linux系统安装的,就是输入那个代理就开始解压安装

        1. xiaoz XX

          试试systemctl disable AdGuardHome

          1. XX xiaoz

            谢谢,我搜索那个下载的压缩包,搜索到了文件,然后我删除了整个文件夹

  14. XX

    有没有视频教程?我搭建完成后,我的网站都打不开了,重启服务器都没有用

  15. 阿秀

    折腾折腾不小心吧广告折腾没了,哈哈

    1. xiaoz 菜鸟运维

      是的,实时生效。

  16. 增大网

    没玩过博客,认真学习学习!

  17. thb211

    用国外的vps还是被污染毕竟还是53端口

    1. 望风飘 thb211

      有什么解决办法吗?

  18. Busby

    博主你好,请问你搭建后平均解析时间如何,我上游dns设置了阿里和腾讯,昨天一晚上平均解析时间从400多猛增到10000,明显感到慢了很多。是挂载在寝室树莓派上。

    1. xiaoz Busby

      我这里后台统计的平均解析时间是45.55ms,可能树莓派性能太弱了。

      1. Busby xiaoz

        谢谢,可能确实是这样,换了台vps,解析时间也在50ms以内了

  19. 阿泽

    是不是在VPS上搭建,然后本地DNS地址改成VPS的IP就行了。
    感觉这个真的是比较实用的东西,适合Geek精神的我们去尝试,不过这个需要VPS的与家里网络的延迟不能太高吧。
    如果有更多一些现成规则可以导入或者在线更新,那就完美了。

    1. Cpt 阿泽

      难道不是是在家庭服务器里搭建吗 [一脸懵逼]
      不知道有现成docker镜像没 [🤭]

      1. 阿泽 Cpt

        对对,也是,我给想叉了,哈哈哈

      2. xiaoz Cpt

        家庭服务器或者延迟低的VPS都可以搭建,并没有局限。

        1. Cpt xiaoz

          那是,昨晚装NAS docker里了,用着不是那么明显😅

    2. xiaoz 阿泽

      找一台延迟低的VPS就行了,里面内置了一些广告过滤规则,也可以自己添加规则。