【DNS】简单聊聊DNS如何工作

时间:2022-12-25 11:15:15

随便聊聊

我们知道,网络上传输的数据包是一层一层的包起来的,典型的是mac地址层,ip层,tcp/udp层,应用层数据 这么几个层,那用户在浏览器中打开www.baidu.com数据包如何传到baidu的后端服务器呢?我们这个数据包没有ip层的目标ip啊,http请求怎么知道往哪里发?这个时候,dns系统就介入了,dns系统首先会把这个www.baidu.com的ip地址给找出来! dns系统主要是依靠权威dns,和递归dns来工作的,那权威dns和递归dns都是干嘛的呢?

权威dns(Authority dns)

首先我们来聊一聊权威dns。 权威dns做的事情主要是管理某个或多个特定域的dns服务。一般大一点的公司,都有自己的权威dns

比如所有”.alipay.com”结尾的域名都由alipay来管理所有”.alibaba.com”结尾的域名都由alibaba来管理(alipay和alibaba实际又是同一家公司来管理)所有“.baidu.com”结尾的域名都由baidu来管理alibaba和baidu各管各的,没有交互。<>那整个域名系统,如何跑起来的呢,不然你说你管理alibaba.com的所有域名,我说我也管理alibaba.com的所有域名,不就乱套了么。

光说是没有用的,必须要到相关注册局机构去注册。

  1. 最上面是根域。
  2. 一级域要去根上注册,像com域,net域就属于一级域
    • Com域(也就是所有以“.com”结尾的老祖com域)要去根上注册com域的域名服务器(nameserver)列表。
    • Net域(也就是所有以”.net”结尾的老祖net域)要去根上注册net域的域名服务器(nameserver)列表。
  3. 二级域一般要到一级域上去注册
    • alibaba.com要到com域去注册自己的域名服务器nameserver列表
    • baidu.com也要到com域去注册自己的域名服务器nameserver列表

那你说a.b.c这个域名的一级域是谁,当然是“c”了,但是c域就没有在根上面去注册,所以这个域名是个无效的域名。 这样的一些实际管理域名系统的dns都是权威dns就这样一级一级的注册。

【DNS】简单聊聊DNS如何工作

整个域名系统就连起来了,就变成了这么个东西

所以dns叫做分布式的域名系统,分布在世界上面的各个管理域名的公司或机构,有些情况用户只想简单的把自己的ip转化为某个域名,而不想管理整个域,那这个时候他就可以去买域名,有些公司是专门卖域名的。比如alibaba.com完全可以卖任何以“.alibaba.com”结尾的域名,只是alibaba.com不会这么干,这样做一些钓鱼网站来挂自己的网站,也以alibaba.com结尾的话,用户不就很容易被钓鱼了么,比如我支付宝付款的时候我只看跳转后的域名是否是以alipay.com结尾的,如果不是我就不敢付款)

递归DNS(Recursion DNS)

那用户访问www.alibaba.com,请求又是如何到alibaba的权威dns服务器上面找到www.alibaba.com的ip呢?

这个时候递归dns(我们一般叫做local dns)就介入了。

用户首先要直接配置自己的dns服务器,一般你拨号上网,或者在公司里面上网,我们windows系统都已经预想配置好了递归dns服务器的ip地址,当然自己也可以修改

【DNS】简单聊聊DNS如何工作

RHEL Linux系统是/etc/resolv.conf配置文件来配置。

一个用户访问www.alibaba.com的过程如下(可放大图片观察)

【DNS】简单聊聊DNS如何工作

