游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

一文搞懂DNS基础知识,收藏起来有备无患

  作者:多米诺
  链接:https:juejin。cnpost6844903497494855687
  DNS(DomainNameSystem),也叫网域名称系统,是互联网的一项服务。它实质上是一个域名和IP相互映射的分布式数据库,有了它,我们就可以通过域名更方便的访问互联网。
  DNS有以下特点:
  分布式的
  协议支持TCP和UDP,常用端口是53
  每一级域名的长度限制是63
  域名总长度限制是253
  那么,什么情况下使用TCP,什么情况下使用UDP呢?
  最早的时候,DNS的UDP报文上限大小是512字节,所以当某个response大小超过512(返回信息太多),DNS服务就会使用TCP协议来传输。后来DNS协议扩展了自己的UDP协议,DNSclient发出查询请求时,可以指定自己能接收超过512字节的UDP包,这种情况下,DNS还是会使用UDP协议。
  分层的数据库结构
  DNS的结构跟Linux文件系统很相似,像一棵倒立的树。下面用站长之家的域名举例:
  最上面的。是根域名,接着是顶级域名com,再下来是站长之家域名chinaz依次类推。使用域名时,从下而上。s。tool。chinaz。com。就是一个完整的域名,www。chinaz。com。也是。
  之所以设计这样复杂的树形结构,是为了防止名称冲突。这样一棵树结构,当然可以存储在一台机器上,但现实世界中完整的域名非常多,并且每天都在新增、删除大量的域名,存在一台机器上,对单机器的存储性能就是不小的挑战。另外,集中管理还有一个缺点就是管理不够灵活。可以想象一下,每次新增、删除域名都需要向中央数据库申请是多么麻烦。所以现实中的DNS都是分布式存储的。
  根域名服务器只管理顶级域,同时把每个顶级域的管理委派给各个顶级域,所以当你想要申请com下的二级域名时,找com域名注册中心就好了。例如你申请了上图的chinaz。com二级域名,chinaz。com再向下的域名就归你管理了。当你管理chinaz。com的子域名时,你可以搭建自己的nameserver,在。com注册中心把chinaz。com的管理权委派给自己搭建的nameserver。自建nameserver和不自建的结构图如下:
  一般情况下,能不自建就不要自建,因为维护一个高可用的DNS也并非容易。据我所知,有两种情况需要搭建自己的nameserver:
  搭建对内的DNS。公司内部机器众多,通过IP相互访问太过凌乱,这时可以搭建对内的nameserver,允许内部服务器通过域名互通
  公司对域名厂商提供的nameserver性能不满意。虽然顶级域名注册商都有自己的nameserver,但注册商提供的nameserver并不专业,在性能和稳定性上无法满足企业需求,这时就需要企业搭建自己的高性能nameserver,比如增加智能解析功能,让不同地域的用户访问最近的IP,以此来提高服务质量
  概括一下DNS的分布式管理,当把一个域委派给一个nameserver后,这个域下的管理权都交由此nameserver处理。这种设计一方面解决了存储压力,另一方面提高了域名管理的灵活性(这种结构像极了LinuxFileSystem,可以把任何一个子目录挂载到另一个磁盘,还可以把它下面的子目录继续挂载出去)
  顶级域名
  像com这样的顶级域名,由ICANN严格控制,是不允许随便创建的。顶级域名分两类:
  通用顶级域名
  国家顶级域名
  通用顶级域名常见的如。com、。org、。edu等,国家顶级域名如我国的。cn,美国的。us。一般公司申请公网域名时,如果是跨国产品,应该选择通用顶级域名;如果没有跨国业务,看自己喜好(可以对比各家顶级域的服务、稳定性等再做选择)。这里说一下几个比较热的顶级域,完整的顶级域参见维基百科。
  me
  me顶级域其实是国家域名,是黑山共和国的国家域名,只不过它对个人开发申请,所以很多个人博主就用它作为自己的博客域名(本博客也是这么来的)
  io
  很多开源项目常用io做顶级域名,它也是国家域名。因为io与计算机中的inputoutput缩写相同,和计算机的二机制10也很像,给人一种geek的感觉。相较于。com域名,。io下的资源很多,更多选择。
  DNS解析流程
  聊完了DNS的基本概念,我们再来聊一聊DNS的解析流程。当我们通过浏览器或者应用程序访问互联网时,都会先执行一遍DNS解析流程。标准glibc提供了libresolv。so。2动态库,我们的应用程序就是用它进行域名解析(也叫resolving)的,它还提供了一个配置文件etcnsswitch。conf来控制resolving行为,配置文件中最关键的是这行:hosts:filesdnsmyhostname
  它决定了resolving的顺序,默认是先查找hosts文件,如果没有匹配到,再进行DNS解析。默认的解析流程如下图:
  上图主要描述了client端的解析流程,我们可以看到最主要的是第四步请求本地DNS服务器去执行resolving,它会根据本地DNS服务器配置,发送解析请求到递归解析服务器(稍后介绍什么是递归解析服务器),本地DNS服务器在etcresolv。conf中配置。下面我们再来看看服务端的resolving流程:
  我们分析一下解析流程:
  客户端向本地DNS服务器(递归解析服务器)发出解析tool。chinaz。com域名的请求本地dns服务器查看缓存,是否有缓存过tool。chinaz。com域名,如果有直接返回给客户端;
  如果没有执行下一步
  本地dns服务器向根域名服务器发送请求,查询com顶级域的nameserver地址
  拿到com域名的IP后,再向comnameserver发送请求,获取chinaz域名的nameserver地址
  继续请求chinaz的nameserver,获取tool域名的地址,最终得到了tool。chinaz。com的IP,本地dns服务器把这个结果缓存起来,以供下次查询快速返回
  本地dns服务器把把结果返回给客户端
  递归解析服务器vs权威域名服务器
  我们在解析流程中发现两类DNS服务器,客户端直接访问的是递归解析服务器,它在整个解析过程中也最忙。它的查询步骤是递归的,从根域名服务器开始,一直询问到目标域名。
  递归解析服务器通过请求一级一级的权威域名服务器,获得下一目标的地址,直到找到目标域名的权威域名服务器
  简单来说:递归解析服务器是负责解析域名的,权威域名服务器是负责存储域名记录的
  递归解析服务器一般由ISP提供,除此之外也有一些比较出名的公共递归解析服务器,如谷歌的8。8。8。8,联通的114,BAT也都有推出公共递归解析服务器,但性能最好的应该还是你的ISP提供的,只是可能会有DNS劫持的问题
  缓存
  由于整个解析过程非常复杂,所以DNS通过缓存技术来实现服务的鲁棒性。当递归nameserver解析过tool。chianaz。com域名后,再次收到tool。chinaz。com查询时,它不会再走一遍递归解析流程,而是把上一次解析结果的缓存直接返回。并且它是分级缓存的,也就是说,当下次收到的是www。chinaz。com的查询时,由于这台递归解析服务器已经知道chinaz。com的权威nameserver,所以它只需要再向chinaz。comnameserver发送一个查询www的请求就可以了。
  根域名服务器递归解析服务器是怎么知道根域名服务器的地址的呢?根域名服务器的地址是固定的,目前全球有13个根域名解析服务器,这13条记录持久化在递归解析服务器中:
  为什么只有13个根域名服务器呢,不是应该越多越好来做负载均衡吗?之前说过DNS协议使用了UDP查询,由于UDP查询中能保证性能的最大长度是512字节,要让所有根域名服务器数据能包含在512字节的UDP包中,根服务器只能限制在13个,而且每个服务器要使用字母表中单字母名
  智能解析
  智能解析,就是当一个域名对应多个IP时,当你查询这个域名的IP,会返回离你最近的IP。
  由于国内不同运营商之间的带宽很低,所以电信用户访问联通的IP就是一个灾难,而智能DNS解析就能解决这个问题。
  智能解析依赖EDNS协议,这是google起草的DNS扩展协议,修改比较简单,就是在DNS包里面添加originclientIP,这样nameserver就能根据clientIP返回距离client比较近的serverIP了
  国内最新支持EDNS的就是DNSPod了,DNSPod是国内比较流行的域名解析厂商,很多公司会把域名利用DNSPod加速,它已经被鹅厂收购
  域名注册商
  一般我们要注册域名,都要需要找域名注册商,比如说我想注册hello。com,那么我需要找com域名注册商注册hello域名。com的域名注册商不止一家,这些域名注册商也是从ICANN拿到的注册权,参见如何申请成为。com域名注册商
  那么,域名注册商和权威域名解析服务器有什么关系呢?
  域名注册商都会自建权威域名解析服务器,比如你在狗爹上申请一个。com下的二级域名,你并不需要搭建nameserver,直接在godaddy控制中心里管理你的域名指向就可以了,原因就是你新域名的权威域名服务器默认由域名注册商提供。当然你也可以更换,比如从godaddy申请的境外域名,把权威域名服务器改成DNSPod,一方面加快国内解析速度,另一方面还能享受DNSPod提供的智能解析功能
  用bind搭建域名解析服务器
  由于网上介绍bind搭建的文章实在太多了,我就不再赘述了,喜欢动手的朋友可以网上搜一搜搭建教程,一步步搭建一个本地的nameserver玩一玩。这里主要介绍一下bind的配置文件吧
  bind的配置文件分两部分:bind配置文件和zone配置文件
  bind配置文件
  bind配置文件位于etcnamed。conf,它主要负责bind功能配置,如zone路径、日志、安全、主从等配置
  其中最主要的是添加zone的配置以及指定zone配置文件。recursion开启递归解析功能,这个如果是no,那么此bind服务只能做权威解析服务,当你的bind服务对外时,打开它会有安全风险,如何防御不当,会让你的nameserver被hacker用来做肉鸡
  zone配置文件
  zone的配置文件在bind配置文件中指定,下图是一份简单的zone配置:
  zone的配置是nameserver的核心配置,它指定了DNS资源记录,如SOA、A、CNAME、AAAA等记录,各种记录的概念网上资料太多,我这里就不重复了。其中主要讲一下SOA和CNAME的作用。
  SOA记录
  SOA记录表示此域名的权威解析服务器地址。上文讲了权威解析服务器和递归解析服务器的差别,当所有递归解析服务器中有没你域名解析的缓存时,它们就会回源来请求此域名的SOA记录,也叫权威解析记录
  CNAME
  CNAME的概念很像别名,它的处理逻辑也如此。一个server执行resloving时,发现name是一个CNAME,它会转而查询这个CNAME的A记录。一般来说,能使用CNAME的地方都可以用A记录代替,那么为什么还要发明CNAME这样一个东西呢?它是让多个域名指向同一个IP的一种快捷手段,这样当最低层的CNAME对应的IP换了之后,上层的CNAME不用做任何改动。就像我们代码中的硬编码,我们总会去掉这些硬编码,用一个变量来表示,这样当这个变量变化时,我们只需要修改一处
  配置完之后可以用namedcheckconf和namedcheckzone两个命令来check我们的配置文件有没有问题,之后就可以启动bind服务了:gt;servicenamedstartRedirectingtobinsystemctlrestartnamed。service
  我们用netstatntlp来检查一下服务是否启动:
  53端口已启动,那么我们测试一下效果,用dig解析一下www。hello。com域名,使用127。0。0。1作为递归解析服务器
  我们看到dig的结果跟我们配置文件中配置的一样是1。2。3。4,DNS完成了它的使命,根据域名获取到IP,但我们这里用来做示范的IP明显是个假IP:)
  用DNS实现负载均衡
  一个域名添加多条A记录,解析时使用轮询的方式返回随机一条,流量将会均匀分类到多个A记录。wwwINA1。2。3。4wwwINA1。2。3。5
  复制代码上面的配置中,我们给www域添加了两条A记录,这种做法叫multihomedhosts,它的效果是:当我们请求nameserver解析www。hello。com域名时,返回的IP会在两个IP中轮转(默认行为,有些智能解析DNS会根据IP判断,返回一个离client近的IP,距离请搜索DNS智能解析)。
  其实每次DNS解析请求时,nameserver都会返回全部IP,如上面配置,它会把1。2。3。4和1。2。3。5都返回给client端。那么它是怎么实现RR的呢?nameserver只是每次返回的IP排序不同,客户端会把response里的第一个IP用来发请求。
  DNS负载均衡vsLVS专业负载均衡
  和LVS这种专业负载均衡工具相比,在DNS层做负载均衡有以下特点:
  实现非常简单
  默认只能通过RR方式调度
  DNS对后端服务不具备健康检查
  DNS故障恢复时间比较长(DNS服务之间有缓存)
  可负载的rs数量有限(受DNSresponse包大小限制)
  真实场景中,还需要根据需求选择相应的负载均衡策略
  子域授权
  我们从。com域下申请一个二级域名hello。com后,发展到某一天我们的公司扩大了,需要拆分两个事业部A和B,并且公司给他们都分配了三级域名a。hello。com和b。hello。com,域名结构如下图:
  再发展一段时间,A部门和B部门内部业务太多,需要频繁的为新产品申请域名,这个时候他们就想搭建自己的namserver,并且需要上一级把相应的域名管理权交给自己,他们期望的结构如下:
  注意第一阶段和第二阶段的区别:第一阶段,A部门想申请a。hello。com下的子域名,需要向上级申请,整个a。hello。com域的管理都在总公司;第二阶段,A部门先自己搭建nameserver,然后总公司把a。hello。com域管理权转交给自建的nameserver,这个转交管理权的行为,就叫子域授权
  子域授权分两部操作:
  A部门自建nameserver,并且在zone配置文件中指定a。hello。com的权威解析服务器为自己的nameserver地址
  总公司在nameserver上增加一条NS记录,把a。hello。com域授权给A部门的nameserver
  第一步我们在用bind搭建域名解析服务器里讲过,只要在zone配置文件里指定SOA记录就好:INSOAns。a。hello。comadmin。a。hello。com。()复制代码
  第二步,在hello。com域的nameserver上添加一条NS记录:a。hello。comINNSns。a。hello。comns。a。hello。comINAxx。xx。xx。xx(自建nameserver的IP)复制代码
  这样当解析xx。a。hello。com域名时,hello。comnameserver发现配置中有NS记录,就会继续递归向下解析
  DNS调试工具
  OPS常用的DNS调试工具有:host,nslookup,dig
  这三个命令都属于bindutils包,也就是bind工具集,它们的使用复杂度、功能依次递增。关于它们的使用,man手册和网上有太多教程,这里简单分析一下dig命令的输出吧:
  dig的参数非常多,功能也很多,详细使用方法大家自行man吧
  其他DNS放大攻击
  DNS放大攻击属于DoS攻击的一种,是通过大量流量占满目标机带宽,使得目标机对正常用户的请求拒绝连接从而挂掉。
  思路
  正常的流量攻击,hack机向目标机建立大量requestresponse,但这样存在的问题是需要大量的hack机器。因为服务器一般的带宽远大于家用网络,如果我们自己的家用机用来做hack机器,还没等目标机的带宽占满,我们的带宽早超载了。
  原理
  DNS递归解析的流程比较特殊,我们可以通过几个字节的query请求,换来几百甚至几千字节的resolving应答(流量放大),并且大部分服务器不会对DNS服务器做防御。那么hacker们只要可以伪装DNSquery包的sourceIP,从而让DNS服务器发送大量的response到目标机,就可以实现DoS攻击。
  但一般常用的DNS服务器都会对攻击请求做过滤,所以找DNS服务器漏洞也是一个问题。详细的放大攻击方法大家有兴趣自行google吧,这里只做一个简单介绍:)
  (完)
  微软于年初推出了自己的Python教程,我们将其汉化提供给大家,欢迎大家收藏关注哦(已经汉化完成的20集,我们日更1集,未完成部分我们尽快更新)

