z5e56
V2EX  ›  DNS

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

  •  
  •   z5e56 · Apr 12, 2023 · 5709 views
    This topic created in 1129 days ago, the information mentioned may be changed or developed.

    想要在自建 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 replies    2023-04-15 00:14:31 +08:00
    pagxir
        1
    pagxir  
       Apr 12, 2023
    因为 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  
       Apr 12, 2023 via iPhone
    要换支持 edns 的例如谷歌和 quad9
    z5e56
        3
    z5e56  
    OP
       Apr 12, 2023
    @pagxir 感谢!是我没有了解测试得足够充分,才知道支持 EDNS 的不多
    z5e56
        4
    z5e56  
    OP
       Apr 12, 2023
    @ztmzzz 刚把 Adguard Home 里面不支持 EDNS 的上游 DNS 移除后,目前来看解析正常了。不过就是不知道使用国外的上游 DNS 是否能保证国内域名不会被解析到国外 IP
    tomac4t
        5
    tomac4t  
       Apr 12, 2023   ❤️ 2
    建议使用这个测试 `dig TXT whoami.ds.akahelp.net +short`
    missdeer
        6
    missdeer  
       Apr 12, 2023
    所以我是通过域名列表来分流的 https://github.com/missdeer/coredns_custom_build
    z5e56
        7
    z5e56  
    OP
       Apr 12, 2023
    @missdeer 感谢推荐,我会试用一下的
    tinkerer
        8
    tinkerer  
       Apr 12, 2023
    推荐 http over dns 做反向代理,再加上 ip 证书。

    自用的一个小工具,刚加了 README: https://github.com/tinkernels/doh-relay
    Andim
        9
    Andim  
       Apr 12, 2023
    看下 Adguard Home ,他也是支持国内外分流的,只是用的人不多也没人发攻略
    loukky
        10
    loukky  
       Apr 13, 2023 via Android
    建议用 alidns ,你用了就知道好不好用了
    popzuk
        11
    popzuk  
       Apr 13, 2023 via iPhone
    adg 可以分流,建议分流白名单到阿里和腾讯,其它给 Google 。
    charli
        12
    charli  
       Apr 13, 2023
    国内阿里和 dnspod 的 dns 支持 edns ,国外的谷歌支持。
    zhatianbang
        13
    zhatianbang  
       Apr 13, 2023
    @Andim 怎么分流?
    zhatianbang
        14
    zhatianbang  
       Apr 13, 2023
    怎么弄呢?
    z5e56
        15
    z5e56  
    OP
       Apr 13, 2023
    @Andim
    @popzuk
    能否麻烦两位详细说明一下配置方法?
    Andim
        16
    Andim  
       Apr 13, 2023
    @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  
       Apr 13, 2023 via Android
    被运营商拦截了,能解决吗
    z5e56
        18
    z5e56  
    OP
       Apr 13, 2023 via Android
    @Andim 非常感谢!确实是容易被忽略的一个选项
    z5e56
        19
    z5e56  
    OP
       Apr 13, 2023 via Android
    @xinglihua93 被拦截是指的什么?通常自建的话使用 DoH, DoT 并限制可访问用户一般都能正常使用的
    z5e56
        20
    z5e56  
    OP
       Apr 13, 2023 via Android
    @loukky
    @charli
    我计划便是分流后国内的使用阿里 DNS 进行解析
    mohumohu
        21
    mohumohu  
       Apr 13, 2023
    这个项目或许适合 op 的需求: https://github.com/kkkgo/PaoPaoDNS
    z5e56
        22
    z5e56  
    OP
       Apr 13, 2023 via Android
    @mohumohu 看起来不错,感谢分享!回复中提到的我都会逐一尝试的
    enrolls
        23
    enrolls  
       Apr 13, 2023
    @tomac4t 正解!未知 akahelp 之前,我是用 wx2.sinaimg.cn 测的
    enrolls
        24
    enrolls  
       Apr 13, 2023
    有没有想过,现在大多数 SDK 自带 DNS 解析功能,压根儿不走你本地的查询
    z5e56
        25
    z5e56  
    OP
       Apr 13, 2023 via Android
    @enrolls 这个我是早就想到了的,应对方法也不难
    enrolls
        26
    enrolls  
       Apr 13, 2023
    @z5e56 怎么说? Ban IPs 导致它自己 failback?
    z5e56
        27
    z5e56  
    OP
       Apr 13, 2023
    @enrolls 对喏,常用的 IP 和端口都 ban 掉。最后的结果是手机上有将近一半的 DNS 请求是不需要的
    xinglihua93
        28
    xinglihua93  
       Apr 14, 2023 via Android
    能加一下微信聊吗
    z5e56
        29
    z5e56  
    OP
       Apr 14, 2023 via Android
    @xinglihua93 可以的,但是我不一定有你想要的答案哦,并且只有晚上才有时间哦
    bclerdx
        30
    bclerdx  
       Apr 15, 2023
    OP ,我感觉还是中国大陆 IP 地址和国外 IP 地址做分流兜底更为稳妥一些。当然,基于其他方式,比如中国域名分流也是可以的。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2970 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 68ms · UTC 09:37 · PVG 17:37 · LAX 02:37 · JFK 05:37
    ♥ Do have faith in what you're doing.