V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
z5e56
V2EX  ›  DNS

EDNS 指定 IP 段未生效以及 DNS 分流解析的问题

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

    想要在自建 DNS 实现防止污染、屏蔽广告、隐私保护和分流解析的目的。但是当前使用的位于海外的 Adguard Home 总是把一些国内服务解析到国外 IP 影响正常使用,即使启用了 EDNS 仍然如此

    了解到 EDNS Client Subnet (ECS) 可以指定 subnet 进行解析,于是利用海外的服务器进行了如下测试

    user1@localhost:~$ dig www.taobao.com @114.114.114.114 +subnet=36.111.64.0/21
    
    ; <<>> DiG 9.16.33-Debian <<>> www.taobao.com @114.114.114.114 +subnet=36.111.64.0/21
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37668
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 512
    ;; QUESTION SECTION:
    ;www.taobao.com.                        IN      A
    
    ;; ANSWER SECTION:
    www.taobao.com.         284     IN      CNAME   www.taobao.com.danuoyi.tbcache.com.
    www.taobao.com.danuoyi.tbcache.com. 31 IN A     8.38.121.234
    www.taobao.com.danuoyi.tbcache.com. 31 IN A     8.38.121.233
    
    ;; Query time: 20 msec
    ;; SERVER: 114.114.114.114#53(114.114.114.114)
    ;; WHEN: Wed Apr 12 19:37:52 CST 2023
    ;; MSG SIZE  rcvd: 123
    

    切换了多个 DNS 服务器查询返回的都是这两个位于美国的 IP 地址

    目前针对上述情况有两个问题,希望熟悉这块的各位高手不吝赐教!

    1. 为何指定了 subnet 仍然没有返回想要的国内 IP 地址?如果是使用方式不对,正确的使用方式应该是怎样的?
    2. 是否有其他方式可以实现分流解析的目的?目前的计划是使用 Adguard Home 作为前端转发到 mosdns 进行查询,自建 DNS 服务器位于海外,不想额外搭建位于国内的节点。请问是否有好的方法实现开头所提到的目的?
    30 条回复    2023-04-15 00:14:31 +08:00
    pagxir
        1
    pagxir  
       351 天前
    因为 114 并不支持。如果支持的话,自然有效果。例如:
    dig qiye.163.com +subnet=110.42.145.0/24 +short @ns3.nease.net
    dig qiye.163.com +subnet=8.8.8.0/24 +short @ns3.nease.net
    ztmzzz
        2
    ztmzzz  
       351 天前 via iPhone
    要换支持 edns 的例如谷歌和 quad9
    z5e56
        3
    z5e56  
    OP
       351 天前
    @pagxir 感谢!是我没有了解测试得足够充分,才知道支持 EDNS 的不多
    z5e56
        4
    z5e56  
    OP
       351 天前
    @ztmzzz 刚把 Adguard Home 里面不支持 EDNS 的上游 DNS 移除后,目前来看解析正常了。不过就是不知道使用国外的上游 DNS 是否能保证国内域名不会被解析到国外 IP
    tomac4t
        5
    tomac4t  
       351 天前   ❤️ 2
    建议使用这个测试 `dig TXT whoami.ds.akahelp.net +short`
    missdeer
        6
    missdeer  
       351 天前
    所以我是通过域名列表来分流的 https://github.com/missdeer/coredns_custom_build
    z5e56
        7
    z5e56  
    OP
       351 天前
    @missdeer 感谢推荐,我会试用一下的
    tinkerer
        8
    tinkerer  
       351 天前
    推荐 http over dns 做反向代理,再加上 ip 证书。

    自用的一个小工具,刚加了 README: https://github.com/tinkernels/doh-relay
    Andim
        9
    Andim  
       351 天前
    看下 Adguard Home ,他也是支持国内外分流的,只是用的人不多也没人发攻略
    loukky
        10
    loukky  
       351 天前 via Android
    建议用 alidns ,你用了就知道好不好用了
    popzuk
        11
    popzuk  
       351 天前 via iPhone
    adg 可以分流,建议分流白名单到阿里和腾讯,其它给 Google 。
    charli
        12
    charli  
       351 天前
    国内阿里和 dnspod 的 dns 支持 edns ,国外的谷歌支持。
    zhatianbang
        13
    zhatianbang  
       351 天前
    @Andim 怎么分流?
    zhatianbang
        14
    zhatianbang  
       351 天前
    怎么弄呢?
    z5e56
        15
    z5e56  
    OP
       351 天前
    @Andim
    @popzuk
    能否麻烦两位详细说明一下配置方法?
    Andim
        16
    Andim  
       351 天前
    @z5e56
    @zhatianbang
    AdGuardHome.yaml 中定义一个域名列表列表,这个列表网上很多,比如 gfwlist

    upstream_dns_file: "/opt/adguardhome/custom.conf"

    然后在这个列表里编辑

    223.5.5.5
    119.29.29.29
    https://223.5.5.5/dns-query
    [/*.google.com/]8.8.8.8
    [/www.youtube.com/]8.8.8.8
    [/twitter.com/]9.9.9.11:9953
    [/www.facebook.com/]9.9.9.11:9953
    [/www.twitch.tv/]9.9.9.11:9953

    就可以默认走阿里腾讯的 DNS ,自定放的走 google Quad9
    xinglihua93
        17
    xinglihua93  
       351 天前 via Android
    被运营商拦截了,能解决吗
    z5e56
        18
    z5e56  
    OP
       351 天前 via Android
    @Andim 非常感谢!确实是容易被忽略的一个选项
    z5e56
        19
    z5e56  
    OP
       351 天前 via Android
    @xinglihua93 被拦截是指的什么?通常自建的话使用 DoH, DoT 并限制可访问用户一般都能正常使用的
    z5e56
        20
    z5e56  
    OP
       351 天前 via Android
    @loukky
    @charli
    我计划便是分流后国内的使用阿里 DNS 进行解析
    mohumohu
        21
    mohumohu  
       351 天前
    这个项目或许适合 op 的需求: https://github.com/kkkgo/PaoPaoDNS
    z5e56
        22
    z5e56  
    OP
       351 天前 via Android
    @mohumohu 看起来不错,感谢分享!回复中提到的我都会逐一尝试的
    enrolls
        23
    enrolls  
       351 天前
    @tomac4t 正解!未知 akahelp 之前,我是用 wx2.sinaimg.cn 测的
    enrolls
        24
    enrolls  
       351 天前
    有没有想过,现在大多数 SDK 自带 DNS 解析功能,压根儿不走你本地的查询
    z5e56
        25
    z5e56  
    OP
       350 天前 via Android
    @enrolls 这个我是早就想到了的,应对方法也不难
    enrolls
        26
    enrolls  
       350 天前
    @z5e56 怎么说? Ban IPs 导致它自己 failback?
    z5e56
        27
    z5e56  
    OP
       350 天前
    @enrolls 对喏,常用的 IP 和端口都 ban 掉。最后的结果是手机上有将近一半的 DNS 请求是不需要的
    xinglihua93
        28
    xinglihua93  
       350 天前 via Android
    能加一下微信聊吗
    z5e56
        29
    z5e56  
    OP
       350 天前 via Android
    @xinglihua93 可以的,但是我不一定有你想要的答案哦,并且只有晚上才有时间哦
    bclerdx
        30
    bclerdx  
       349 天前
    OP ,我感觉还是中国大陆 IP 地址和国外 IP 地址做分流兜底更为稳妥一些。当然,基于其他方式,比如中国域名分流也是可以的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5395 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 07:50 · PVG 15:50 · LAX 00:50 · JFK 03:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.