使用 ADGuardHome 时遇到的一个困扰很久的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pdone
V2EX    宽带症候群

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

  •  
  •   pdone 62 天前 2322 次点击
    这是一个创建于 62 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我的 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 条回复    2025-08-18 12:23:38 +08:00
    itiao
        1
    itiao  
       62 天前
    试试看开启 禁用 IPV6 解析?
    Puteulanus
        2
    Puteulanus  
       62 天前   1
    试试用 client 规则呢,客户端那边能不能区分出内网和外网的解析,然后让规则只应用在内网请求上面

    pdone
        3
    pdone  
    OP
       62 天前
    @itiao 禁用 v6 解析 在局域网以外就访问不了了

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

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

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

    @fuzzsh 我研究一下
    pingdog
        9
    pingdog  
       62 天前 via Android
    手机 PC 网用 v6 Only 没问题,有嵌入式设备就要另外开 wifi, 大多数不支持 ipv6
    mac100
        10
    mac100  
       62 天前
    @Puteulanus 完全看不明白什么意思。。
    bjfane
        11
    bjfane  
    PRO
       62 天前
    家里的东西 虽然 ipv6 ,是不是套一层 vpn 比较好,比如 wg , 不知道有没有成熟的 v4 on ipv6 的解决方案。
    pdone
        12
    pdone  
    OP
       61 天前
    @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
       61 天前
    #12 另外黑名单中的规则,也可以放在 ddnsgo webhook 的请求体里,就不用添加黑名单,不过这部分都是固定内容,不必每次 ipv6 变化后都重新设置,所以选择分开设置这两部分规则。
    jesky
        14
    jesky  
       61 天前
    @pdone #12 祝贺解题成功。不过,请教一下,你执意实现“内网请求,要返回内网 IPv4”,我觉得即便解析为公网 IPv6 地址,实际访问速度应该无差吧,本机和目标设备都是相同的 IPv6 前缀,同一子网,并不会从公网绕一圈。
    pdone
        15
    pdone  
    OP
       61 天前
    @jesky #14 之前执意要返回内网 v4 是因为公网 v6 要去上游查询太慢,现在这个问题已解决。
    目前配置的规则,在内网时,会同时返回内网 v4 和公网 v6 ,在外网时,仅返回公网 v6 。





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

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

    我本地就是这么配置的。NAS 使用群晖的 DDNS 进行 AAAA 解析,MOSDNS 配置本地 V4 解析。
    局域网内我本地 PC 是正常的,只能拿到 NAS 的 V4 地址,但是内网的 Shield TV 还是会走 V6 去连,这个我还没搞定。局域网手机表现和电视盒子一致。
    yangfan1999
        18
    yangfan1999  
       60 天前
    @yangfan1999 想了下,考虑直接在 MOSDNS 上面同时配置 NAS 的 V4 和 V6 本地解析,V6 随便写一个,让 V6 不再向上游进行解析,这样 perfer_ipv4 应该能生效,下班回去试试。
    trott
        19
    trott  
       58 天前
    你的 adg 还对外提供服务吗,这个还没本人找上门?
    pdone
        20
    pdone  
    OP
       55 天前
    @trott 仅自用
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1021 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 18:07 PVG 02:07 LAX 11:07 JFK 14:07
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86