V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
FakNoCNName
V2EX  ›  分享创造

adguardhome 分流查询

  •  
  •   FakNoCNName · 2022-06-28 17:09:51 +08:00 · 2117 次点击
    这是一个创建于 883 天前的主题,其中的信息可能已经有所发展或是发生改变。

    简介

    由于各种各样的原因,对 AdGuardHome 产生了一种需求:

    1. 大多数域名使用国内 dns 查询
    2. 国外域名,尤其是梯子相关域名,使用国外 dns 查询

    上面这种应用场景暂时叫他分流。

    为了满足上面这种 dns 分流查询,改了 AdGuardHome 和 dnsproxy 的源码,编译升级以后下午用了几个小时。

    目前配置了 quic://dns-unfiltered.adguard.comhttps://dns.cloudflare.com/dns-query 这两个 dns 服务商,首次查询耗时 >200ms ,后面一段时间走缓存,总体体验还可以。

    源码改的比较粗糙,放在了自建的 gitlab 上,暂时不打算提 PR ,回头提个 issue 看社区有什么反馈。

    其它

    有人有相同需求的话可以下载使用:

    https://wwm.lanzouq.com/iOB6q0727uwj
    密码:biub
    

    目前只编译了 Debian/Ubuntu 的版本,没编译 Centos/Radhat 的。

    文件里面有使用说明。

    15 条回复    2022-07-01 10:33:41 +08:00
    dcty
        1
    dcty  
       2022-06-28 17:13:48 +08:00 via Android
    话说,这个分流功能不是官方就实现了吗?
    DAPTX4869
        2
    DAPTX4869  
       2022-06-28 17:21:03 +08:00
    v2ray 有这个功能, 配合加强规则用还行
    FakNoCNName
        3
    FakNoCNName  
    OP
       2022-06-28 17:37:03 +08:00
    @dcty dnsproxy 源码里面标的 TODO ,没有其它介绍的地方,不知道怎么配置

    @DAPTX4869 不一样,AdGuardHome 我当成过滤广告的 DNS 服务器用,目前所有的工作、家庭设备都用他,用 v2ray 和 clash 还得再装软件。
    PMR
        4
    PMR  
       2022-06-28 17:51:12 +08:00
    用途有限

    大多数 proxy 都是将 dns 请求发到远端 在本地请求无劫持的 dns 没意义 还访问不到近 proxy 的 cdn 节点
    FakNoCNName
        5
    FakNoCNName  
    OP
       2022-06-28 18:01:40 +08:00
    @PMR 嗯,这功能并不是强需求,只不过最近遇到一些场景有这个会很方便。

    分流原因:
    1. 获取正确的解析结果,国外的服务用国外的 dns 解析
    2. 保护隐私,避免黑名单上的域名使用国内 dns ,避免被国内 dns 服务商记录
    dcty
        6
    dcty  
       2022-06-28 18:11:00 +08:00 via Android   ❤️ 1
    dcty
        7
    dcty  
       2022-06-28 18:15:40 +08:00 via Android   ❤️ 1
    另外,mosdns 可以试一下,也挺方便
    bearboss
        8
    bearboss  
       2022-06-28 20:46:36 +08:00   ❤️ 1
    用 mosdns 做 adh 的上级就好了
    FakNoCNName
        9
    FakNoCNName  
    OP
       2022-06-28 21:15:42 +08:00
    @dcty
    @bearboss

    多谢了,看了下功能挺多的,不过目前不太想增加一层,弄得网络逻辑越来越复杂。
    ihipop
        10
    ihipop  
       2022-06-28 22:01:06 +08:00 via Android
    adguard 自带的分流功能,你改源码去实现?
    missdeer
        11
    missdeer  
       2022-06-28 22:52:50 +08:00   ❤️ 1
    来来来,又到了魔改版 coredns 砸人场子的时候了 https://github.com/missdeer/coredns_custom_build 长期跟随上游更新,提供诸多流行软硬件平台预编译包,放心使用
    sbilly
        12
    sbilly  
       2022-06-29 11:43:09 +08:00   ❤️ 1
    smartdns + adguardhome

    1. smartdns 主要做分流、负载均衡(选择最快的解析结果)
    2. adguardhome 主要做缓存、过滤
    FrankAdler
        13
    FrankAdler  
       2022-06-29 12:50:05 +08:00
    可以说说实现原理吗,内置了一个 gfwlist ?
    FakNoCNName
        14
    FakNoCNName  
    OP
       2022-06-29 14:29:59 +08:00
    @FrankAdler 不是内置,是读取的文件。

    1. 启动读取配置
    2. 处理配置
    2.1 域名过滤器:根据配置读取 gfwlist 或 yaml 加载白名单域名,这些域名放到 map 里面做过滤器(可以考虑树,不过一切从简)
    2.2 dns 列表:根据配置加载上游 dns ,并和过滤器关联,作为分流 dns
    3. 分流查询:
    dns 查询时,过滤器中存在的域名使用分流 dns 做上游进行解析,过滤器中不存在的域名使用全局配置。
    20180410rx
        15
    20180410rx  
       2022-07-01 10:33:41 +08:00 via Android   ❤️ 1
    adguardhome 自带分流,这是我整的规则
    https://github.com/rxvb/adguardhome_upstream_dns
    国内域名使用 tls://120.53.53.53 查询,其他的会用境外服务器查询。
    smartdns 也有分流功能,我也整了 https://github.com/rxvb/smartdns_rules
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3032 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 14:42 · PVG 22:42 · LAX 06:42 · JFK 09:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.