其中有几点补充

  1. 递归dns也就是我们常说的缓存dns,local dns,公共dns(提供专门递归服务的dns),这样一步步的从根“.”到"com",再到“alibaba.com”,最后到“www.alibaba.com”的过程叫做递归过程
  2. Dns请求一般是udp报文(也可以是tcp的报文),所以同样也是要有源ip,目标ip,等等这些网络数据包的底层信息,递归过程的每一步,目标ip都必须是很明确的
  3. 各个域的namserver实际上是有多台的,比如根的namserver的ip有13个,com的namserver的ip也有13个,递归dns在进行递归时需要选择其中一个ip作为目标ip进行下一步请求即可(目前主流dns实现软件,如bind会选择延时最小的那个ip作为下一步请求的目标ip)
  4. 大家不用担心根域,或者com域就那么几个ip,能不能接受的了全球的dns请求能不能抗的住的问题。这只是个目标ip,基于ip的负载均衡技术多的很,dns中用的多的是anycast技术,一个ip实际上对了很多个物理服务器,到各个权威nameserver上,也有lvs,ospf等等一些负载均衡技术把同一个ip对应到多个物理服务器上面。
  5. 递归dns还会把图中递归第一步,第二步,第三步向各级权威dns发起的请求结果给缓存到自己的内存中,直到这条结果的ttl超期失效(超期时间一般为几分钟到几小时几天等等),在这个ttl超期之前,任何其他用户发起的www.alibaba.com的dns请求,递归dns都会直接从自己的内存中把缓存结果直接返回给客户端(不会去递归了)。如果ttl超期了,才会去重新递归。
  6. 有的dns既是权威dns,又是递归dns,这并不冲突,这种dns在遇到域名是自己管理的域的后缀结尾时,会直接进行应答(无论是否存在结果),如果不是自己管理的域的后缀域名,则进行递归,同样吧递归结果进行缓存。

聊聊dns攻击

我们顺便聊聊dns攻击问题,典型的有拒绝服务攻击,dns劫持等。

  1. 拒绝服务攻击这种是对各种应用(不止是dns应用)都很常见的攻击,大家也都知道,我们构造数据包直接调用驱动,或者使用现成的pktgen改吧改吧,或者用dpdk,或者干脆多一点肉机,随意伪造源ip,dns请求(或者什么http请求,arp请求等等),一秒钟打出几百万或者几千万个包打出很大流量的请求来,不是什么难的事情(不是所有公司的系统都有很强的防攻击措施),而带宽就这么大,硬件的能力也好操作系统的能力也好就这么大,正常的客户请求就进不来而无法服务了,从而达到了攻击。
  2. Dns劫持攻击也有,伪造dns响应是很简单的,或者直接在上级dns上面配置泛域名,但是容易被发现,但是即使容易被发现,一旦进行了劫持,后果也是不堪设想的,比如前段时间根被劫持了,我们从上图的递归dns向各级权威dns询问www.alibaba.com的ip是多少,根的nameserver或者com的nameserver本来是不应该直接告诉递归dns www.alibaba.com的ip到底是多少的,必须要到alibaba.com的权威dns才能得到最终结果,可是根却在第一步递归过程中,就告诉递归dns我知道www.alibaba.com的ip(当时好像是任何域名请求到根的namserver,根的namserver都直接给返回了同一个错误的ip),是y.y.y.y(一个错误的ip)了,这样最后产生http请求的时候,目标ip就完全不对了,而由于各个递归dns ttl超期之后都会先从根递归,这样所有域名就都被劫持了,整个互联网也就崩溃了。
  3. 另外泛域名这种,举个简单的例子,如果我是根的namserver,我配置一个泛域名 ,让其ip为1.1.1.1,那么所有到根进行查询的任何域名查询,都会得到直接响应说ip是1.1.1.1,那打开任何网页,数据包的目标ip就都是1.1.1.1了,不堪设想。小点来说如果我是com的namserver,配置一个泛域名,.com,那所有以”.com”结尾的域名也都不堪设想了,根本走不到各个公司去做dns查询这一步。

如有错误,欢迎指正。

