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

突然发现阿里的 DoH 还挺有意思的~

  •  1
     
  •   marquina · 2020-05-11 14:13:59 +08:00 · 19406 次点击
    这是一个创建于 1417 天前的主题,其中的信息可能已经有所发展或是发生改变。

    用我写的ts-dns配置一下(顺便打个广告,哈哈):

    [groups]
      [groups.ali]
      doh = ["https://dns.alidns.com/dns-query"]
      rules = ["twitter.com", "baidu.com"]
    

    我这里直接 ping 阿里 DNS 延迟大概是 5ms,用 DoH 的话第一次解析需要 80ms 左右,但后续解析不到 10ms (毕竟有 keep-alive ),延迟表现相当令人满意,可以考虑替换原来的 UDP DNS 。

    我们都知道,DoH 相比传统 DNS 的一个优势是可以直接拿到 client ip,但比较蛋疼的是,阿里的 DoH 会在 DNS 响应里强制显示 client ip,而 Google 等厂商的 DoH 是不显示的(除非手动指定 client-subnet ),以后贴 dig 结果的时候要小心了。

    $ dig -p 5305 baidu.com
    ...
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ; CLIENT-SUBNET: xxx.xxx.xxx.xxx/32/24
    ;; QUESTION SECTION:
    ;baidu.com.			IN	A
    
    ;; ANSWER SECTION:
    baidu.com.		31	IN	A	220.181.38.148
    baidu.com.		31	IN	A	39.156.69.79
    ...
    

    但最有意思的还是差别待遇。解析敏感域名,如果将 client-subnet 设成墙内 IP (比如直接在墙内请求),就会返回污染后的结果;但如果将 client-subnet 设成墙外 IP,就会返回未被污染的结果……满满的嘲讽感,23333

    $ dig -p 5305 twitter.com +subnet=223.5.5.5
    ...
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ; CLIENT-SUBNET: 223.5.5.5/32/24
    ;; QUESTION SECTION:
    ;twitter.com.			IN	A
    
    ;; ANSWER SECTION:
    twitter.com.		85	IN	A	69.171.235.16
    ...
    $ dig -p 5305 twitter.com +subnet=8.8.8.8
    ...
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ; CLIENT-SUBNET: 8.8.8.8/32/24
    ;; QUESTION SECTION:
    ;twitter.com.			IN	A
    
    ;; ANSWER SECTION:
    twitter.com.		30	IN	A	104.244.42.1
    ...
    

    不知道这 BUG 多久修复。

    21 条回复    2023-06-10 07:33:24 +08:00
    jinqzzz
        1
    jinqzzz  
       2020-05-11 14:23:41 +08:00 via iPhone
    全球工单系统
    marquina
        2
    marquina  
    OP
       2020-05-11 14:39:00 +08:00
    用狮城的梯子确认了一下,阿里的 DoH 是根据 client-subnet 的位置来决定是否返回污染结果的。
    也就是说在国外使用阿里 DoH 没有问题,但如果此时将 client-subnet 指定为国内 IP,就会返回被污染的结果,666 。
    EPr2hh6LADQWqRVH
        3
    EPr2hh6LADQWqRVH  
       2020-05-11 14:52:11 +08:00
    也不一定是阿里的问题,阿里这服务器也是中间服务器,具体结果都是从权威来的,也有可能是到权威的查询被墙污染 d 的结果,只是映射了墙的骚操作而已。
    shikkoku
        4
    shikkoku  
       2020-05-11 18:45:18 +08:00
    那我怎么办才能拿到正确的解析并且又不会把高延迟的节点解析给我呢?
    XGHeaven
        5
    XGHeaven  
       2020-05-11 18:46:33 +08:00 via Android
    DoH 是啥?
    marquina
        6
    marquina  
    OP
       2020-05-11 19:16:30 +08:00
    @shikkoku 按域名分流呗~如果是用我的 ts-dns,那就是:未被污染的域名匹配 clean 组,被污染的域名匹配 dirty 组,两组都配置阿里 DoH,然后在 dirty 组配置 client-subnet 。
    不过既然都分流了为啥不直接用墙外的 DoH or DoT……不对墙内的 DoH 抱有任何期望才是正道。
    marquina
        7
    marquina  
    OP
       2020-05-11 19:17:08 +08:00
    @XGHeaven DNS over HTTPS 的缩写
    shikkoku
        8
    shikkoku  
       2020-05-11 19:18:32 +08:00
    恐怕要等好用的 openwrt luci 版撸出来才会用了。
    zro
        9
    zro  
       2020-05-11 20:03:32 +08:00
    @shikkoku #8 现在的版本不好用吗?我是加个代理用 4 条 8 。。
    Love4Taylor
        10
    Love4Taylor  
       2020-05-11 20:37:17 +08:00
    那么现在阿里的 DoH 支持 HTTP/2 了么。
    Love4Taylor
        11
    Love4Taylor  
       2020-05-11 20:43:12 +08:00
    @Love4Taylor 好的,支持
    leido
        12
    leido  
       2020-05-12 13:41:20 +08:00
    很简单, 阿里在国外有递归查询节点,国外的 client ip 使用国外的节点查询,自然没被污染。
    并且这个特性和 DoH 无关,我用 udp 测试一样的(墙内)

    dig @223.5.5.5 +subnet=8.8.8.8 www.facebook.com

    ;; ANSWER SECTION:
    www.facebook.com. 15 IN CNAME star-mini.c10r.facebook.com.
    star-mini.c10r.facebook.com. 15 IN A 185.60.216.35
    AlexPUBLIC
        13
    AlexPUBLIC  
       2020-05-15 08:57:37 +08:00
    我今天也在写一个 doh,发现阿里的延迟大的多,然后 traceroute,绕道回杭州解析的
    Quadverse
        14
    Quadverse  
       2020-05-21 19:57:54 +08:00
    @marquina 我想用 adguardhome 作为 groups.clean 的分流,但是 ts-dns 如何注册成为 Win 服务呢?例如 ts-dns -s install
    marquina
        15
    marquina  
    OP
       2020-05-21 21:32:12 +08:00 via Android
    @Quadverse 注册成为 win 服务。。没研究过
    Quadverse
        16
    Quadverse  
       2020-05-21 21:43:24 +08:00
    @marquina 一般这种怎么在 win 开机就可以使用了呢?是每次开机点击 ts-dns.exe 么?
    marquina
        17
    marquina  
    OP
       2020-05-22 19:43:30 +08:00
    @Quadverse 推荐使用 pm2……我之前就是用 pm2 在 windows 上托管 frp 的
    Quadverse
        18
    Quadverse  
       2020-05-23 18:32:24 +08:00
    @marquina #17 感谢回复! pm2 也是一种不错的方法,貌似用 win 计划也可以解决此问题,不过还没有时间尝试,感兴趣的其他人可以自行尝试。
    HalloCQ
        19
    HalloCQ  
       2020-06-01 14:28:42 +08:00
    @Quadverse nssm
    naizhao
        20
    naizhao  
       2020-07-16 18:15:19 +08:00   ❤️ 1
    alidns 的后端并不支持 ECS,数据都是按照前端 ECS 偷偷摸摸转发到后端的递归。
    说白了,就是只支持了一半的 ECS 造成
    marshmallow
        21
    marshmallow  
       292 天前
    可以试试 Windows Service Wrapper ,我之前用 winsw 来启动 nginx 的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   980 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:26 · PVG 04:26 · LAX 13:26 · JFK 16:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.