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

DNS 污染的一个讨论。

  •  
  •   holinhot · 2017-08-08 11:51:42 +08:00 · 1638 次点击
    这是一个创建于 2424 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近对最新的 GFW DNS 污染的测试结果。

    当域名被污染后随机指向国外被封 IP 或无效 IP 地址,如 255.x.x.x 这样的。

    这个随机 IP 地址范围非常大,可能有好几千个。

    当域名解析在向根服务器查询 NS 记录的时候就被拦截。无法返回正常的 NS 记录。 当域名存在 MX 记录时向根服务器查询 NS 记录,可以正常返回 NS 记录与 MX 记录。

    域名不管使用国内还是国外的服务商,在查询 NS 这一步必须出国,因为中国没有根服务器。

    疑惑的是:

    当一个域名被污染后,如果使用国内 DNS 服务商并设置 MX 记录。可以正常返回 NS 记录。但仍然无法返回正确的 A 记录。

    按理当查询 MX 记录时,返回了正确的 NS 记录。此时当地运营商的递归 DNS 应该会缓存 NS 记录,在下一次请求解析这个域名的过程中不再向根域查找 NS 记录,而使用上一次缓存的 NS 记录,向该 NS 请求 A 记录。

    但实际测试看起来递归 DNS,好像不会缓存 NS 记录,这个非常奇怪。这样就造成了域名被彻底封杀。

    28 条回复    2017-08-18 08:10:40 +08:00
    Toools
        1
    Toools  
       2017-08-08 12:09:16 +08:00
    同求 解决方法
    holinhot
        2
    holinhot  
    OP
       2017-08-08 12:34:43 +08:00
    @Toools 哈哈 送礼
    matsuz
        3
    matsuz  
       2017-08-08 13:09:22 +08:00 via Android
    大陆是有根服务器的啊。

    你这个问题是能正确解析 MX 而不能解析 A 记录?
    那你直接向你的权威服务器请求能返回正确的 A 记录数据吗?
    matsuz
        4
    matsuz  
       2017-08-08 13:28:09 +08:00
    要看递归服务器有没有缓存 NS 用 dig 执行一次迭代解析就行了

    dig youdomain.com @114.114.114.114 +norecurse

    上面 @ 后面的 IP 换成递归服务器的 IP 就好了。
    Devmingwang
        5
    Devmingwang  
       2017-08-08 13:35:54 +08:00
    对,我也在想为什么所有的污染的域名全都不会返回 NS 记录。

    如果可以返回 NS 记录的话,那么可以采取 NS 国内一台国外一台,NS 所用 DOMAIN 分区解析的方式躲过 DNS 污染。

    关键就是不向 NS 查啊。
    matsuz
        6
    matsuz  
       2017-08-08 13:41:10 +08:00
    @Devmingwang 要污染整个域最快的方式当然就是屏蔽 NS 啊
    不过我刚刚查了一下,是可以正常查询到 google.com 的域 NS 的,说明你们的域名的污染方式和污染 Google 的方式还是有些不同的啊 ( ̄▽ ̄)"
    mytsing520
        7
    mytsing520  
       2017-08-08 13:46:19 +08:00
    @matsuz Google 没被完全污染,不然这事情后果严重
    matsuz
        8
    matsuz  
       2017-08-08 13:50:30 +08:00
    @mytsing520 嗯,对 Google 的处理方式可能主要还是 IP 黑名单吧。
    我刚才试了一下,Google 权威服务器还可以直接查询呢,而且好像也没被劫持
    matsuz
        9
    matsuz  
       2017-08-08 13:54:19 +08:00
    。。我错了,DNS 报文进入大陆的网络的时候应该确实是被劫持了,不过 google\.com 域里面不是每个域名都会被劫持的
    eben
        10
    eben  
       2017-08-08 16:48:25 +08:00
    楼主的 cdn 系统啥时候上线开卖
    holinhot
        11
    holinhot  
    OP
       2017-08-09 11:01:02 +08:00
    @matsuz 可以返回 NS 记录,如果你域名有 MX 记录的情况下
    holinhot
        12
    holinhot  
    OP
       2017-08-09 11:02:43 +08:00
    @matsuz 大陆的根服务器仅限 CN 域名。
    而且就算 CN 域名同样要过 root-servers.netroot-servers.net 中国没有。
    holinhot
        13
    holinhot  
    OP
       2017-08-09 11:08:26 +08:00
    @eben 卖这个?
    holinhot
        14
    holinhot  
    OP
       2017-08-09 11:15:19 +08:00
    @Devmingwang

    如果像根查询的时候不返回 NS,伪造根服务器直接返回 A 记录 IP,这样不就彻底封死。直接跳过 NS 查询那个步骤。
    holinhot
        15
    holinhot  
    OP
       2017-08-09 11:21:59 +08:00
    @matsuz 直接伪装根服务器返回了假的 udp 包,能直接返回 A 记录,根本不需要向 NS 查询
    matsuz
        16
    matsuz  
       2017-08-09 13:10:44 +08:00
    @holinhot

    #12 我在 http://www.root-servers.org 上看到的是中国大陆有 5 台根,这个应该并不是指 CN 顶级域的权威服务器

    #11 #14 那你这个可能是只针对了 A 记录进行了污染,可能是通过劫持 DNS 响应包实现的。如果是这样的话,这个估计不好解决了
    matsuz
        17
    matsuz  
       2017-08-09 13:12:33 +08:00
    @holinhot 试试换个子域名看看
    txydhr
        18
    txydhr  
       2017-08-11 07:12:57 +08:00 via iPhone
    向海外任何一个 IP 请求(或者从海外向境内 ip 请求)都会被 gfw 抢答,不管是请求的是 a 记录,ns 记录,还是 mx 记录。。防火墙没有污染 google.com ,污染的是 www.google.com 这个子域名。。正常向根服务器查询 www.google.com 的 a 记录,根服务器会返回 google.com 的 ns 记录。。然而防火墙直接伪装抢答了一个错误的 a 记录,isp 的 dns 直接将这个错误的 a 记录缓存下来返回给用户。。。我测试请求 www.google.com 的 mx 记录也会被污染的。。。
    matsuz
        19
    matsuz  
       2017-08-11 08:44:16 +08:00
    @txydhr 是的,入境的 DNS 数据包都会被检测一遍。但是是发现请求了特定的一些域名才会抢答(或劫持?)
    txydhr
        20
    txydhr  
       2017-08-11 14:10:17 +08:00 via iPhone
    @matsuz 是的 估计为了提高性能,防火墙不区分源 IP 是境外还是境内(入境还是出境),也不管目标 ip 是否有效。。只要发往 53 端口的 udp 包通过 gfw 时。。匹配上特定域名直接抢答。。毕竟抢答你得速度快。。比如你在境外向国内任何一个 ip 地址查询那些域名,都可以收到被污染的解析结果。。
    holinhot
        21
    holinhot  
    OP
       2017-08-14 12:59:38 +08:00
    @matsuz 大陆的 2010 年后早就停了,你没听说?
    KCheshireCat
        22
    KCheshireCat  
       2017-08-14 19:50:39 +08:00
    @holinhot #21

    听说?自己不会试一试?

    holinhot
        23
    holinhot  
    OP
       2017-08-15 00:25:23 +08:00
    @KCheshireCat 反正我路由过去是到日本
    holinhot
        24
    holinhot  
    OP
       2017-08-15 00:47:40 +08:00
    @KCheshireCat

    看来像撤销宣告了。








    geekzu
        25
    geekzu  
       2017-08-16 00:14:10 +08:00



    holinhot
        26
    holinhot  
    OP
       2017-08-16 15:00:37 +08:00
    @geekzu 你用阿里云节点去测?
    holinhot
        27
    holinhot  
    OP
       2017-08-16 15:07:09 +08:00
    @geekzu 中国这啥垃圾根哦,名义上放中国,实际绕到国外再回国?
    我测试了 10 几个点都是出国的,用 ping.chinaz.com 一看那值 100 多都去日本美国了
    mytsing520
        28
    mytsing520  
       2017-08-18 08:10:40 +08:00
    @holinhot 国内的根是镜像服务器

    对 192.5.5.241 的 MTR 结果:
    |------------------------------------------------------------------------------------------|
    | WinMTR statistics |
    | Host - % | Sent | Recv | Best | Avrg | Wrst | Last |
    |------------------------------------------------|------|------|------|------|------|------|
    | 192.168.16.1 - 0 | 6 | 6 | 0 | 0 | 1 | 1 |
    | 183.157.x.x - 0 | 6 | 6 | 1 | 1 | 2 | 1 |
    | 61.164.12.30 - 0 | 6 | 6 | 2 | 2 | 2 | 2 |
    | No response from host - 100 | 1 | 0 | 0 | 0 | 0 | 0 |
    | 202.97.68.161 - 0 | 4 | 4 | 24 | 275 | 1031 | 24 |
    | No response from host - 100 | 1 | 0 | 0 | 0 | 0 | 0 |
    | 18.254.120.106.static.bjtelecom.net - 0 | 1 | 1 | 31 | 31 | 31 | 31 |
    | 18.254.120.106.static.bjtelecom.net - 0 | 1 | 1 | 31 | 31 | 31 | 31 |
    | 218.241.107.94 - 0 | 6 | 6 | 24 | 24 | 24 | 24 |
    | 218.241.107.94 - 0 | 6 | 6 | 24 | 24 | 25 | 24 |
    | f.root-servers.net - 0 | 6 | 6 | 29 | 29 | 30 | 29 |
    |________________________________________________|______|______|______|______|______|______|

    测试环境:杭州电信
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   948 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 21:50 · PVG 05:50 · LAX 14:50 · JFK 17:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.