【DNS】简单聊聊DNS如何工作的更多相关文章

  1. 简单谈谈DNS的工作原理及实践

    DNS协议简介 dns(Domain Name System)是一个全球化的分布式数据库系统,用于存储域名和互联网IP地址的映射关系.dns协议是计算机协议栈应用层中,应用最广泛的协议之一.用户每一次 ...

  2. BIND的进程一:DNS简单配置与的主从配置

    DNS的简单配置和DNS的主从配置   摘要:DNS(Domain-Name Server) ,DNS的服务起到的作用就是名称解析,在网络通讯来说计算机与计算机是通过IP地址相互通信的, 当是IP地址 ...

  3. 简单理解DNS解析流程(一)

    0x0 简单理解dns DNS服务器里存着一张表 表中放着域名和IP地址,域名和IP地址以映射关系保存,即一对一 浏览器访问某个域名,实际上是访问它的ip地址 所以浏览器需要知道域名对应的ip地址 如 ...

  4. 简单说说DNS劫持&lowbar;firefox吧&lowbar;百度贴吧

    简单说说DNS劫持_firefox吧_百度贴吧 DNSSEC

  5. 通过开源程序同时解决DNS劫持和DNS污染的问题

    我们知道,某些网络运营商为了某些目的,对DNS进行了某些操作,导致使用ISP的正常上网设置无法通过域名取得正确的IP地址.常用的手段有:DNS劫持和DNS污染.关于DNS劫持和DNS污染的区别,请查找 ...

  6. 【转】DNS劫持和DNS污染的区别

    什么是DNS服务器? 简单来说,DNS服务器就是域名管理系统. DNS(Domain Name System)是域名解析服务器的意思. DNS服务器是干什么的? DNS服务器在互联网的作用是:把域名转 ...

  7. &lt&semi;转&gt&semi;浅谈DNS体系结构:DNS系列之一

    浅谈DNS体系结构 DNS是目前互联网上最不可或缺的服务器之一,每天我们在互联网上冲浪都需要DNS的帮助.DNS服务器能够为我们解析域名,定位电子邮件服务器,找到域中的域控制器……面对这么一个重要的服 ...

  8. DNS劫持和DNS污染的区别

    我们知道,某些网络运营商为了某些目的,对DNS进行了某些操作,导致使用ISP的正常上网设置无法通过域名取得正确的IP地址.常用的手段有:DNS劫持和DNS污染. 什么是DNS劫持 DNS劫持就是通过劫 ...

  9. 什么是DNS劫持和DNS污染?

    什么是DNS劫持和DNS污染? http://blogread.cn/it/article/7758?f=weekly 说明 我们知道,某些网络运营商为了某些目的,对 DNS 进行了某些操作,导致使用 ...

随机推荐

  1. VS2010无法调试问题解决

    最近,因为公司开发的需要,对开发环境进行全面的升级,在这其中也遇到了不少问题,在之后将陆续整理出来,以便以后查看. 之前开发环境:VS2008,ArcGIS9.3,ArcEngine9.3,Oracl ...

  2. &OpenCurlyDoubleQuote;我爱淘”冲刺阶段Scrum站立会议8

    完成任务: 今天最大的成功就是解决了昨天的问题,可以将xml文件的内容解析出来显示到软件中. 计划任务: 可以通过webservice将数据库中的内容解析出来,通过查询可以得到想要的内容. 遇到问题: ...

  3. 数论——lucas定理

    网上证明很多,虽然没看懂.... 主要解决大组合数取模的情况 费马小定理求大组合数: a^(p-1)=1%p; 两边同除a a^(p-2)=1/a%p; C(n,m)= n!/(m!*(n-m)!) ...

  4. ASP&period;NET 页面间数据传递的方法

    在做WEB开发时,很多地方会涉及到页面间的数据传递.这几天在完善教务基础系统,遇到了这个问题,上网查了一些资料,现总结如下: 说到页面间数据传递,很多人都会想到通过像Session这样的全局变量,但是 ...

  5. OC中属性readwrite,readonly,assign,retain,copy,nonatomic 各是什么作用,在那种情况下用?

    此次只做简单说明,不做代码演示! 1> readwrite:同时生成get方法和set方法的声明和实现 2> readonly:只生成get方法的声明和实现 3> assign:se ...

  6. 【笔记】Python基础四:迭代器和生成器

    一,迭代器协议和for循环工作机制 (一),迭代器协议 1,迭代器协议:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个stopiteration异常,以终止迭代(只能往 ...

  7. 【内核】Linux内核Initrd机制解析,内核更新步骤,grub配置说明

    什么是Initrd initrd的英文含义是 boot loader initialized RAM disk,就是由boot loader初始化的内存盘.在 linux内核启动前, boot loa ...

  8. Android:layout属性大全

    Android layout属性大全 第一类:属性值 true或者 false android:layout_centerHrizontal 水平居中android:layout_centerVert ...

  9. MAC如何生成SSH key与GitHub关联

    一.检查 SSH key 是否存在 在终端输入如下代码: ls -al ~/.ssh 如果没有,终端显示如下: No such file or directory 如果有,终端显示如下: ➜ ~ ls ...

  10. 【Spring】—— 自动装配

    一.Spring中装配bean的方式 1.在XML中显式配置 2.在Java中进行显式配置 3.隐士的bean发现机制和自动装配 二.自动装配示例 1.在需要装配到其他bean中的类中加入@Compo ...