V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
OpenWrt 是一个专门面向嵌入式设备的 Linux 发行版。你可以将 OpenWrt 支持的型号的嵌入式设备,比如各种路由器上的系统,换成一个有更多可能性可以折腾的 Linux 系统。
OpenWrt 官方网站
orluna
V2EX  ›  OpenWrt

求助: OpenWRT + AdGuard Home + OpenClash 配置 DNS 抗污染和去广告

  •  
  •   orluna · 19 天前 · 883 次点击

    大家好!我在配置 OpenWRT + AdGuard Home + OpenClash 时遇到了一些问题,希望有经验的朋友能帮忙看看。

    当前环境

    物理机 pve 102.168.100.2 虚拟了 2 台虚拟机

    • OpenWRT (192.168.100.1):安装了 OpenClash 插件,负责网络代理。

    • AdGuard Home (192.168.100.214):负责 DNS 解析和去广告。

    当前配置

    1. OpenWRT:

      • 通过 DHCP 通告 DNS 服务器为 192.168.100.214 ,确保所有设备将 DNS 请求发送到 AdGuard Home 。
      • 其他默认的 dnsmap 没有修改
    2. OpenClash:

      • 使用 Fake-IP 模式,并禁用 DNS 劫持。

      • 配置了多个 DNS 服务器,包括 DoH 和 TLS 查询。

    3. AdGuard Home:

      • 上游 DNS 设置为并行请求模式,包含多个公共 DNS 服务(如 Quad9 、Cloudflare 、Google 等)。

    问题描述

    虽然 AdGuard Home 能够正常去广告,但 DNS 解析仍然存在污染问题(尤其是某些境外域名)。我怀疑是 DNS 请求的流向或 OpenClash 的 Fake-IP 模式配置有问题。

    具体配置

    AdGuard Home 上游 DNS ,这里不断在修改上游尝试

    https://dns10.quad9.net/dns-query
    #https://doh.pub/dns-query
    #tls://dns.pub
    tls://dns.google
    #1.1.1.1
    #8.8.8.8
    https://dns.cloudflare.com/dns-query
    #218.2.2.2
    #218.4.4.4
    

    OpenClash 的 DNS 配置

    dns:
      enable: true
      ipv6: false
      listen: 0.0.0.0:7874
      fake-ip-filter:
        - "+.lan"
        - "+.local"
        - "+.msftconnecttest.com"
        - "geosite:private"
      fake-ip-filter-mode: blacklist
      default-nameserver:
        - 114.114.114.114
        - 223.5.5.5
      nameserver:
        - https://doh.pub/dns-query
        - https://doh.360.cn/dns-query
      fallback:
        - "tls://8.8.8.8#\U0001F680 Proxy"
        - "tls://1.1.1.1#\U0001F680 Proxy"
      enhanced-mode: fake-ip
      fake-ip-range: 198.18.0.1/16
    

    疑问点

    1. 并行请求问题:并行请求是否会导致某些污染 DNS 结果被优先返回?
    2. AdGuard Home 规则:是否有推荐的抗污染规则或上游 DNS 组合?
    3. 感觉我这个方案整体流程就不太对?希望指正

    希望有经验的朋友能指点一下,看看我的配置是否有优化空间,或者是否有更好的抗污染方案。提前感谢!

    4 条回复    2025-08-18 11:11:20 +08:00
    COW
        1
    COW  
       19 天前 via Android
    AdGuard 上游指向 OpenClash 的 dns 服务
    orluna
        2
    orluna  
    OP
       18 天前
    @COW 这样改了一下 ad 返回的 ip 都是 fakeip 了 确实不会被污染 只是网速有点慢了
    Serino
        3
    Serino  
       18 天前
    个人建议弄两个 AdGuardHome ,一个专门解析国内,一个专门解析国外。
    甚至 3 个 AdGuardHome ,国内分出来一个运营商 DNS 。

    ```
    dns:
    cache-algorithm: arc
    enable: true
    prefer-h3: true
    listen: :35353
    ipv6: true
    enhanced-mode: redir-host
    proxy-server-nameserver:
    - '[AGH_国内加密 DNS]'
    nameserver:
    - '[AGH_国内加密 DNS]'
    nameserver-policy:
    'geosite:!cn':
    - [AGH_国外 DNS]
    direct-nameserver:
    - [AGH_运营商 DNS]
    ```


    或者这样
    ```
    dns:
    cache-algorithm: arc
    enable: true
    prefer-h3: true
    listen: :35353
    ipv6: true
    enhanced-mode: redir-host
    proxy-server-nameserver:
    - '[AGH_国内加密 DNS]'
    nameserver:
    - '[AGH_国内加密 DNS]'
    nameserver-policy:
    'geosite:private,microsoft@cn,category-games@cn,geolocation-cn':
    - [AGH_运营商 DNS]
    'geosite:!cn':
    - [AGH_国外 DNS]
    ```

    [] 根据自己情况修改,3 个 AGH 不消耗多少资源的。通过建 AGH 来实现分组。

    另外,没必要追求 Fake-IP





    看预览,回复的缩进没了,MD 语法好像没生效,不太晓得怎么弄,我发图吧
    Serino
        4
    Serino  
       18 天前
    ps. 也不要用 fallback ,而是用 nameserver-policy 或者 direct-nameserver
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3658 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 04:18 · PVG 12:18 · LAX 21:18 · JFK 00:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.