OpenWrt中DNS配置实现全局去广告

OpenWrt中DNS配置实现全局去广告

问题

最近家里DNS一直有问题,重新梳理了以下,目前是adguardhome作为dnsmasq的上游服务器,也就是说客户端请求先通过dnsmasq分流,国内的域名上游为adguardhome,国外域名上游为PDNSD,这样就导致adguardhome里的请求都是localhost,而且国外的请求不走adguardhome的过滤

解决思路

让AdGuardHome作为直接接受53端口的DNS请求,AdGuardHome进行给广告过滤后再将请求转发给dnsmasq,dnsmasq对域名根据科学上网列表进行处理,国内域名直接走运营商DNS服务器,科学上网域名转发到PDNSD进行解析。

优点

在去广告列表里的域名可以全局生效,手机也能加强一点点隐私保护;其次AdGuardHome里也能看到不同客户端的DNS请求了,同时也可以看到及过滤外网网站的请求了

配置方法

  • 首先在网络配置-DHCP/DNS-高级设置中,将 DNS 服务器端口改为6666
  • AdGuardHome 插件后台,重定向模式为: “使用53端口替换dnsmasq”
  • AdGuardHome web后台,将上游DNS服务器设置为: 127.0.0.1:6666
  • 然后在网络配置-DHCP/DNS-基本设置中,将上游DNS服务器设置为光猫IP

遇到的问题

  • AdGuardHome设置为“重定向53端口到AdGuardHome”失败,原因是wsdd2服务占用了5355端口,在软件包管理中卸载即可
  • 不需要注释iptables的禁用53端口的规则

逻辑图