荣耀赵明谈过度备货未来几个月是友商最危险的时候IT之家5月10日消息据澎湃新闻5月10日报道,荣耀重启遭遇全球缺芯,这给荣耀的供应链整合带来难度。荣耀CEO赵明在接受采访时坦承前几个月压力很大,加上荣耀本身有几个月的……科技巨头大杀器!美参院通过重磅反垄断法案,或波及Tiktok让美国科技巨头极为忌惮的重磅反垄断法案又向获得国会通过迈进了一步。美东时间1月20日周四,美国参议院司法委员会以16票赞成、6票反对的投票结果通过,继续推进美国选择和创新……苹果股东怒斥库克苹果的环保做法是虚伪的9月15日的苹果发布会,如果你是全程看完的话肯定对一个词语十分熟悉环保,几乎每一个新的产品介绍完毕后,苹果的发言人都要提到环保。环保在最近两年里一直都是苹果的主题之一,为了环保……互联网医疗缓解看病难看病难一直都是一个民生问题。老百姓看病从传统的到医院排队挂号问诊,再排队拿药是一个非常艰难的过程,特别是对于一些行动不便,工作繁忙,还有家住的特别远的患者,看一次病,花钱不止,……soul里的网恋靠谱吗?谢谢邀请〔比心〕我前几年玩了一段时间soul,认识了三个让我印象比较深刻的朋友。但,现在都没有联系了。总结了一下,suol里面有三种坏人,希望能给想去玩或者正在玩s……干货篇redis哨兵集群部署众所周知,redis是一个开源的高性能的keyvalue类型数据库,目前在生产中被广泛应用。为了保障生产系统的高可用性和稳定性,因此就需要一套高可用性的redis环境提供稳定的……超棒的新能源车型你知道吗?海豚从比亚迪推出的海洋系列第一款新能源车海豚上市之后,很多年轻的车友都被这一款萌萌哒的外貌所吸引。除此之外,这一款车不仅有超高的颜值,在整体的配置和性能方面都非常的不错!首先从外形……vivoX70Pro实购实测真实体验在强大的广告下,终于在某东上入手vivoX70Pro8GB256GB!三天来实际应用感受是:除了拍照还说的过去,其他比起我准备淘汰苹果x,真乏善可陈!包装上没什么不好。牛……朝媒朝鲜研发出七语种AI翻译器,英中日翻译准确率可达专家水平韩联社10月3日报道,据朝鲜外宣媒体今日朝鲜3日报道,金日成综合大学信息科学部人工智能技术研究所日前研发出朝鲜式的机器翻译服务系统龙马,并将其广泛投入使用。据悉,该翻译程……iPhone13数据迁移恢复方案出炉,iPhone12让路新本周,一批,iPhone13用户陆续拿到新机。如果你想知道如何在不丢失任何数据的情况下升级到iPhone13,包括运行iOS15。1beta的用户应该怎么做,现在,详细解答已经……苹果13真香,但不好意思我不买今年的苹果秋季发布会发布的苹果13系列,其实没有太大的亮点,整个系列的外形和大小跟苹果12差不多,但各个方面又做了整套的升级,比如芯片、电池、照相技术等等,但你又没法把某个点圈……尼康Z1424mmf2。8S镜头获SilverAward银奖尼康广角变焦镜头尼克尔Z1424mmf2。8S获得了由专业测评网站DPreview颁发的SilverAward银奖。DPreview认为这款镜头对焦速度快,能够实现清晰锐利的图……
爱情公寓演员谁死了,宛瑜的扮演者死了吗《爱情公寓》在诸多90后心目中是一部非常经典的搞笑情景剧,虽然故事就发生在那个小小的公寓里,故事的主人公也就那么几对恋人未满的男女朋友,但是里面每个小故事都让人捧腹大笑。网上经……妈妈的朋友女主叫什么身材是影片的一大的亮点很多人还是比较喜欢的韩国的电影的,因为韩国的电影中有很多情节都是有些冲破人伦,尤其是三片的确是有一种让人抓狂的感觉,妈妈的朋友这部影片的是韩国的一部三片,这部影片中其实讲诉的是……李成敏五感图几分几秒视频撩人心神的片段李成敏是韩国女艺人里边以性感著称的明星之一,《五感图》是她曾经参演过的一部电影,这部影片中她对于男女的房事演绎的特别的感性,李成敏五感图几分几秒视频的相关信息早就在网络上传开,……阎婆惜坐楼等张三偷情剧中最大转折为什么阎婆惜和张三是什么关系?关于两个人的出现,不得不说的还是有一个则是叫做宋江,是水浒传中重要的人物,在这些人中我们看到了所谓的利益,不过是为了自己在不断的侵犯对方人权,所以对于阎……冯宝宝到底是什么身份民国人物怎么活的那么长久在动漫中,我们最喜欢的其实是冯宝宝,因为她的身份简直是超出了人们的想象,在她的身上到底是有什么秘密呢?冯宝宝到底是什么身份?民国人物怎么活的那么长久,即使是冯宝宝自己都不怎么清……梁朝伟和汤唯演的电影叫什么名字以三段床戏吸引受众梁朝伟和汤唯演的电影叫什么名字,叫作《色middot;戒》,这部电影在宣传的时候就引起了观众强烈的观看欲望,因为有三段大尺度的床戏,吸引受众观看欲望,不少的观众都想要看看究竟是……何佩瑜鸭王换轮胎片中的床戏是不是真人拍摄的何佩瑜鸭王换轮胎怎么回事?香港女演员何佩瑜在拍摄三电影《鸭王》的时候据说有换轮胎,这到底是什么情况我们还需要更进一步的详细了解,但可以确定的是在这部电影中何佩瑜有非常多大尺度的……李成敏甩奶gif在几分钟趴在地上胸一抖一抖太诱人李成敏甩奶gif在几分钟一度在网络上很火,谁让这位韩国大美女的身材是一等一的好呢,这样一副好身材在拍摄电影的时候稍微漏出来一点就足够引人注目了,因此看完李成敏电影的观众还是对她……爱情公寓抄袭哪些电影抄袭老友记和看美剧没差别爱情公寓这部电视剧在中国是褒贬不一,在很多人眼中爱情公寓是一个充满了欢乐,陪伴了很多人时间的电视剧,还有人说爱情公寓是抄袭的电视剧,那么就来看看爱情公寓抄袭哪些电影呢?而且很多……硕士Nature发完论文后回乡考公,宇宙的尽头真是公务员?最近,因为在国际顶尖学术期刊《Nature》上以第一作者的身份发表学术论文,浙江理工大学的硕士生郝治伟受到了网友们的关注。《Nature》作为论文届的天花板期刊,有人统计……iPhone13定价曝光,或迎来首降据外媒报告,iPhone13将延续iPhone12,发布四款机型IPHONE13定价:与iPhone12相同或更低IPhone13型号64GB128GB……生活小记11关于爱情上班快要一年了,试用期也将要结束了,一切有条不紊的进行着,未来的生活也渐渐清晰了模样;我非常珍惜当下的生活,每天都安心而踏实。但在别人眼中,目前的我还有很多事需要做,好像其中最……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网