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

阿里 DNS 将部分存在境内节点的谷歌域名解析到境外导致无法连接

  •  
  •   kenxu2023 · 1 天前 · 1425 次点击

    起因是 Clash 做了 DNS 分流,direct 这个 Ruleset 中的域名指定使用 223.5.5.5223.6.6.6 解析
    今天下午在谷歌商店更新应用的时候发现异常,表现为点击更新后一直转圈直至更新失败,立刻开始怀疑 DNS 解析的问题(毕竟之前就有过类似的问题)。通过抓取日志发现 connectivitycheck.gstatic.com 域名连接超时,在 Ruleset 中搜索果然发现有这个域名,手动 dig 查询试试:

    不知为何阿里 DNS 将其解析到了境外地址(之前是正常的),而腾讯 DNS 则是正常的。142.250.0.0/16 这个 IP 段已被墙,自然无法直连。
    顺藤摸瓜测试部分其他存在境内节点的谷歌域名的解析结果:


    似乎全军覆没了,连带 cn 后缀的域名也解析到了境外,何意位?
    总之在阿里 DNS 结束抽风之前,可以切换到其他 DNS 提供商解决这个问题

    7 条回复    2025-11-08 05:46:33 +08:00
    basncy
        1
    basncy  
       1 天前
    同样的域名,国服好像有删减。
    比如国服 www.bing.com 国际版的搜索结果与国际服 www.bing.com 搜索结果完全不一样。
    kenxu2023
        2
    kenxu2023  
    OP
       1 天前
    补一嘴,本人为移动网,使用拨测工具测试发现电信和联通正常,但移动会出现这个问题
    ![]( )
    novaren
        3
    novaren  
       1 天前 via Android
    我也遇到了,谷歌商店更新应用失败,原来是这样
    Mystery0
        4
    Mystery0  
       1 天前 via Android
    我说昨天 gstatic.com 和 fontsapi 一过代理(分流直连)就连不上,不过代理就正常,气得我直接把这两个分流走美国了
    Somboon
        5
    Somboon  
       1 天前
    很久之前就有这问题了吧?我一直用阿里的 DNS ,gstatic.com 直连就是时通时不通的
    sunnyday123
        6
    sunnyday123  
       1 天前
    机场节点测速失败找到原因了
    epiphyllum
        7
    epiphyllum  
       9 小时 4 分钟前
    同最近遇到这个问题,排查了一下感觉可能是 Google 的权威 DNS 解析器的锅,似乎 Google 的 DNS 服务器对阿里云和中国移动的配置存在错误的“特殊关照”🤔


    ===

    排查思路&流程:

    1. 众所周知权威 DNS 解析器一般通过递归解析器的出口 IP / EDNS Client Subnet 判断访客地理位置,于是我们可以找一个 dnslog 服务来抓一下阿里云递归解析器的出口 IP 。用 itdog 的拨测工具查询一下随机分配的域名,可以抓到以下 IP:



    2. 这个 dnslog 似乎不能翻页(),就拿图中测试发现有问题的山西太原移动为例


    用它的 183.201.217.0/24 作为 Client Subnet ,用国内移动的网络对 ns1.google.com 直接发起查询:
    dig @ns1.google.com connectivitycheck.gstatic.com A +subnet=183.201.217.0/24 +norec


    ns1.google.com 返回了美国 Google 的 142 开头的 IP 。这样直接请求的过程完全没经过阿里的服务器处理,暂时可以排除 alidns 的嫌疑了。


    3. 起一个 Cloudshell 从阿里云的服务器上请求一次,还是同样的结果。


    但是把 EDNS 里的客户端子网换成一个“干净的 IP 段”就能得到正确响应,例如我们这里用 sx.10086.cn 的 IP 地址试一下,可以看到 Google 返回了国内的 CDN:
    dig @ns1.google.com connectivitycheck.gstatic.com A +subnet=183.203.36.0/24 +norec

    (其它国内 IP 也行,哪怕 1.14.5.14/32 也可以
    ( dig @ns1.google.com connectivitycheck.gstatic.com A +subnet=1.14.5.14/32 +norec


    4. 更神奇的来了,在腾讯云上请求 ns1.google.com 时,即使 EDNS Client Subnet 里填写“不干净的 IP”也能得到正确结果(这里换成电信/联通应该也可以,实测联通没问题):



    =====

    总结:
    - 对于此类有国内 CDN 加速的 Google 服务,Google 的权威 DNS 服务器在遇到“阿里 DNS 查询上游所用的部分中国移动出口 IP 地址”时,会错误地返回国际 CDN IP 。

    - 在内地使用腾讯云/中国联通/中国电信的 IP 或网络对 Google 的 DNS 服务器发起查询似乎不受影响。

    - 该问题理论上与劫持无关,因为使用海外测试服务器可以得到与境内阿里云/中国移动类似的结果。


    ======

    解决方法:

    如果要继续使用阿里 DNS ,可以对客户端进行配置,为 AliDNS 配置一个 EDNS Client Subnet (阿里的公共递归 DNS 会转发 Client Subnet )。

    mihomo 的配置方法见如下文档:
    https://wiki.metacubex.one/config/dns/#_1

    sing-box 的配置方法见如下文档:
    https://sing-box.sagernet.org/migration/#__tabbed_1_13
    https://sing-box.sagernet.org/zh/configuration/dns/rule_action/#client_subnet

    (若要兼顾就近 CDN 调度与隐私,EDNS Client Subnet 的值一般可以随便填写一个同市/省会的 IP
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2715 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 06:51 · PVG 14:51 · LAX 22:51 · JFK 01:51
    ♥ Do have faith in what you're doing.