图片 1

2014.1.21 DNS大事故(dns原理、网络封锁原理)

译者注:本文中提到CloudFlare是一家总部位于美国旧金山的内容分发网络(CDN)服务公司,由Project
Honey
Pot项目的三位前开发人员成立于2009年。2011年10月被华尔街日报评为最具创新精神的网络科技公司。

1.21那天发生了什么,由1.21联想补充……
  很多网站都上不去,域名解析都到了65.49.2.178这个IP地址 

服务器租用和托管线路有双IP线路、单IP线路、BGP单IP线路等双线路实现方法。那么这几种线路之间有什么区别又通过哪些技术来实现的呢?

今天,谷歌服务器经历了短暂的宕机事件,持续大概27分钟,对部分地区的互联网用户造成了影响。此次事件的原因深究起来需要进入互联网络那深邃的、黑暗的角落。我是CloudFlare公司的一名网络工程师,在帮助谷歌从此次宕机中恢复回来提供了一臂之力。下面就是事情发生的过程。

 先科普,再深挖
  dns查询类型 递归查询,迭代查询 
  DNS解析过程,这里使用linux的dig命令 详细显示 

图片 1

大约在太平洋标准时间2012年11月5号下午6:24分/时间标准时间2012年11月6号凌晨2:24分,CloudFlare的员工发现谷歌的服务中断了。我们使用谷歌的电子邮件等服务,所以,当它的服务不正常时,办公室的人会很快发现。我在网络技术小组工作,因此我立刻接上网络查看是什么情况——是局部区域问题还是全球问题。

 pc与8.8.8.8的过程为递归查询
8.8.8.8与各个服务器之间为迭代  
  8.8.8.8缓存 不存在记录则向   全球根域名服务器查询 总共13个根域名服务器
a~m  (负责记录各后缀所对应的TOPLEVEL Domain
Server[顶级域名根服务器]).                    

单IP双线路

问题排查

16318   IN      NS      m.root-servers.net..                       16318
  IN      NS      d.root-servers.net..                   16318   IN    
 NS      g.root-servers.net..                       16318   IN      NS  
   j.root-servers.net..                   16318   IN      NS    
 c.root-servers.net..                       16318   IN      NS    
 h.root-servers.net..                   16318   IN      NS    
 i.root-servers.net. 根域名.             16318   IN      NS    
 a.root-servers.net..          
16318   IN      NS    
 b.root-servers.net..            
          16318   IN      NS      l.root-servers.net..                     16318   IN      NS    
 f.root-servers.net..            
          16318   IN      NS      e.root-servers.net..                     16318   IN      NS    
 k.root-servers.net.         
;;

普通的单IP双线路是指在服务器上设置一个IP,此IP是网通IP或是电信IP,通过路由设备设置数据包是通过是电信网络或是网通网络发出来实现的双线技术。此方案也可以提高网通用户与电信用户的访问速度,解决了双IP双线需要在服务器上设置路由的问题,但由于IP地址采用的是网通或电信的IP,访问用户在发送请求数据包时不会自动判别最好的路由。所以这种解决方案只能说是半双线的技术方案、是一种过渡形式的解决方案。此方案一般为单线ISP服务商往双线ISP服务商转型期所采用的折衷方案。一般的中、小网站可以采用该方案。

我很快就意识到,所有谷歌的服务我们都不能连接上——甚至包括连接
8.8.8.8,谷歌的公共DNS服务器——于是,我从追查DNS开始。

Received 228 bytes from 8.8.8.8#53(8.8.8.8) in 250 ms 

双IP双线路

dig +trace google.com

根域服务器向8.8.8.8 返回 .com[顶级域名根服务器]地址
 8.8.8.8再向顶级域查询  (顶级域名根服务器中存储着[权威DNS服务器]) 
com.                    172800  IN      NS      f.gtld-servers.net.com.
                 

双IP双线路实现方式是指在一台服务器上安装两块网卡。分别接入电信网线与网通网线并设置一个网通IP与一个电信IP,这样一台服务器上就有了两个IP地址,需要在服务器上添加网通或电信的路由表来实现网通用户与电信用户分别从不同的线路访问。双IP双线路具有常用的两种使用方式:

下面是我在探测Google.com的域名服务器时得到的回复:

 172800  IN      NS      m.gtld-servers.net.com.                    
172800  IN      NS      e.gtld-servers.net.com.            172800  IN  
   NS      a.gtld-servers.net.com.                    172800  IN      NS
     d.gtld-servers.net.com.            172800  IN      NS    
 l.gtld-servers.net.com.                     172800  IN      NS    
 c.gtld-servers.net.com.            172800  IN      NS    
 b.gtld-servers.net.  顶级域com.         172800  IN      NS    
 i.gtld-servers.net.com.              172800  IN      NS    
 j.gtld-servers.net.com.                    172800  IN      NS    
 k.gtld-servers.net.com.            172800  IN      NS    
 h.gtld-servers.net.com.                    172800  IN      NS    
 g.gtld-servers.net.;;
Received 503 bytes from 192.33.4.12#53(c.root-servers.net) in 328 ms 

1、管理员在网站设置两个IP地址不同的链接,网通用户点击网通IP访问服务器,电信用户点击电信IP访问。

google.com. 172800 IN NS ns2.google.com.

顶级域向8.8.8.8返回 权威dns服务器、域名注册地的dns 
baidu.com.              172800  IN      NS      dns.baidu.com.baidu.com.
             

2、使用BIND9(DNS服务器软件)对不同的IP地址请求返回不同的服务器IP的功能来实现网通用户请求域名时返回网通的IP,电信用户请求域名时返回电信的IP,这个方式就是一些IDC提出的智能DNS的方案。

