DNS域名服务器,我们使用免费WIFI真的安全吗?

版权声明:本文为博主原创文章,主要是为了交流学习,转载请注明出处。 https://blog.csdn.net/mxw2552261/article/details/78688115
DNS内幕

    DNS是什么,可起到什么作用?没有DNS,今天我们所熟悉的互联网就会立即停工。DNS确实非常重要。不过,通常即使是有经验的开发人员,也对其了解甚少。现在,让我们开始了解DNS吧。


什么是DNS

    DNS是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写,它是由域名解析器和域名服务器组成的。


    域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。其中域名必须对应一个IP地址,一个IP地址可以有多个域名,而IP地址不一定有域名。域名系统采用类似目录树的等级结构。


    域名服务器通常为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器。


    将域名映射为IP地址的过程就称为“域名解析”。


IP地址

     DNS以及整个互联网都是构建在称为网际协议(Internet Protocol)的基础上。每台机器都至少有一个唯一地址,以便和其他机器进行通信。IP地址跟端口号是紧密关联的。监听网络的每个程序都会使用唯一的端口号来辨别发给她的数据流。80端口是HTTP数据流的默认端口。443端口是HTTPS或安全Web访问的默认端口。


    我们使用的IP协议有两种,IPv4(1981年诞生),一直是互联网的基础。IPv6,它是为了解决IPv4中IP地址不够用的问题而出现的。


    在IPV4(127.0.0.1)中IP是由32位二进制数组成的,将这32位二进制数分成4组每组8个二进制数,将这8个二进制数转化成十进制数,就是我们看到的IP地址,其范围是在0~255之间。因为,8个二进制数转化为十进制数的最大范围就是0~255。而IPv6是由128位二进制数表示一个IP地址。


    127.0.0.1:这个地址是特殊的保留IP地址,称作环回( Loopback)地址或本地主机(Localhost)地址。计算机通常将环回地址作为访问自己的快捷方式。


DNS的由来

     问题在于,人们并不擅长记忆数字。记住www.leautolink.com跟记住47.92.143.178的难度完全不是一回事儿,但它们却是指同一个网站。所以,人们无法记住数字,而计算机无法直接使用文本地址。怎么解决这个问题呢?


    在过去的解决办法:创建一个名为hosts的文件,在这个文件中,写下每个IP地址和它所对应的主机名。比如47.92.143.178 www.leautolink.com。这样只要计算机看到www.leautolink.com,就会去查看hosts文件,找到IP地址,然后尝试连接。这个文件现在依然存在,当调试的时候,依然可以这么使用。它的位置:Unix/Liunx/Max 上,在/etc/hosts。在Windows中,它位于C:\windows\system32\drivers\etc\hosts。


    这个解决方案的问题在于,每台机器都带有一个巨大的主机名和地址列表,不过当时的年代,互联网上的主机还是在数以百计的规模,而不是今天的数以亿计。每台机器都需要这个文件,要确保每台机器的的该文件的内容一致,那保持这些文件同步就成了一个非常艰巨的任务。


    起初,hosts文件由一组人维护,之后,文件被放到了服务器上,所有人都可以从那里下载。随着越来越多的人申请修改这个文件的记录,很快证明这种办法的扩展性不怎么样。另外,数以千计的用户每个数小时就要下载更新后的文件,导致带宽压力很大。


    我们需要的是一个能够分散负载的系统,同时针对人(更新文件)和计算机(主要是带宽),为了做到这点,系统需要强大的缓存支持,而且必须是分布式的。这个系统最终发展成了DNS,并沿用至今。它的扩展性非常好,尤其是考虑到最初设计它的时间,以及自那以后互联网及其疯狂的扩张。


DNS 的工作方式

    基本的原则类似于hosts文件的分布式版本。这些hosts文件的分布是DNS协议的重要组成部分,我们称为树状层级(看起来像倒置的树)。



    

    虽然是单个根节点,为了扩展性和冗余度,它被复制到了几台服务器上。有13台位于分散地理位置的根服务器来专门负责这个任务。这些根服务器自身并不包含任何主机信息,而是指向另一层级的服务器——也就是专门负责顶级域名如.com和.net的服务器。


    URL中的每个点都会指向这颗树的下一层级。我们熟知的URL的结构其实就是DNS管理这颗树的表现。一个URL:www.leautolink.com.hk。它有4个部分:www、leautolink、com、hk,每部分都代表它在DNS表示中的一部分。


  1. hk:Hong Kong(香港)的缩写。这部分代表地理位置。每个地区都有一个缩写。

  2. com:commercial(商业用途)的缩写。这表示这个域名归公司所有。

  3. leautolink:你要查找的实体名称。这是 乐视车联的域名。

  4. www:leautolink域的万维网子域,这会使其访问属于leautolink.com.hk域的万维网服务器。


    现在,我们已经知道URL是如何拼在一起的,以及DNS查询(查找域名的过程自身)是如何工作的了。简单的DNS查询会访问13个核心节点中的一个。在那里,它会查询URL中的第一部分,代表区域的顶级域名。查到了区域之后,它会访问区域DNS服务器,并查询商业域名服务器。


    在那台服务器上,它会请求查询 leautolink域,最终到达 leautolink域自身的域名服务器,即leautolink的DNS服务器。在那里,你可以获得 www.leautolink.com.hk的IP地址,但你也可以查

