pdone

使用 ADGuardHome 时遇到的一个困扰很久的问题

  •  
  •   pdone · Aug 11, 2025 · 3236 views
    This topic created in 299 days ago, the information mentioned may be changed or developed.

    我的 adg 部署在家里的 NAS 上,只有公网 IPv6 ,通过 DDNS 日常使用没有问题。

    在家里,手机电脑等设备,都与 adg 在同一局域网下,但由于设备都是优先使用 IPv6 ,访问内网服务时,比如访问 NAS 后台( nas.abc.cc ),还会去 adg 的上游 DNS 查询一下 v6 地址,而不是直接使用内网 IP ( 10.0.0.10 ),而每次查询都有 100ms 左右的耗时,即使在内网也能明显感觉使用 adg 做 DNS 时,访问网页会变慢。

    用 adg 本意是为了屏蔽广告,尝试了各种方法,自定义过滤规则,重写 DNS 等,都只能顾一头,比如

    ||*.abc.cc^$client=myphone,dnstype=A,dnsrewrite=10.0.0.10
    

    这样写规则,内网使用没问题,但在外网访问时,会同时查询到公网 v6 和内网 v4 地址,但由于 v4 几乎无延迟就查询到了,返回给下游的是内网 v4 ,在外网就访问不了。

    帅气的 v 站老哥们,有没有解决方案啊,在内网使用时仅返回内网 v4 ,外网仅返回公网 v6 。 (在使用同一个私人 DNS 地址的情况下,不用每次回家或出门时修改私人 DNS 服务器)

    20 replies    2025-08-18 12:23:38 +08:00
    itiao
        1
    itiao  
       Aug 11, 2025
    试试看开启 禁用 IPV6 解析?
    Puteulanus
        2
    Puteulanus  
       Aug 11, 2025   ❤️ 1
    试试用 client 规则呢,客户端那边能不能区分出内网和外网的解析,然后让规则只应用在内网请求上面

    pdone
        3
    pdone  
    OP
       Aug 11, 2025
    @itiao 禁用 v6 解析 在局域网以外就访问不了了

    @Puteulanus 客户端是用安卓系统自带的私人 dns 设置,使用的是 doh ,如果每次出门都修改这个 doh 地址,可以实现分别解析 v6 和 v4 ,不过这样要经常修改
    Puteulanus
        4
    Puteulanus  
       Aug 11, 2025
    @pdone 我是说 adguard home 的 客户端 设置,能不能比如把家里的 v6 段划成一个客户端,然后用 client 修饰符让规则只应用于家里过来的请求,这样就把内网和外网的 DNS 请求给分开了

    pdone
        5
    pdone  
    OP
       Aug 11, 2025
    @Puteulanus #4 这个思路可以,我尝试一下,感谢👍
    jesky
        6
    jesky  
       Aug 11, 2025
    看起来你在意的是“每次查询都有 100ms 左右的耗时”,那你就把你的域名 *.abc.cc 指定为公网 IPv6 就可以了,然后需要一个脚本定时更新这个记录,就如同 DDNS 服务定时把 IP 更新到 DNS 服务器,你这个就等于是定时更新到本地 DNS 服务里。
    pingdog
        7
    pingdog  
       Aug 11, 2025 via Android
    内网 v6Only ,做 dns64
    pdone
        8
    pdone  
    OP
       Aug 11, 2025
    @Puteulanus 再次感谢老哥,按你的思路也已经解决目前的困扰了

    @jesky 是的,这是接下来要优化的地方,既然 ddns 能更新记录,我也要更新 adg 的记录,就不用每次去上游查询了

    @fuzzsh 我研究一下
    pingdog
        9
    pingdog  
       Aug 11, 2025 via Android
    手机 PC 网用 v6 Only 没问题,有嵌入式设备就要另外开 wifi, 大多数不支持 ipv6
    mac100
        10
    mac100  
       Aug 11, 2025
    @Puteulanus 完全看不明白什么意思。。
    bjfane
        11
    bjfane  
    PRO
       Aug 11, 2025
    家里的东西 虽然 ipv6 ,是不是套一层 vpn 比较好,比如 wg , 不知道有没有成熟的 v4 on ipv6 的解决方案。
    pdone
        12
    pdone  
    OP
       Aug 12, 2025
    @Puteulanus @jesky 结合两位老哥的思路,已经完全解决问题,总结一下方法给其他可能用到朋友提供一个参考。




    以上可以实现客户端在内网时,返回内网 ipv4 ,在外网时,返回公网 ipv6 ,适用于只有公网 ipv6 的 adg 或 nas 。




    以上可以实现个人服务器已知域名的动态公网 ipv6 不再去上游 dns 查询,大幅降低查询耗时,我这里之前平均 100ms 以上,改为从规则匹配后降低到 1ms 内。

    参考文档
    https://github.com/AdguardTeam/AdGuardHome/tree/master/openapi
    https://adguard-dns.io/kb/zh-CN/general/dns-filtering-syntax/
    pdone
        13
    pdone  
    OP
       Aug 12, 2025
    #12 另外黑名单中的规则,也可以放在 ddnsgo webhook 的请求体里,就不用添加黑名单,不过这部分都是固定内容,不必每次 ipv6 变化后都重新设置,所以选择分开设置这两部分规则。
    jesky
        14
    jesky  
       Aug 12, 2025
    @pdone #12 祝贺解题成功。不过,请教一下,你执意实现“内网请求,要返回内网 IPv4”,我觉得即便解析为公网 IPv6 地址,实际访问速度应该无差吧,本机和目标设备都是相同的 IPv6 前缀,同一子网,并不会从公网绕一圈。
    pdone
        15
    pdone  
    OP
       Aug 12, 2025
    @jesky #14 之前执意要返回内网 v4 是因为公网 v6 要去上游查询太慢,现在这个问题已解决。
    目前配置的规则,在内网时,会同时返回内网 v4 和公网 v6 ,在外网时,仅返回公网 v6 。





    goodryb
        16
    goodryb  
       Aug 12, 2025
    有公网 IP , 在外面走 ddns ,回家直接用 DNS 重写相关域名到内网 IP

    v6 以前开过,麻烦切没啥用,又给关了
    yangfan1999
        17
    yangfan1999  
       Aug 13, 2025
    adguard 上游配置 mosdns 做分流,使用 mosdns 的 prefer_ipv4 参数应该能满足要求:同时存在 A 和 AAAA 记录时,仅返回 A 记录。

    我本地就是这么配置的。NAS 使用群晖的 DDNS 进行 AAAA 解析,MOSDNS 配置本地 V4 解析。
    局域网内我本地 PC 是正常的,只能拿到 NAS 的 V4 地址,但是内网的 Shield TV 还是会走 V6 去连,这个我还没搞定。局域网手机表现和电视盒子一致。
    yangfan1999
        18
    yangfan1999  
       Aug 13, 2025
    @yangfan1999 想了下,考虑直接在 MOSDNS 上面同时配置 NAS 的 V4 和 V6 本地解析,V6 随便写一个,让 V6 不再向上游进行解析,这样 perfer_ipv4 应该能生效,下班回去试试。
    trott
        19
    trott  
       Aug 15, 2025
    你的 adg 还对外提供服务吗,这个还没本人找上门?
    pdone
        20
    pdone  
    OP
       Aug 18, 2025
    @trott 仅自用
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2607 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 10:42 · PVG 18:42 · LAX 03:42 · JFK 06:42
    ♥ Do have faith in what you're doing.