- 导航条 -
首页
最新文章
业界
- Google
- Facebook
- Apple
- Twitter
- 微软
开发
- Web开发
-- Javascript
-- CSS
-- HTML5
-- jQuery
-- NodeJS
- iOS
- Android
- Python
- Java
- C
- C++
- PHP
- Ruby
- Go
IT技术
- Linux
- UNIX
- MySQL
- NoSQL
- 数据库
- Git
- 算法
- 测试
- 信息安全
- Vim
设计
- 网页设计
- UI设计
- 交互设计
- 用户体验
创业
IT职场
访谈
在国外
经典回顾
更多 >
- 趣文
- 自由职业
- 工具与资源
- 书籍与教程

 
 
伯乐在线 > 首页 > 所有文章 > IT技术 > 2014年1月21日全国DNS污染始末以及分析
 

2014年1月21日全国DNS污染始末以及分析

2014/01/22 | 分类: IT技术 | 0 条评论 | 标签: DNSDNS劫持DNS污染安全

分享到:34
原文出处: Ovear 的博客

=w=大概今天15:30的时候,Ovear正在调试新的服务器,结果发现肿么突然上不去了。。结果ping了以下,结果吓尿了,Ovear的域名都指向到[65.49.2.178]这个IP。Ovear第一反应就是,尼玛DNSPOD又被黑了! 为什么说DNSPOD被黑了呢,其实以前DNSPOD就出过一次类似的问题=。=,导致所有的域名都跪了,刚好Ovear这个域名还有测试的几个域名都是那里的,然后就到某交流群吐槽。结果管理员说他们的DNS被污染了,Ovear心想不会是全国DNS都被污染了吧。结果乌鸦嘴说中了。。还真的是全国劫持。

然后Ovear就很好奇,到底是怎么回事呢~有谁能做到这样的事情~于是就有了以下的分析和科普~

——以下内容为Ovear家电脑中病毒所致,跟本人无任何关系,谢绝跨省——

balablabala说了这么久,肯定有同学问了,窝又不是学计算机的,(╯‵□′)╯︵┻━┻dns是什么玩意,跟我有什么关系!

那么DNS是什么呢,Ovear就来科普下┑( ̄Д  ̄)┍。

我们访问一般是通过域名[Domain]来访问的,咦DNS怎么也是D开头的,难道有关系?说对了!就是有关系:DNS的全称其实是[Domain Name System]翻译过来就是域名系统。

在互联网中,是只存在IP的,IP其实就是一串数字,相当于你家里的门牌号,大家在网络中想找到你,必须通过这个,所以IP对于每个人来说是唯一的。但是第四代IP都是http://XXX.XXX.XXX.XXX这样的,多难记啊,谁会没事记住IP呢,更何况以后天那么长的IPV6,要记住不是得要人命!

这时候一个聪明的科学家出来,我们给IP加一个别名,大家通过别名不就可以不记住这个IP,也可以知道这个IP了!于是就有了域名[Domain]这个东西.

当你访问Ovear’s Blog的时候

电脑的DNS解析系统就会自动问DNS服务器:尼知道Ovear’s Blog对应的IP地址是神马么?

  • DNS:窝帮你查查,奥,找到了,IP是[122.10.94.169].
  • Ovear的电脑:谢啦,再见
  • DNS:恩

对应现实就是,问知道张三的人:尼知道张三家在哪里么? 回答 在南山区 balabalabla。

当然这样解释还是不怎么恰当的,因为一个DNS服务器是不可能知道所有域名的地址的,因为这需要耗费极大地代价,所以这时候就出现了递归DNS和根DNS。

(由于篇幅原因,Ovear就简单的说一下,其实还是有问题的。Ovear以后再写一篇文章详细阐述下DNS的工作原理,或者看[Domain Name System] QAQ)