leautolink.com.hk域的IP或mail.leautolink.com.hk域,因为所有这些域都可能会存在leautolink.com.hk的DNS服务器上。


DNS查询

    用于查询DNS服务器的工具非常多。最常用的一个就是dig了。dig(Domain Information Groper)域名信息查询器。


dig

例如:dig www.leautolink.com




    可以看到,它会查询www.leautolink.com中返回1个结果,而这台服务器的IP地址为47.92.143.178。如果想验证这一点,可以对www.leautolink.com简单执行ping命令。




dig+trace 

    一种更高级的查询称作DNS遍历( DNS traversal或 DNS walk)。它会尝试查询指向目标的所有域名服务器。给dig加上+ trace选项,它会让dig在查找目标域名的DNS记录时,提供它查询所有服务器的路径。这次,我们继续查询www.leautolink.com





    带上查询路径的dig的输出更加复杂。要注意的第一部分是在最开始部分列出的13台服务器。这些是互联网实质上的根服务器,我们是直接向它们查询的。然后,它查询了com域,可以看到解析出来的所有的域名服务器。在这些域名服务器上,它直接解析了 leautolink.com,进而解析到了 leautolink.com 域的NF1到NS2域名服务器。我们称这些NS服务器为名称服务器( Nameserver)。它们为域名 leautolink.com提供了DNS功能。这说明实际上有2台服务器在一起为leautolink.com.提供DNS名称解析,最终解析到了我们实际的服务器IP地址。(请反复阅读这段文字,深刻理解以下)


DNS缓存

    到目前为止,你一定已经注意到我们的查询并不高效。每次访问 www.leautolink.com时,都要向根节点查询,这会给DNS根服务器带来很大的负载。你看过dig的输出,事实上对于单个网站面言,只需要一点点信息而已;现在,乘以互联网上网站的总数,再乘以正在上网的用户总数,得到结果后,再乘以每个用户拥有的智能手机、上网本及其他互联网设备的数目。显而易见,数目非常庞大。


    尽管所有核心DNS服务器实质上都是服务器集群,它们会作为一个整体来响应查询(这样提供了很多的计算能力和带宽),但要响应全世界的每一条DNS查询还是难以实现!问题的解决办法是缓存


    缓存是指系统会自己保存一份已知服务器和DNS服务器的列表,来供其在自身的存储中查询。这会大大缩减遍历整个DNS树来查询先前访问过的服务器所消耗的时间,还可减少发向主节点的查询数量。


    举个例子,那台用dig查找过 www.leautolink.com.hk的服务器会在内存中保留它查询过的hk域的名称服务器,以及 leautolink的DNS记录。


查询DNS缓存

    如果你平时使用 Windows,你可以执行一条简单查询,来查看当前的DNS缓存。为了显示当前DNS缓存,打开 Windows的命令行提示符,然后执行ipconfig/displaydns



    

    如果想要清空DNS缓存,可以执行ipconfig/flushdns。虽然并不是理想的方案,但它在网站由于更换了IP地址或迁移到了别的服务器上而无法解析时非常管用。


基于DNS的负载均衡

    对于实际的负载均衡,它的工作机制非常简单。它使用一种称为轮询的方式,来向特定域的一组服务器分发连接请求。这种操作是顺序执行的(按照第一、第二、第三等步骤)。要向服务器增加基于DNS的负载均衡,只需为域增加多个A记录即可。是的,就这么简单!




好处:简单,容易扩展。

坏处:因为是轮询的,所以每次请求可能都会请求不同的服务器,所以无法保存会话标识;另外就是没有容错性,其中一台Web服务器宕机了,DNS负载均衡器无法辨别。


