DNS原理

DNS

简介

DNS(Domain Name Service),域名解析服务,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。

DNS功能

  • 正向解析,将主机名映射到IP地址
  • 反向解析,通过IP得到主机名。

域名层级结构

在了解层级结构我们需要先知道什么是Fully Qualified Domain Name(FQDN完全限定域名),例如在cube.com这个域中主机名为ice的主机,其FQDN就是ice.cube.com
我们经常吧域名写成类似www.baidu.com其实在com后面还有一个’.’这个’.’就是域名空间的根。在根之下就是顶级域(TOP Level Domain,TLD)在每个顶级域之下还有二级域,二级域之下还有许多子域,而查询某个域名的时候,实际上会从后往前找也就是。例如查找ice.cube.com. 会先去找根服务器,根服务器返回.com的地址,再去请求.com,.com返回cube.com地址,再去请求cube.com。这时候cube.com发现ice.cube.com确实属于自己管辖,于是这时候返回IP地址,域名解析完成。
层级结构如下
这里写图片描述

查询类型

  • 递归查询:简单理解,当有主机询问本地DNS服务器www.baidu.com这时候,本地DNS会查找资源记录,如果查找到了便返回,这个就是递归查询
  • 迭代查询:简单的就是,当本地DNS发现找不到改资源记录,就会像根服务器发起请求,然后在向顶级域发起请求,一层一层迭代。直到找到对应的资源记录(当然如果你请求的域名没有对应的资源记录,这也是找不到的。这里说的是存在资源记录的情况下会一直查找下去,自顶向下,)。

域名解析过程

例如要寻找主机名为ice.cube.com,且DNS客户端为CentOS系统
1.主机查找本地的/etc/hosts文件,如果有对应的记录,直接可以访问。如果没有则到下一步
2.向本地的DNS服务器发起请求本地的DNS服务查找自己的记录,看能否找到请求的IP地址如果有这个地址,则返回地址给主机,如果不能则到下一步
3.发起迭代请求,首先向根服务器发起请求
4.根服务器发现无法给出ice.cube.com的地址,但是它能提供顶级域.com的地址,于是返回.com的地址
5.于是本地DNS服务器发送请求给.com名称服务器。询问ice.cube.com的IP地址
6.com名称服务器发现无法给出具体地址,但是知道cube.com的地址,于是.com返回.cube.com的地址。
7.本地DNS服务器向.cube.com发起请求。
8.当.cuce.com查看请求域名为ice.cube.com,查找记录,得到地址。然后返回本地DNS服务器地址。
9.本地DNS服务器缓存该地址并返回给主机
10,11.主机得到ice.cube.com对应的IP于是可以正常通信

这里写图片描述

DNS服务器的类型

  • 主服务器
  • 辅助服务器
  • 缓存服务器

域和区域

在一组公共的DNS服务器上配置的DNS主机的集合被称为“区域(zone)”。在简单的网络上,一个区域可能会表示一个完整的DNS域,例如,域punyisp.com可能作为单独的区域进行DNS配置,在复杂的网络上,对子域的DNS配置有时会委派给其他区域,区域委派使负责子网管理的管理员能够直接管理子网的DNS配置,例如,域cocacola.com的管理员会将子域dallas.cocacola.com的DNS配置委派给一个区域,而这个区域是由Dallas办公室中的管理员控制的。这样就能近距离对域dallas.cocacols.com上的主机进行监视

区域文件

区域的DNS配置存储在一个区域文件中,当需要响应查询和发起查询时,DNS服务器会引用区域文件中的信息。区域文件是一个带有标准架构的文本文件,趋于稳健的内容由多个资源记录构成,一个资源记录就是一行文本。提供了一组有用的DNS配置信息。
一些常用的资源记录类型

  • SOA:Start Of Authority,起始授权记录,为区域指定了权威的名称服务器; 一个区域解析库有且只能有一个SOA记录,而且必须放在第一条;
  • NS:Name Service,NS表示名称服务器,NS记录为区域指定了一个名称服务器。虽然区域中可以有多个名称服务器(因此会有多条NS记录)但是只能有一条指定权威名称服务器的SOA记录
  • A: Address, 地址记录,将域名映射到ipv4地址
  • AAAA:地址记录, 将域名映射到ipv6地址
  • CNAME:Canonical Name,规范名称。域名的别名;
  • PTR:Pointer,IP –> FQDN
  • MX:Mail eXchanger,邮件交换器;
资源记录的定义格式:

语法: name [TTL] IN RR_TYPE value
SOA:

  • name: 当前区域的名字;例如”ice.cube.com”;
  • value:有多部分组成

(1) 当前区域的区域名称(也可以使用主DNS服务器名称);
(2) 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般使用点号来替代;
(3) (主从服务协调属性的定义以及否定答案的TTL)

例如:

ns1.icecube.com  IN SOA ns1.icecube.com  admin.icecube.com (
             20180811   ; serial  
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
    ```             
ns1.icecube.com这个是当前区域的名字
admin.icecube.com 当前区域管理员的邮箱,这里的@要用'.'代替实际上是admin@icecube.com
serial:序列号
refresh:表示备用DNS服务请求首选服务器更新其区域信息的时间间隔
retry :指定在区域更新未成功时,需要等待多长时间,才应再次进行尝试
expire:指定备用名称服务器保留未刷新记录的上限时间
minimum:指定被输出区域记录的默认TTL

NS:

  • name: 当前区域的区域名称
  • value:当前区域的某DNS服务器的名字,例如ns1.icecube.com;

注意:一个区域可以有多个ns记录;
例如

        icecube.com.   IN A  192.168.253.128

MX:

  • name: 当前区域的区域名称
  • value:当前区域某邮件交换器的主机名;

注意:MX记录可以有多个;但每个记录的value之前应该有一个数字表示其优先级;
例如

    icecube.com.   IN MX  192.168.253.128

A:

  • name:某FQDN,例如.
  • value:某IPv4地址;

例如

www.icecube.com. IN A 192.168.253.128

AAAA:

  • name:FQDN
  • value: IPv6

PTR:

  • name:IP地址,有特定格式,IP反过来写,而且加特定后缀;例如1.2.3.4的记录应该写为4.3.2.1.in-addr.arpa.;
  • value:FQND

CNAME:

  • name:FQDN格式的别名;
  • value:FQDN格式的正式名字;.

例如:

web.icecube.com. IN CNAME  www.icecube.com

注意:
(1) TTL可以从全局继承;
(2) @表示当前区域的名称;可以用@替代当前区域名称
(3) 相邻的两条记录其name相同时,后面的可省略;
(4) 对于正向区域来说,各MX,NS等类型的记录的value为FQDN,此FQDN应该有一个A记录;

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值