google.com. 172800 IN NS ns1.google.com.

172800  IN      NS      ns2.baidu.com.baidu.com.         
172800  IN      NS      ns3.baidu.com.
权威dnsbaidu.com.              
172800  IN      NS      ns4.baidu.com.baidu.com.              
172800  IN      NS      ns7.baidu.com.;;
Received 201 bytes from 192.54.112.30#53(h.gtld-servers.net) in 406
ms

本双IP双线路接入法在一定程度上提高了网通与电信用户访问网站的速度,但缺点是由于服务器接入的是双网卡必须在服务器上进行路由表设置,这给普通用户增加了维护难度。并且所有的数据包都需要在服务器上进行路由判断然后再发往不同的网卡,当访问量较大时服务器资源占用很大。此方案较简单解决双线问题,但缺点是不够稳定,维护稍微复杂。一般小型网站或者游戏服务采用该方案。

google.com. 172800 IN NS ns3.google.com.

8.8.8.8再向权威dns查询 
www.baidu.com.         
 1200    IN      CNAME   www.a.shifen.com.a.shifen.com.           
1200    IN      NS      ns1.a.shifen.com.a.shifen.com.           
1200    IN      NS      ns2.a.shifen.com.a.shifen.com.           
1200    IN      NS      ns3.a.shifen.com.a.shifen.com.         
  1200    IN      NS      ns5.a.shifen.com.a.shifen.com.          
1200    IN      NS      ns4.a.shifen.com.;; 
Received 228 bytes from 220.181.38.10#53(ns4.baidu.com) in 15 ms 
一直迭代查询,直到有一台DNS服务器可以顺利解析出这个地址为止。直到返回结果,或者失败8.8.8.8将这个结果发送给pc客户端。在这个过程中,客户端一直处理等待状态, 

用BGP协议实现的单IP双线路
该方案就是通过BGP协议,直接将其中一条线路的IP映射另外一条线路IP上,用户访问时,自动选择最好的路由,这样对用户来说没有通过不同ISP的缓慢延迟。

google.com. 172800 IN NS ns4.google.com.

这是dns的一般过程

什么是BGP呢?BGP(边界网关协议)协议主要用于互联网AS(自治系统)之间的互联,BGP的最主要功能在于控制路由的传播和选择最好的路由。中国网通与中国电信都具有AS号(自治系统号),全国各大网络运营商多数都是通过BGP协议与自身的AS号来互联的。使用此方案来实现双线路需要在CNNIC(中国互联网信息中心)申请IDC自己的IP地址段和AS号,然后通过BGP协议将此段IP地址广播到网通、电信等其它的网络运营商,使用BGP协议互联后网通与电信的所有骨干路由设备将会判断到IDC机房IP段的最佳路由,以保证网通、电信用户的高速访问。

;; Received 164 bytes from 192.12.94.30#53(e.gtld-servers.net) in 152
ms

下面说下网站服务器使用双线接入技术,
一根联通线
一根电信线
为了给用户更快更好的浏览体验
当用户在浏览器地址栏上输入,网站域名时(例如www.hehe.com)回车时
如何鉴别用户线路?????走联通ip???还是走电信ip????

HOSTSPACE美国洛杉矶机房为BGP多线机房,同时拥有电信回国优质线路CN2,给用户提供优质的服务器租用服务和稳定的网络服务。

;; connection timed out; no servers could be reached

有几种技术   1 .自建BGP机房   2.智能DNS解析 3.网站双镜像  

本文出自Hostspace首发,来源网址:

无法探测到任何服务器的结果证明确实有什么地方出了问题。尤其是,这意味着从我们的办公室将连接不到任何的谷歌DNS服务器。

1.自建BGP机房
BGP(边界网关协议)主要用于互联网AS(自治系统)之间的互联,BGP的最主要功能在于控制路由的传播和选择最好的路由。
通过BGP协议将此段IP地址广播到其它的网络运营商的网络中。使用BGP协议互联后,网络运营商的所有骨干路由设备将会判断到IDC机房IP段的最佳路由,以保证不同网络运营商用户的高速访问。  
服务器只需要设置一个IP地址,最佳访问路由是由网络上的骨干路由器根据路由跳数与其它技术指标来确定的,不会占用服务器的任何系统资源。服务器的上行路由与下行路由都能选择最优的路径,所以能真正实现高速的单IP高速访问。 
用BGP协议还可以使网络具有很强的扩展性可以将IDC网络与其他运营商互联,轻松实现单IP多线路,做到所有互联运营商的用户访问都很快。这个是双IP双线无法比拟的。 
成本较大  

我开始网络层查找问题,看看是否是在这个通信层出了问题。

2.智能DNS解析 
把自己的域名DNS服务器选为可以提供 智能DNS解析 的运营商,比如dnspod,等等
*去dnspod申请一个账号,在这个账号里会给你dnspod官方域名解析服务器的地址(比如
 f1g1ns1.dnspod.net) 
*去自己注册域名的域名服务商那里 把自己的域名解析地址设置为
dnspod的服务器比如 ( f1g1ns1.dnspod.net)这样当网站使用电信 联通
双ip接入时
。网站浏览用户在浏览器地址栏输入网站域名,回车时,请求传递到dnspod智能DNS解析服务器,其根据用户的因素及相关算法 返回给用户
联通或者电信 ip地址。
成本低,设置较快。 

PING 216.239.32.10 (216.239.32.10): 56 data bytes

3. 网站镜像
这种越来越少了
,在用户进入网站首页时让用户自己选择访问线路,联通or电信