加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码门户网 (https://www.92codes.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 建站资源 > 经验 > 正文

记一次惊心动魄的 DNS 缓存引发的惨案

发布时间:2017-09-03 18:46:17 所属栏目:经验 来源:ityouknow
导读:副标题#e# 时间 2015 年的某个周六凌晨 5 点,公司官方的 QQ 群有用户反馈官网打不开了,但有的用户反馈可以打开,客服爬起来自己用电脑试了一下没有问题,就给客户反馈说,可能是自己网络的问题,请过会在试试。 但是到了早上点 8 点,越来越多的用户反馈

那么既然我们在上面已经定位出了问题,又了解是什么原因,就想着试着换个 DNS 解析服务器会不会好一点呢,于是我们把本地的 DNS 地址换成 8.8.8.8(谷歌的 DNS 服务解析)发现好了!于是赶紧先写解决手册发给着急的客户来使用。

官网的用户可以通过更改 DNS 来解决访问的问题,App 怎么办呢?没有办法我们也不能等,直接找开发人员把客户端调用的地址由域名暂时先改为外网的 IP 地址打一个版本供用户临时使用。

安卓还比较好办,直接让用户下载安装使用还好,但是 iOS 那时候的审核最少都需要一周,黄花菜都凉了。

其实 iPhone 手机可以单独设置 DNS 的,我们进行了设置和测试后发现也可以实现,于是马上更新到手册中发送给客服,客服再发送到群里面给用户使用。

有人说直接让用户使用外网就行了嘛,使用外网首页打开倒是没有问题,但是各系统之间调用,相关配置文件里面写的也都是域名的地址,如果硬改的话可能会引发另外的问题。

第一天搞完就晚上 10 点多了,中间就下午 4 点吃了一顿饭,打了 N 个电话大家都非常累,于是当天就先这样了,第二天大家一早到公司继续跟进。

第二天到公司,经过 17ce 测试发现所有的节点都已经通了,就剩北京联通的两个节点没响应,但是北京是我们的大本营,绝大部分的用户都是北京的,继续和万网、联通沟通看怎么能彻底的解决这个问题。

另一方面做好最坏的打算,如果一直不通怎么办。在生产环境中梳理所有使用域名的配置文件,做好随时可以直接更新为外网地址而不能影响服务,App 完整的重新做一个版本,做好随时可以投产让用户强制升级到外网直连的版本。

到第二天晚上 10 点的时候,北京联通的这两个节点还是不通,和领导进行了商议如果到周一早上 8 点来的时候这两个网络还是不能通的话,就上线改造好的系统和 App 强制升级(因为当时周末还没有标的,周内才有发标计划)。

第三天早上起来的第一件事情就是拿起手机,查看自己的联通网络是不是可以登录上官网,结果通了!皆大欢喜。

俗话说真理是愈辩愈明,经过了这次事故,也彻底的让我了解了 DNS 解析的整个过程。

DNS 解析流程

DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统。

它用于 TCP/IP 网络,它所提供的服务是用来将主机名和域名转换为 IP 地址的工作。俗话说,DNS 就是将网址转化为对外的 IP 地址。

DNS 从用户访问到响应的整个流程,如下图:

记一次惊心动魄的 DNS 缓存引发的惨案

第一步

浏览器将会检查缓存中有没有这个域名对应的解析过的 IP 地址,如果有,该解析过程将会结束。浏览器缓存域名也是有限制的,包括缓存的时间、大小,可以通过 TTL 属性来设置。

第二步

如果用户的浏览器缓存中没有,操作系统会先检查自己本地的 hosts 文件是否有这个网址映射关系,如果有,就先调用这个 IP 地址映射,完成域名解析。

第三步

如果 hosts 里没有这个域名的映射,则查找本地 DNS 解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。

第四步

如果 hosts 与本地 DNS 解析器缓存都没有相应的网址映射关系,首先会找 TCP/IP 参数中设置的首选 DNS 服务器,在此我们叫它本地 DNS 服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。

第五步

如果要查询的域名,不由本地 DNS 服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个 IP 地址映射,完成域名解析,此解析不具有权威性。

第六步

如果本地 DNS 服务器本地区域文件与缓存解析都失效,则根据本地 DNS 服务器的设置(是否设置转发器)进行查询。

如果未用转发模式,本地 DNS 就把请求发至 13 台根 DNS,根 DNS 服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个 IP。

本地 DNS 服务器收到 IP 信息后,将会联系负责 .com 域的这台服务器。这台负责 .com 域的服务器收到请求后,如果自己无法解析,它就会找一个管理 .com 域的下一级 DNS 服务器地址给本地 DNS 服务器。

当本地 DNS 服务器收到这个地址后,就会找域名域服务器,重复上面的动作,进行查询,直至找到域名对应的主机。

第七步

如果用的是转发模式,此 DNS 服务器就会把请求转发至上一级 DNS 服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根 DNS 或把转请求转至上上级,以此循环。

不管是本地 DNS 服务器用是是转发,还是根提示,最后都是把结果返回给本地 DNS 服务器,由此 DNS 服务器再返回给客户机。

这个事情发生后,给了我们很大的四个教训:

  • 流程管理有漏洞,离职交接不到位。

  • 危机处理不成熟,影响公司声誉。

  • 监控机制不完善,像外网不通的这种问题,应该提前设置监控措施。

  • 有时候非常严重的问题,就是你常常忽略的小问题引起的。

作者:纯洁的微笑

编辑:陶家龙、孙淑娟

来源:http://www.ityouknow.com/

(编辑:源码门户网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读