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

KS

Knowledge Sharing

知识分享

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

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 <domainname>

例如:dig www.leautolink.com

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

dig <domainname> +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 备案号。经营性备案需用户自己到当地管理局相关部门进行办理,服务商可协助提供资质以及接入协议。具体办理要求需您登录当地经营性备案网站进行查看。

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

原文发布于微信公众号 - 互扯程序(chat_routine)

原文发表时间:2017-11-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Web 开发

大内存的机子的新玩具-FancyCache

自从这个学期开始,DDR3内存进入了白菜价时期,4G 1333笔记本的都只需要130RMB左右,果断入手两条

18400
来自专栏安恒信息

研究发现密码管理工具的严重安全缺陷

加州伯克利的研究人员发现了流行密码管理工具的严重安全缺陷。他们将在下个月举行的安全会议上公开报告(PDF)。 研究人员检查了LastPass和其它四个基于Web...

351100
来自专栏编程坑太多

『高级篇』docker之服务编排了解Mesos(22)

13140
来自专栏安恒信息

Oracle WebLogic安全漏洞预警

安恒信息 网络安全前沿资讯、 应急响应解决方案、技术热点深度解读 漏洞安全公告 2018年4月17日,Oracle官方发布了2018年4月安全更新公告,包含了其...

43750
来自专栏思考的代码世界

大流量网站该如何配置优化

16700
来自专栏区块链

服务器被入侵了怎么办?

遇到服务器被黑,很多人会采用拔网线、封 iptables或者关掉所有服务的方式应急,但如果是线上服务器就不能立即采用任何影响业务的手段了,需要根据服务器业务情况...

2K80
来自专栏JAVA高级架构

如何设计一个麻雀般的微型分布式架构?

设计该系统初衷是基于描绘业务(或机器集群)存储模型,分析代理缓存服务器磁盘存储与回源率的关系。系统意义是在腾讯云成本优化过程中,量化指导机房设备扩容。前半部分是...

12630
来自专栏程序员八阿哥

王老板Python面试(1):HTTP中GET与POST的区别?

GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。

11910
来自专栏java思维导图

99%的人都理解错了HTTP中GET与POST的区别

1 GET与POST GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。 最直观的区别就是GET把参数包含在URL...

38250
来自专栏FreeBuf

在任意手机部署Nethunter

0x01 前言 Kali Nethunter是一款用于安全研究的手机固件包,可以使Android设备增加“无线破解”、“HID攻击”、“伪造光驱”等的硬件功能以...

47360

扫码关注云+社区

领取腾讯云代金券