z5e56
V2EX  ›  DNS

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

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

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