(补充:QAQ这里Ovear说的有点过简单了,其实根DNS(ROOT DNS)指的是全球一共13台的根DNS,负责记录各后缀所对应的TOPLEVEL Domain Server[顶级域名根服务器],然后接下来的就是[权威DNS服务器],就是这个域名用的DNS服务器(可以在whois中看到)

总结一下:

  • [根服务器]:全球一共13个A-M[.http://root-servers.net],储存着各个后缀域名的[顶级域名根服务器]
  • [顶级域名根服务器]:每个后缀对应的DNS服务器,存储着该[后缀]所有域名的权威DNS
  • [权威DNS]:这个域名所使用的DNS,比如说我设置的DNSPOD的服务器,权威DNS就是DNSPOD。在WHOIS(一个查看域名信息的东西)中可以看到。储存着这个域名[对应着的每条信息] 如IP等~

所以正确的解析过程应该跟下面的图一样

用户使用的DNS(边缘DNS)->(还会网上推很多级最终到)根DNS->顶级域名根服务器->权威DNS)

根DNS是什么呢?大家想想,每个域名都有一个后缀,比如说ovear是[.info]后缀的。那么就有一个专门记录[.info]后缀的dns服务器,其他后缀也一样。这个DNS就是该域名的根DNS。

那么递归DNS呢?其实递归DNS就是一个代理人,是用来缓解[根DNS]压力的,如果大家都去问[根DNS],那[根DNS]不早就跪了。毕竟一个人(网站)的地址不是经常变的,所以就有了TTL这一说法,根据DNS的规定,在一个TTL时间呢,大家就认为你家里(域名所指向的IP)的地址是不会变的,所以代理人[递归DNS]在这个时间内,是只会问一次[根DNS]的,如果你第二次问他,他就会直接告诉你域名所指向的IP地址。这样就可以解决[根DNS]负载过大的问题啦。

顺便这一张图也可以很准确反映出来之前所说的~ =w=

说了这么久,口水都干了,那么DNS到底跟这次事件有什么关系呢~

首先来看张图

瓦特!肿么这么多域名都指向同一个IP了,这是什么情况0 0。其实这就是典型的[DNS污染]了。

我们知道互联网有两种协议,一种是TCP,一种则是UDP了(知道泥煤啊(╯‵□′)╯︵┻━┻都说我不是学计算机的了)。

TCP和UDP的主要差别就是:能不能保证传递信息的可靠性。UDP是不管消息是否到达了目标,也不管通过什么途径的,他只管我发出去了就好,所以UDP比TCP快得多,但是可靠性没有TCP好。

而DNS查询默认就是用的是UDP,那么就很好劫持啦。在UDP包任何传输的路途上,直接拦截,然后返回给接收端就行了。

啧啧,说道这大家也隐隐约约知道这次事件的问题了吧,范围如此之广的劫持,必须要在各个省市的主干网上进行,而能处理这么大数据,同时能控制这么多主干网的。。啧啧啧。。。没错!就是***了~至于***是什么,Ovear在这就不说了,不然可能大家都见不到Ovear了QAQ。

说道这里,Ovear就准备手动查一下,到底是不是所推测的***呢?于是拿到了这个图(From XiaoXin)

与此同时运维也在各地的服务器上开始了跟踪查询,发现全国各地解析时间均为25ms左右。这时候结论就出来了。

这样就明显了,肯定是***做的了~~于是Ovear又好奇的查了下,这个IP是什么来头,为什么都要指向到这里去,于是Ovear发现了一些好玩的东西~(65.49.2.0/24)

从侧面点出了此次事件的始作俑者。

那么某FW为什么要这么做呢?Ovear在这里做一个无责任的推测,最有可能的就是:某FW的员工本来是想屏蔽这个IP段的,但是呢一不小心点进去了DNS污染这个选项,然后又没写污染目标,于是就全局污染了啧啧啧~

但是有些童鞋会问了(╯‵□′)╯︵┻━┻为什么他们都说用8.8.8.8就没事了~

其实这样子说是不正确的,因为Ovear之前用的就是8.8.8.8,上面也说了DNS查询默认使用的UDP查询,所以不管你用什么,照样劫持不误。其实8.8.8.8没问题是因为污染事件已经基本结束导致的,那么为什么污染结束后其他国内DNS都不能用,而Goole的DNS确可以正常的使用~于是Ovear就找到了张有趣的图片~

我先来解释下上面命令的用途吧~这个命令是用来直接向DNS服务器查询域名的~

其中的[-vc]参数是强制使用TCP来查询DNS服务器,这样就可以避免UDP污染的地图炮。

那么为什么污染结束后,DNS还会受到污染呢?其实原因很简单。Ovear之前说了,[递归DNS]是需要询问[根DNS]的,而默认的询问方式是采用的UDP,所以在国内的DNS服务器,自然就受到污染了。而之前Ovear也提到过TTL这件事~

在TTL周期内,根据协议[递归DNS]是直接吧结果缓存在自己那,是不会再去查询[根DNS]的,所以国内的DNS就把错误的结果缓存起来了~

而Google的DNS服务器基本都是在国外,所以查询的时候影响并不大,但是国内挺多域名使用DNSPOD啦,DNSLA的DNS,所以Google进国内查,还是会受到一定影响的。

因此,如果要完全避免这次的影响,有两个条件

1、你的域名的DNS必须是在国外
2、你查询的DNS必须在国外,而且如果在污染期需要通过TCP查询。

这样就可以避免这个问题了。

然后Ovear又手贱查了下这次的TTL,啧啧

如果没有人员来手动干预,这次的事件还是要持续蛮久的~。

哎呀先不说了,Ovear去开门收个快递~,双十二买的好东西终于到了,咕嘿嘿期待了很久呢~回来继续说O(∩_∩)O~~

发表评论

Name*
 
邮箱*
 
网站 (请以 http://开头)
 
 

(*) 表示必填项

提交评论

最新评论

最近评论最多的读者

 
 
 

关于伯乐在线博客

在这个信息爆炸的时代,人们已然被大量、快速并且简短的信息所包围。然而,我们相信:过多“快餐”式的阅读只会令人“虚胖”,缺乏实质的内涵。伯乐在线博客团队正试图以我们微薄的力量,把优秀的原创/译文分享给读者,为“快餐”添加一些“营养”元素。

伯乐在线-博客( blog.JobBole.com )专注于分享职业相关的博客文章、业界资讯和职业相关的优秀工具和资源。博文类别包括:程序员、设计、营销、互联网、IT技术、自由职业、创业、运营、管理、翻译和人力资源等等。期待您通过RSS订阅微博关注我们。如果您也愿意分享一份自己的原创/译文,可以从这里开始

联系我们

网站合作和广告投放

联系邮箱:Webmaster (at) JobBole.com
QQ: 630772296 (加好友请注明来意)

网站使用问题

请直接在这里发帖询问或者反馈

欢迎关注并订阅伯乐在线博客

 

关于2013年1月21日的DNS故障分析文章的更多相关文章

  1. 2016年12月21日 星期三 --出埃及记 Exodus 21:16

    2016年12月21日 星期三 --出埃及记 Exodus 21:16 "Anyone who kidnaps another and either sells him or still h ...

  2. 2016年11月21日 星期一 --出埃及记 Exodus 20:12

    2016年11月21日 星期一 --出埃及记 Exodus 20:12 "Honor your father and your mother, so that you may live lo ...

  3. 2016年10月21日 星期五 --出埃及记 Exodus 19:5

    2016年10月21日 星期五 --出埃及记 Exodus 19:5 Now if you obey me fully and keep my covenant, then out of all na ...

  4. 成都Uber优步司机奖励政策(2月21日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  5. 2013年12月26日 星期四 doxygen入门--很好

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  6. 长沙4月21日开发者大会暨.NET社区成立大会活动纪实

    活动总结 2019年4月21日是一个斜风细雨.微风和煦的美好日子,由长沙.NET技术社区.腾讯云云加社区.微软Azure云技术社区.中国.NET技术社区.长沙柳枝行动.长沙互联网活动基地(唐胡子俱乐部 ...

  7. eoe移动开发者大会—移动开发者的极客盛宴 2013年9月14日期待您的加入!!

    2013 eoe移动开发者大会北京站即将盛大开启!      大会介绍 由国内最大的移动开发者社区eoe主办,在行业盟友的倾力支持下,集合了来自微软.Google.亚马逊.ARM等跨国公司业务负责人的 ...

  8. 【12月21日】A股滚动市盈率PE历史新低排名

    2010年01月01日 到 2018年12月21日 之间,滚动市盈率历史新低排名.上市三年以上的公司,2018年12月21日市盈率在300以下的公司. 1 - 厦门象屿(SH600057) - 历史新 ...

  9. 成都Uber优步司机奖励政策(4月21日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

随机推荐

  1. Python_sklearn机器学习库学习笔记(四)decision_tree(决策树)

    # 决策树 import pandas as pd from sklearn.tree import DecisionTreeClassifier from sklearn.cross_validat ...

  2. P3592 [POI2015]MYJ

    P3592 [POI2015]MYJ 一道比较烦的区间dp.. 昨天上课讲到了这题,然后就在lg翻到了 然后调了很久很久..... 设\(f[l][r][k]\)为区间\([l,r]\)中,最小值\( ...

  3. JAVAMAIL 530 Error: A secure connection is requiered(such as ssl)

    原因:代码没有开启ssl传输 添加:  props.put("mail.smtp.ssl.enable", "true");           // 设置是否 ...

  4. Object C学习笔记3-对象的使用和定义

    1. 如何定义一个对象 在面向对象的语言中,定义一个对象是使用Class关键字,而在Object-C中则是使用@interface,@interface用于定义对象的属性和方法,@implementa ...

  5. springmvc配置中,mapper一直依赖注入不进去的问题记录

    问题还原: service层在引用mapper层接口时,一直依赖注入不进去.查看spring-context.xml配置,也未发现异常[因为以前就是这么配置],但是始终无法注入. 原因: 问题不出在s ...

  6. c语言版本的coroutine

    #include <stdio.h> int function(void) { ; switch (state) { : goto LABEL0; : goto LABEL1; } LAB ...

  7. 在使用Reference Source调试.Net 源代码时如何取消optimizations(代码优化)-翻译

    在使用PDB调试XAF时,发现好多变量都看不到.都被优化掉了. 下面的方法可以解决. 当你在使用Reference Source functionality in VS 2008 调试.Net 的源代 ...

  8. 【10.13】Bug Bounty Write-up 总结

    今天惯例邮箱收到了Twitter的邮件提醒有新的post,这种邮件每天都能收到几封,正好看到一个Bug Bounty的write up,比较感兴趣,看起来也在我的理解范围之内,这里对这篇write u ...

  9. 一个简单的获取RGB值方式

    操作系统内置了许多小工具,有时候这些小工具也挺有用的,省去了安装一些复杂的软件, 截图 通过键盘PrtSc获取到要取色的图片,然后用画图工具打开 查看 通过画图工具的取色工具,取到你需要的颜色,然后点 ...

  10. 什么是Gradle

    一.什么是Gradle 简单的说,Gradle是一个构建工具,它是用来帮助我们构建app的,构建包括编译.打包等过程.我们可以为Gradle指定构建规则,然后它就会根据我们的“命令”自动为我们构建ap ...