DNS劫持

    DNS劫持又称域名劫持,是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能访问或访问的是假网址。(所以我们在外面连接免费的WIFI,如果有人做手脚,是非常不安全的)。


    DNS劫持(DNS钓鱼攻击)十分凶猛且不容易被用户感知,曾导致巴西最大银行巴西银行近1%客户受到攻击而导致账户被盗。黑客利用宽带路由器的缺陷对用户DNS进行篡改——用户只要浏览一下黑客所掌控的WEB页面,其宽带路由器的DNS就会被黑客篡改,因为该WEB页面设有特别的恶意代码,所以可以成功躲过安全软件检测,导致大量用户被DNS钓鱼诈骗。


预防DNS劫持

    其实,DNS劫持并不是什么新鲜事物,也并非无法预防,百度被黑事件的发生再次揭示了全球DNS体系的脆弱性,并说明互联网厂商如果仅有针对自身信息系统的安全预案,就不足以快速应对全面而复杂的威胁。因此,互联网公司应采取以下措施:


1、互联网公司准备两个以上的域名,一旦黑客进行DNS攻击,用户还可以访问另一个域名。

2、互联网应该对应急预案进行进一步修正,强化对域名服务商的协调流程。

3、域名注册商和代理机构特定时期可能成为集中攻击目标,需要加以防范。

4、国内有关机构之间应该快速建立与境外有关机构的协调和沟通,协助国内企业实现对此事件的快速及时的处理。


名词解释

NS记录:Name Server名称服务器记录。

MX记录:Mail Exchage邮件收发器记录(通常是域的邮件服务器)。

A记录:将一个IP地址和一个域名连接起来。

CNAME记录:代表规范名称或是别名。

ISP:(Internet Service Provider),互联网服务提供商,即向广大用户综合提供互联网接入业务、信息业务、和增值业务的电信运营商。

ICP:(Internet Content Provider)是互联网内容提供商,向广大用户综合提供互联网信息业务和增值业务的电信运营商。




题外话

    前段时间由于公司网站域名接入备案问题,导致整个官网,所有的线上接口服务瘫痪,导致APP无法正常使用的严重“事故”,所以紧急进行服务迁移到香港服务器,才临时解决这次的危机。所以经过这次的“事故”经历,也提醒大家引以为戒,提前备案,不要犯类似错误。


那么备案是什么呢?

    备案是指向主管机关报告事由存案以备查考。行政法角度看备案,实践中主要是《立法法》和《法规规章备案条例》的规定。根据中华人民共和国信息产业部第十二次部务会议审议通过的《非经营性互联网信息服务备案管理办法》精神,在中华人民共和国境内提供非经营性互联网信息服务,应当办理备案。未经备案,不得在中华人民共和国境内从事非经营性互联网信息服务。而对于没有备案的网站将予以罚款和关闭。


为什么要备案呢?

    根据工信部《互联网信息服务管理办法》(国务院 292 号令),网站在未完成备案之前,不能指向大陆境内服务器开通访问。如果您的网站托管在中国大陆节点服务器,或者开通 CDN 服务,就必须申请 ICP(互联网内容提供商)备案。若网站服务器为非中国大陆节点,则不用申请备案。


ICP 包含两种类型:

    ICP 备案: 对于单纯的资讯性并且不涉及直销的网站,需要申请 ICP 备案。ICP 备案可通过网站托管服务器提供商或网络空间服务商(如电信、移动、联通等)进行申请。阿里云 ICP 备案操作可分为:首次备案、接入备案、新增网站备案(原备案不在阿里云) 和 新增网站备案(原备案在阿里云)。


    经营性 ICP 许可证: 对于商品或服务的在线平台或第三方卖方,需获得商用许可证。要申请经营性 ICP 许可证,您必须先有一个有效的 ICP 备案号。经营性备案需用户自己到当地管理局相关部门进行办理,服务商可协助提供资质以及接入协议。具体办理要求需您登录当地经营性备案网站进行查看。


备案过程不是本文的重点,所以想了解的朋友,可以百度搜索一下。



相关阅读:

如何通过技术手段 “干掉” 视频APP里讨厌的广告?

通过技术手段 “干掉” 视频APP里讨厌的广告之(腾讯视频)

抓包神器之Charles,常用功能都在这里了

 

推荐阅读:

2018,如何从小白升级到大牛程序员呢?

htt2.0的时代真的来了

如何站在巨人的肩膀上,将自己的产品赋予AI的能力?百度UNIT

 

学习分享:

深度机器学习56G视频资源分享



知识分享:现在是资源共享的时代,同样也是知识分享的时代,如果你觉得本文能学到知识,请把知识与别人分享


一码不扫,
何以扫天下?

长按关注我们


没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试