V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
如果你希望学习 CDN 相关知识,那么建议你可以遍历以下软件的说明文档。
NGINX
cURL
bestmos
V2EX  ›  CDN

直接用阿里云 CDN 的提供的 CNAME 域名访问的是怎么实现的

  •  
  •   bestmos · 2021-11-05 23:18:52 +08:00 · 2887 次点击
    这是一个创建于 1116 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天看到一个直接用阿里云 CDN 的 CNAME 域名访问的,应该是设置回源了,多地 ping 出来都是同一个 IP

    他用于访问的域名是:aa.xxxx.cn.w.kunlunca.com (域名就打码了,避免广告嫌疑),后面这段( w.kunlunca.com )是阿里云 cdn 提供绑定的 CNAME 域名,aa.xxxx.cn 是他自己的加速域名。他是如何让这个域名可以直接访问的呢,我添加测试了一下,访问加速域名没问题,但是访问所给的 CNAME 域名一直返回 403 ,换了端口也是。 1

    17 条回复    2022-06-16 17:23:51 +08:00
    eason1874
        1
    eason1874  
       2021-11-05 23:28:43 +08:00
    CDN CNAME 域名通常只用于解析,并不会实际绑定到 CDN 节点。

    这种可以直接用 CNAME 域名访问的应该是开了 WAF 或者高防业务。
    wunonglin
        2
    wunonglin  
       2021-11-05 23:29:42 +08:00
    用你自己的域名然后设置 cname
    bestmos
        3
    bestmos  
    OP
       2021-11-06 00:17:02 +08:00
    @eason1874 好的,我研究一下
    ETiV
        4
    ETiV  
       2021-11-06 07:46:02 +08:00
    建议深入理解一下 HTTP 、HTTPS 协议

    > 访问加速域名没问题,但是访问所给的 CNAME 域名一直返回 403

    因为 HTTP 头里的 Host 会带这个加速域名;但是如果你直接访问了 CNAME 域名,这个 Host 头就变了。
    作为加速服务,就是要给任何非加速域名返回 403 才行的。类比 nginx 的 server_name _;

    HTTPS 还有一个 SNI ClientHello 这一步,也需要指定一个 hostname…
    jmk92
        5
    jmk92  
       2021-11-06 16:34:32 +08:00
    CDN 给的 cname 都不可以直接访问,必须绑定域名,也就是上面提到的需要携带 host ,CDN 那边会做匹配,通过域名访问的时候就是带了 host ,然后就可以正常匹配到,即使你不修改 dns ,本地 hosts 过去,也是可以的,但你直接访问肯定不行,这一层是 CDN 提供商的逻辑,基本都会这样,跟这个网站无关。

    他的网站 ping 这个 cname 却是自己的 IP ,其实不是什么神奇的功能,只是用了阿里云已知的一个逻辑
    就是添加了 CDN ,设置好了,然后再停止这个 CDN (不要删除),停止 CDN 之后,阿里云会直接回源到用户自己设置的回源 IP 或者 cname 上。

    这个可以参考阿里云 CDN 的文档,有一部分就是标注了这个,阿里云玩熟的用户也都知道,我记得阿里还针对这个出过一个公告,说是停止 CDN 之后,多久会删除这个 CDN ,具体多长时间就不知道了,有可能担心影响到用户一直不删。

    但从逻辑上讲,这样只会增加阿里云一条 DNS 解析的记录,对阿里云影响不大,而客户这样做,除了可以装逼,让别人误以为是用了 CDN 之外,DNS 会多一次解析,也可能他为了方便,想启用 CDN ,从控制台操作,而不修改 DNS 吧
    bestmos
        6
    bestmos  
    OP
       2021-11-06 19:52:46 +08:00
    @jmk92 其实这个最主要的目的之一是能在社交平台进行内容推广,因为这个域名是在腾讯过了绿标认证的,所以做腾讯不允许的内容时比普通域名存活时间长一些,不易被拦截。
    bestmos
        7
    bestmos  
    OP
       2021-11-06 22:28:31 +08:00
    @jmk92 还是不清楚他是怎么实现到让 cname 域名可以直接访问而不 403 。而且现在阿里云好像不支持停止 cdn 了,官方给出的回复是删除域名即停止。
    jmk92
        8
    jmk92  
       2021-11-06 23:06:50 +08:00
    @bestmos 你先说,他这个 cname 能不能直接访问,在你自己的浏览器里,如果不可以,只有他的客户端或者平台上可以访问,那么他就是在 Header 里添加了 Host 指定。
    如果他的 cname 可以直接访问,那我去试试
    bestmos
        9
    bestmos  
    OP
       2021-11-07 00:05:39 +08:00
    @jmk92 地址 sourl.cn/8BkwtL 。在浏览器中可以直接访问的,看了下请求标头的 host 也是这个地址
    jmk92
        10
    jmk92  
       2021-11-07 12:37:51 +08:00
    @bestmos 在你发给我之前,我也发现了几个 cnmae 解析到了自己的 ip ,包括你这个,指定的 IP 却是一个:211.99.103.49 ,查询了一下,这是 wy.com.cn ,唯一网络的,我注册了一下,发现是和阿里云合作的一个 IDC ,
    暂不清楚具体怎么实现的,不过不知道是不是这个平台和阿里的合作留下了一个可以让阿里 CDN 的 cname 的 DNS 解析可以自定义的 bug
    jmk92
        11
    jmk92  
       2021-11-07 13:25:24 +08:00
    @bestmos 找到了阿里 cdn 执行 dns 回源的一种可能,以下是阿里文档:
    域名下线执行流程:
    正常情况:加速域名通过 CNAME 域名解析到阿里云 CDN 节点 IP 地址。
    掉备案后 30 天内(加速域名被执行下线起算,30×24 小时内):当您的域名出现掉备案时,阿里云 CDN 会立即停止加速服务,加速域名将会被执行下线( OFFLINE )。下线之时起 30 天内加速域名通过 CNAME 域名解析到客户源站地址,增加源站压力。
    掉备案超过 30 天(加速域名被执行下线起算,30×24 小时后):停止解析回源站,加速域名通过 CNAME 域名被解析到无效地址“offline.***.com”,无法被继续访问。



    可以看到,当域名掉了备案之后,30 天内,阿里的 cname 是执行的 dns 回源的操作,30 天之后会解析到错误地址,
    这也可能是他们这些要搞那么多三级,甚至四级的子域名的原因,一个子域名可能只能挺 30 天吧。


    阿里添加 cdn 的时候,选择中国地区,或者先选择海外再切回国内,都有备案的检查,难道是通过中断 JS ,或者劫持阿里的响应,完成了添加,而后续阿里的检查会执行下线回源的操作。


    当然这只是猜测,不清楚在添加域名这,阿里有没有强效验,通过抓包看,只是一个 api 请求。
    jmk92
        12
    jmk92  
       2021-11-07 13:32:19 +08:00
    以上是技术方案,传统方案我还有另一个逆向思维
    找一个未备案的域名,先执行备案,然后添加一堆阿里云的 CDN ,多搞一些子域名的 cdn ,然后撤销备案。
    假设你搞了 60 个子域名,那么备案掉的时候,他们的 30 天回源是统一的时间的,也就是 30 天后都不可以用了。
    那你先把这些域名给停止 CDN ,在阿里控制台全部暂停这些 CDN ,然后再执行撤销备案。
    这就有意思了,阿里的备案检查如果只针对正常状态的 CDN ,那么他就可以一个一个的恢复 CDN ,一个用一个月了。

    我觉得有必要让阿里技术看一下这块的逻辑。
    jmk92
        13
    jmk92  
       2021-11-07 16:31:03 +08:00
    还有账号欠费,目前也是给了 30 天回源的时间,这个域名也可能是欠费了
    bestmos
        14
    bestmos  
    OP
       2021-11-07 23:11:31 +08:00
    @jmk92 应该是走的备案这条路,因为所绑定的加速域名是没解析的一个状态。这个逻辑确实是我完全没想到的,互联网真让人着迷
    oilbit
        15
    oilbit  
       2022-04-14 00:15:07 +08:00
    你好!你有测试过这个吗,是不是开启了 WAF 之后才可以使用 cname 的域名直接访问?
    bestmos
        16
    bestmos  
    OP
       2022-04-16 22:57:35 +08:00
    @oilbit 不清楚,没把这个研究出来。老哥研究了指条路
    rockybi
        17
    rockybi  
       2022-06-16 17:23:51 +08:00
    不是 waf 因为 waf 的域名是*.yundunwaf5.com 。w.kunlunea.com 只能是 CDN ,有老铁研究出来吗?是不是这个 bug 阿里云已经封住了?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1172 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:41 · PVG 02:41 · LAX 10:41 · JFK 13:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.