侧边栏壁纸
博主头像
いちごみるく

行动起来,活在当下

  • 累计撰写 70 篇文章
  • 累计创建 48 个标签
  • 累计收到 55 条评论

目 录CONTENT

文章目录

passwall+Adguard+(smartdns)实现DNS分流&去广告

本文说明 AdGuard Home、Xray 与客户端之间的 DNS 查询路径、端口和验证方法。是否需要多个解析器取决于部署结构,开启嗅探也不能替代可靠的 DNS。

一、先画出实际查询链

PassWall 处理代理与路由,dnsmasq 提供 DHCP 和本地名称,AdGuard Home 提供 DNS 过滤,SmartDNS 可按上游与测速策略处理 DNS。把它们都安装,并不自动得到正确分流。

若希望国内和远程查询都经过同一套过滤,可以采用:

LAN/本机 DNS 入口 → AdGuard Home → DNS 分流器 → 本地或远程上游
                                └→ 本地域名/私网 PTR 的 dnsmasq

分流器可以是按实际固件生成配置工作的 PassWall DNS 链,或者mosdns v5。选择一个明确的分流入口,避免两个组件重复劫持同一批请求。SmartDNS 是可选项,不是实现广告过滤的前提。

本地 AdGuard Home 只过滤经过它的请求。如果将它仅放在国内分支,远程分支自然绕过过滤;解决办法可以是调整位置,而不是必然在 VPS 再部署一个实例。远程公开 DNS/DoH 还需要限制访问,避免没有授权的用户消耗服务。

二、端口与循环检查

职责 一个示例
客户端传统 DNS 的有效入口 LAN 的 53,监听或 redirect 二选一,实际实现以固件为准
AdGuard Home 5553,上游指向公共查询分流器
mosdns,可选 127.0.0.1:5335
SmartDNS,可选 127.0.0.1:6053,不再指回 mosdns
dnsmasq DHCP、本地名称与 PTR 数据源,不能把这些查询再送回调用者

如果现有 AdGuard Home 监听在 5353 或其他端口,采用此示例时需同时核对监听、上游和重定向目标。端口不是软件的固有值。

例如 AdGuard Home 查询 .lan 和私网 PTR 时,可定向到真正提供这些数据的 dnsmasq;若固件把本机 127.0.0.1:53 也重定向至 AdGuard Home,这个定向上游必须改为不会被重定向的实际地址。否则会出现 AdGuard Home → loopback 53 → AdGuard Home 的递归。我的 Actions-OpenWrt 项目针对这种情况有配套实现,任意固件不能只照搬端口。

检查 socket、生成配置与防火墙规则,确认 UDP/TCP、IPv4/IPv6 的真实路径。路由器本机的 OUTPUT 与 LAN 的 PREROUTING 是不同入口;只配置 LAN 接管不能保证路由器本机也使用同一解析链。

三、解析与代理要使用相容的出口

远程 DoH/DoT 应能通过指定出口连接,TLS 证书应正常校验,不要用关闭校验代替排障。它们加密的是解析器连接,不能保证权威答案、广告拦截或整个网络没有泄露。AdGuard Home 官方配置可核对上游、bootstrap、过滤与客户端访问限制。

ECS 是 EDNS Client Subnet,不是 ESC。发送子网可能帮助支持它的上游选择 CDN,也可能泄露客户端网络信息;不支持它的上游可能忽略。用固定日本子网不代表代理真正从日本出口访问,也不能保证得到“日本的 IP”。

SmartDNS/AdGuard Home 的最快地址测量发生在该程序所在网络。路由器本地测量与 VPS 出口速度可能不同;本地部署不必然慢,远程部署不必然更优。需要以真正的访问路径测量。

Xray 嗅探可能从某些连接恢复域名,但不能恢复所有流量,也不会修复所有直连查询;说明见routeOnly 与解析。IPv6 也应同时核实 DNS AAAA、代理支持、默认路由及防火墙,不能仅靠开关判断。

四、缓存与最小验收

先用明确的普通缓存,再按测试结果决定是否开启乐观缓存、serve-expired 或预取。叠加多个过期缓存会使 DDNS 更新和故障定位更难。过滤规则变更后,确认旧缓存不会继续返回已禁止的结果。

验收至少覆盖:

  1. LAN 客户端和路由器本机都能解析;AdGuard Home 日志能对应到实际查询。
  2. 国内与远程规则各选择一个域名测试,直接与代理连接均正常。
  3. 本地域名、私网 PTR、A/AAAA、TCP/UDP 和需要的 HTTPS 记录正常。
  4. 广告/阻止名单在两条分支均生效,允许名单没有被误拦截。
  5. 重启 AdGuard Home、reload 防火墙、重启 PassWall 后,查询链仍一致,没有重复规则与递归超时。

浏览器自带 DoH、应用硬编码解析和 VPN 可能绕过这个入口,DNS 泄露网站只能反映当前被测应用路径。路由器、客户端与应用各自的解析路径都应分别验证。

0

评论区