首页 > 其他分享 > DNS服务器的基本原理详解

DNS服务器的基本原理详解

时间:2023-02-08 22:01:58浏览次数:50  
标签:named 记录 --- 域名 详解 DNS 服务器

域名简介:使用tcp/udp协议,默认使用53端口号

           默认情况下,客户端发起的查询请求都是用UDP/53查询的。

           默认情况下,从从服务器到主服务器传输数据用的是TCP/53。

           tcp/953 :rndc监听到这个端口,远程域名服务控制器。

           全球唯一的,所有的域名都是以“.”(根)开始的。

顶级域名:

(1) 国家顶级域名(cn—中国、uk—英国、us—美国等) (2) 国际顶级域名(.int)

(3) 通用顶级域名(.com—商业组织、.edu—教育机构、.org—非赢利性组织、.gov—政府部门、.biz—公司或企业)

二级域名:

(1) 类别域名(ac—科研机构、com—商业组织、edu—教育机构、gov—政府部门、net—网络服务机构、org—各     种非赢利组织) (2) 行政域名(bj—北京、sh—上海、nm—内蒙等)

组织内域名:

当一个组织拥有一个域的管理权后,它可以决定是够需要进一步划分层次。例如:CERNET网络中心将“.edu”               域划分为多个三级域,将三级域名分配给各个大学与教育机构。同时某大学也可以决定是否将自己得到的三级域划   分为多个四级域,将四级域分配给下属部门或主机。

 DNS服务器的基本原理详解_linux

在DNS服务器关系方面,只有上层DNS服务器知道下层服务器的位置,下层不知道上层位置。

查询过程:根域名服务器在全球的数量:逻辑上有13台,实际上有386台。

当客户端不知道DNS服务器位置,先查询计算机中的hosts文件,hosts文件中没有,查找本地DNS服务器的缓存(DNS服务器缓存由设置人员设置时间,最多为1天),缓存上没有,查找服务器数据文件,DNS服务器上的数据文件也没有,本地DNS服务器会直接请求根服务器,根服务器告诉你负责这个区域服务器的位置,然后,由请求的那个DNS服务器来查找,根服务器只告诉你该找那台服务器。直到查询到那个位置的DNS服务器,然后那个DNS服务器直接再交给管理查询客户端的那个DNS服务器!所以,配置DNS服务器要配置好根服务器的位置。

两种查询:

递归查询:本地请求,由我们所请求的DNS服务器(本地直接管理)直接返回的答案,叫权威答案。只需发送一次请求得到最终结果!!!

迭代查询:需要自己去发出n次查询才能得到结果的。

dns从数据存储来说是分布式的,从域名本身来说是树状结构。

dns工作在应用层,他是一个服务。

 

DNS服务器两种功能

 正向解析:从FQDN(全称域名)====>IP

       一个域名可以有多个IP

 反向解析:从IP===>FQDN

       一个IP可以有多个域名

DNS的高级功能,DNS轮循是指将相同的域名解析到不同的IP,随机使用其中某台主机的技术,该项技术可以智能的调整网站的访问量到不同服务器上,减轻网站服务器的压力,实现负载匀衡。

    正反向解析是完全不同的两颗解析树,不必在同一个服务器上,正反向区域记录也没必要完全对应

在DNS服务器的缓存表中,每一个对应关系都称为一个 记录“record”。而记录本身所实现的功能不同,我们称为记录类型,

常用六种资源记录(RR):

1.A(addres)记录:正向解析的记录,将域名转换成IP地址的记录

   A资源记录语法格式:完整主机名(FQDN)   IN   A   IP地址

2. 叫指针记录(PTR):反向解析的记录,将IP地址转换成域名的记录

这两类记录水火不相容,它们是不能放在同一个地方的。必须分开存放。

   PTR资源记录语法格式: IP地址      IN      PTR      主机名(FQDN)

3. SOA(起始授权机构):该记录表明DNS名称服务器是DNS域中的数据表的信息来源,该服务器是主机名字的管理者,创建新区域时,该资源记录自动创建,且是DNS数据库文件中的第一条记录。一个区域解析库有且仅有一个SOA记录,且必须为解析库的第一条记录

   SOA资源记录语法格式:

    区域名(当前)  记录类型SOA   主域名服务器(FQDN)  管理员邮件地址  (序列号 刷新间隔 重试间隔 过期间隔 TTL)

   SOA资源记录字段: 主域名服务器 :区域的主DNS服务器的FQDN

管理员:管理区域的负责人的电子邮件。在该电子邮件名称中使用英文句号“.”代替at符号“@”。

4. NS记录:是用来做授权的,向下授权。用于标识某一个区域内最高长官是谁,长官是谁。

在一个区域内只能有一个soa(最高长官),而ns可以有多个。

   NS资源记录语法格式:   区域名  IN  NS  完整域名(FQDN)

5.MX记录(邮件交换器):它规定了域名的邮件服务器要么处理,要么向前转发有关该域名的邮件.处理邮件是指将其传送给其地址所关联的个人,向前转发邮件是指通过SMTP协议将其传送给其最终目的地.为了防止邮递路由,MX记录除了邮件交换器的域名外还有一个特殊参数:优先级值.优先级值是个从0 到99的无符号整数,它给出邮件交换器的优先级别.,一般只出现在正向解析记录里面的。(数值越小,优先级越大)

MX记录记录了发送电子邮件时域名对应的服务器地址。电子邮件发送使用的是SMTP应用层协议。

例如要发送邮件到[email protected]的时候,其中的域名部分为qq.com,MX记录描述了发送电子邮件时应该发往那个服务器。

可以使用dig命令查询MX记录:dig qq.com mx

   MX资源记录语法格式:

      区域名      IN      MX      优先级(数字)      邮件服务器名称(FQDN)

6.CNME:别名记录,也被称为规范名字:这种记录允许您将多个名字映射到同一台计算机。 通常用于同时提供WWW和MAIL服务的计算机。例如,有一台计算机名为“r0WSPFSx58.”(A记录)。 它同时提供WWW和MAIL服务,为了便于用户访问服务。可以为该计算机设置两个别名(CNAME):WWW和MAIL。 这两个别名的全称

   CNAME资源记录语法格式:  别名   IN   CNAME   主机名

区域与域:

域(domain):逻辑概念: 是一个专业术语 它是用来划分和管理一组客户端的.

区域(zone):物理概念。

子域授权:子域授权:其实就是将一个比较大的域再分割成小区域,每个小区域可以交由一组或多组服务器管理,这些服务器只解析其管辖范围内的域名,超出其范围的解析请求一般会转发给父域或直接转发给根域。

正向区域的子域授权:使用胶水记录(glue record),也就是在父域中添加一条NS记录和一条A记录即可。

DNS服务器类型

主DNS服务器(primary name server):它是特定域所有信息的权威性信息源。它从域管理员构造的本地磁盘文件中加载域信息,该文件(区文件)包含着该服务器具有管理权的一部分域结构的最精确信息。主服务器是一种权威性服务器,因为它以绝对的权威去回答对其管辖域的任何查询。

辅助DNS服务器(secondary name server):它可从主服务器中复制一整套域信息。区文件是从主服务器中复制出来的,并作为本地磁盘文件存储在辅助服务器中。这种复制称为"区文件复制"。在辅助域名服务器中有一个所有域信息的完整拷贝,可以有权威地回答对该域的查询。因此,辅助域名服务器也称作权威性服务器。配置辅助域名服务器不需要生成本地区文件,因为可以从主服务器中下载该区文件。

高速缓存服务器(caching-only server):可运行域名服务器软件,但是没有域名数据库软件。它从某个远程服务器取得每次域名服务器查询的结果,一旦取得一个,就将它放在高速缓存中,以后查询相同的信息时就用它予以回答。高速缓存服务器不是权威性服务器,因为它提供的所有信息都是间接信息。对于高速缓存服务器只需要配置一个高速缓存文件,但最常见的配置还包括一个回送文件,这或许是最常见的域名服务器配置。


转发服务器:是指当本DNs服务器无法对DNs客户端的解析请求进行本地解析时,可以允许本地DNs服务器转发DNS客户端发送的查询请求到其他的DNs服务器。此时本地DNs服务器又称为转发服务(不缓存数据)。

配置基本DNS服务器

一台域名服务器可以解析多个域名。.

在Linux中用来提供DNS服务的软件包叫"bind"-------名称服务器进程,安装后的这个进程叫'"named",这个进程提供的协议叫"DNS"。

安装DNS需要的软件包-----------前两个是默认安装上的,使用yum安装。

bind-utils------客户端工具

bind-libs-------通用库

bind------主软件包

bind----chroot---伪根目录。

caching-nameserver-----提供主配置文件(named.conf)的模板

DNS文件

/etc/named.conf  --->bind进程的工作属性,以及区域定义。

/etc/rndc.key     --->远程域名服务控制器,(秘钥文件)

       配置信息:/etc/rndc.conf

/var/named/   --->区域数据文件

/etc/rc.d/init.d/named    --->脚本文件, 控制服务启动关闭:

                                          start :启动服务

                                          stop :关闭服务

                                        restart :重启服务

                                        reload :重新读取配置文件和数据文件,不用停止服务

                                     configtest :测试配置文件是否有语法错误。

/var/named/  : 

                    named.ca : 存放的是13台根域名服务器

               named.localhost : 专门将localhost解析为127.0.0.1

               named.loopback : 专门将127.0.01解析为localhost

              

type字段指定区域的类型,对于区域的管理至关重要,一共分为六种:

Master:主DNS服务器:拥有区域数据文件,并对此区域提供管理数据

Hint:根域名服务器的初始化组指定使用线索区域hint zone,当服务器启动时,它使用根线索来查找根域名服务器,并找到最近的根域名服务器列表。如果没有指定class IN的线索区域,服务器使用编译时默认的根服务器线索。不是IN的类别没有内置的默认线索服务器。

Slave:辅助DNS服务器:拥有主DNS服务器的区域数据文件的副本,辅助DNS服务器会从主DNS服务器同步所有区域数据。

Stub:stub区域和slave类似,但其只复制主DNS服务器上的NS记录而不像辅助DNS服务器会复制所有区域数据。

Forward:一个forward zone是每个域的配置转发的主要部分。一个zone语句中的type forward可以包括一个forward和/或forwarders子句,它会在区域名称给定的域中查询。如果没有forwarders语句或者forwarders是空表,那么这个域就不会有转发,消除了options语句中有关转发的配置。

Delegation-only:用于强制区域的delegation .ly状态。

(1.)配置主程序文件------named.conf

      /etc/resolv.conf   --->配置自己DNS服务器的指向,自己配置后,指向自己的IP地址!!!

bind的主配置文件/etc/named.comf t他的属主为root。属组为named

options {

        listen-on port 53 { 127.0.0.1​​[B1]​​ ; };   --->监听在那一个端口(0.0.0.0 :53 监听所有IP地址的53端口),

        listen-on-v6 port 53 { ::1; };    --->监不监听ipv6的端口,那个端口

        directory       "/var/named";    --->数据文件目录路径

        dump-file       "/var/named/data/cache_dump.db";    --->

        statistics-file "/var/named/data/named_stats.txt";    --->

        memstatistics-file "/var/named/data/named_mem_stats.txt";    --->

        allow-query     { localhost; };    --->定义只允许谁来查询

        recursion yes;    --->是否给别人递归请求

       

        dnssec-enable yes;    --->

        dnssec-validation yes;    --->

        dnssec-lookaside auto;    --->

 

        /* Path to ISC DLV key */     --->

        bindkeys-file "/etc/named.iscdlv.key";    --->

 

        managed-keys-directory "/var/named/dynamic";    --->

};

手动编辑完配置文件一定要改组:chown :named   /etc/named,conf

                       该权限:chmod  644  文件名

(2.)创建根域名服务器

 使用命令:dig  -t  NS(名称类型)  . (根域名服务器)

 然后把查询的结果导入到文件中并改名:dig  -t  NS  .  >......(文件路径)

 改组...chown  :named   文件名 

(3.)正向解析文件(A记录)

先是宏定义 

$TTL  600​​[B2]​​   (定义生命周期) 

$ORIGIN. (定义当前区域的名称,注意要有.

语法格式:name(()完整域名)​​[B3]​​      TTL(已定义,省略)  IN   资源记录类型    对应数值(IP地址)

(4.)反向解析文件(PTR记录)

语法格式:数值(IP地址)​​[B4]​​   IN  资源记录类型    完整域名

(5.)NS记录​​[B5]​​ 文件

语法格式: 域名    TTL  IN  NS   这个域中DNS服务器的名称(可以有多个)​​[B6]​​ 

          DNS服务器名称   TTL  IN  A  IP地址

 例:ss.com.  600  IN   NS   ns1.ss.com.

      ns1.ss.com.  600  IN   A   1.1.1.1

      ss.com.  600  IN  NS   ns2.ss.com.

      ns2.ss.com.  600  IN   A   1.1.1.2

(6.)MX记录​​[B7]​​ 文件:一般只出现在正向解析文件中

语法格式:域名  TTL  IN  MX   优先级(0-99) 主机名

          主机名  IN  A    IP地址

(7.)SOA记录​​[B8]​​ 文件

语法格式:域名​​[B9]​​   TTL  IN  SOA   主DNS服务器​​[B10]​​  管理员的邮箱地址​​[B11]​​ 

                         (

           20160116----序列号/版本号(主服务器发生改变时,从服务器检查序列号更新数据,一般只有10位)

           20M---刷新时间(从服务器多长时间到主服务器上检查一次数据是否更新)

           时间表示:M--分钟  D--天 W--周  H--小时

           解析域名:  dig  -t  NS  .....    解析IP:dig  -x  IP地址  

       显示查询次序:dig  +trace  -t  A 域名

       显示解析过程:dig  +trace  -t  A  完整域名   @ 交给谁去解析

           区域传送:  -t   axfr(完全区域传送)   域名   --->得到对方区域内的所有数据缓存

                              IXFR(增量区域传送)   序列号  --->得到变化后的数据文件,查看产生了几条纪录。

            验证语法错误命令:service  namad  configtest

                              named-checkconf

                            

配置主从DNS服务器


1.修改主服务器配置文件

options {

        directory       "/var/named";

        allow-recursion  {  192.168.1.1;  };  --->用于定义递归对象,我只给这个地址的主机递归,可以是网段!(前提自己要查询没有缓存)

           };

注意!区域传送可以查到你自己服务器的DNS服务器缓存,并且能判断出dns服务器的解耦,所以,不能让别人都能够传送区域文件。

      只能允许自己的从服务器传送数据文件,别人不可以!

可以定义全局,对每个区域都生效

options {

        directory       "/var/named";

       allow-transfer  { 172.168.1.12; };  --->用于定义允许谁发起递归传送数据请求

        allow-recursion { 192.168.0.0; };

};

也可以只定义某个区域(根区域不需要规定!)

zone "sun.com"  IN  { type master;

                         file "named.sun";

                         allow-transfer  { 172.168.1.12; };  -->用于定义允许谁发起递归传送数据请求

                           };

zone "1.168.192.in-addr.arpa"   IN     {  type master;

                                     file "named.1";

                                     allow-transfer  { 172.168.1.12; };     -->用于定义允许谁发起递归传送数据请求

                                         };

 

本地区域不需要传送,所以禁止传送数据(根区域不需要规定!)

zone "localhost" IN {       type master;

                       file "named.localhost";

                      allow-transfer  { none; };         -->本地区域文件不需要传送,所以禁止!                  

                };

2.修改从服务器配置文件

从主dns服务器上复制文件:scp   目标IP地址 : 文件路径     要放到那个地方

 1.1 安装bind服务

 1.2  /var/named/slaves/  : 同步主dns服务器的文件放在这里

 1.3 编辑从服务器主配置文件

           zone  "sun.com"  IN  { type slave;   --->类型改为从服务器

                         masters { 192.168.1.1; };   ---> 指向主服务器是哪一个

                         file "slaves/named.sun";  --->文件路径改为slave目录下的

                   allow-transfer  { none; };   --->不需要别人从我这里请求区域文件传送

                          };

 

注意!这里可以正反向都为从服务器,可以正向为主,反向为从,也可以反向为主,正向为从。

 

DNS视图

智能DNS:能够根据客户端来源所属的网络,进行判断,并且返回给一个我们事先定义好的IP地址。

视图(View):形成脑裂,不同网段IP解析不同的服务器地址!

注意:一旦定义了视图,那么所有区域都必须定义在视图中                  

       根区域只需要定义在需要递归的视图中就可以了

主配置文件格式:

options {

        directory       "/var/named";

 };

 

view dianxin  { 

    match-clients  {192.168.1.2;};    :只要是这个网址的客户端来解析,解析的配置文件是sun1.com

zone  "sun.com"  IN {  type master;

                file "sun1.com";

                           };

                  };

view    wangtong  {

match-clients  {any;};   :只要不是上面定义的IP地址 ,都给他下面定义的配置文件sun2.com

zone "sun.com"   IN    {

                         type master;

                      file "sun2.com";

     };

     };

 

若是想再重新定义一个新的域名,只需要在每个view中再添加记录就可以了。别忘了创建解析文件!

 

 

专业书籍、问题答疑、教学视频、在线实验平台等服务请移步:​​www.noylinux.com​​【零基础趣学Linux】

如果此文章有帮助到您,还请麻烦动动您的小手点个赞,谢谢~
Linux运维技术交流q:962822359

 


 

标签:named,记录,---,域名,详解,DNS,服务器
From: https://blog.51cto.com/u_10784316/6044918

相关文章

  • Mybatis-Plus 之BaseMapper 方法详解
    packagecom.itheima.dao;importcom.baomidou.mybatisplus.core.conditions.Wrapper;importcom.baomidou.mybatisplus.core.metadata.IPage;importcom.baomidou.my......
  • 轻量级服务器与云服务器的区别
    1、定位不同两者定位不同:而云服务器ECS适用于内存优化型、高IO型、大数据型、裸金属、GPU/FPGA异构计算型等,支持高并发网站、视频编解码、大型游戏、复杂分布式集群应用......
  • C# 两种方法实现HTTP协议迷你服务器
       本文以两种稍微有差别的方式用C#语言实现HTTP协议的服务器类,之所以写这些,也是为了自己能更深刻了解HTTP底层运作。   要完成高性能的Web服务功能,通常都是需......
  • FPN结构详解
    视频链接FPN:越高层次的特征图用于检测更大的目标,图下就是FPN的结构图:Upsample使用的是邻近插值算法。【应该也可以使用别的插值算法】【问题】为什么是从上层往下进行......
  • 71张图详解IP 地址、IP 路由、分片和重组、三层转发、ARP、ICMP
    目录数据如何传输到目的地?IP地址的基础知识IP地址的定义IP地址的组成IP地址的分类广播地址IP组播子网掩码CIDR与VLSM公网地址与私有地址IP路由路由条目类型路由汇......
  • 【时间基准】NTP网络时钟服务器助力智能农业系统
    【时间基准】NTP网络时钟服务器助力智能农业系统【时间基准】NTP网络时钟服务器助力智能农业系统京准电子科技官微——ahjzsz建立一个规范准确即时的种植数据库,提高管理......
  • dnSpy 强大的dotnet 调试以及反编译编辑器
    dnSpy强大的dotnet调试以及反编译编辑器支持的功能调试.net以及unity应用编辑.net以及unity应用轻量级以及暗黑模式反编译支持的能力所有的元数据都可以编......
  • 环保污水厂智能安防视频监控解决方案详解
    一、方案背景随着城市化进程的加快、城市人口的增多,生活用水量日益增加;此外,工业蓬勃发展产生的污水也在逐渐增加,这些生活及工业污水经遍布各地的城市污水处理厂集中处理后再......
  • 图文详解Java中的字节输入与输出流
    目录字节输入流字节输入流结构图FileInputStream类构造方法:常用读取方法:字节输出流字节输出流结构图:FileOutputStream类构造方法:常用写入方法:总结 字......
  • gateway配置详解
    Gateway网关,通过检查请求地址匹配相应的服务请求,访问时直接请求网关的请求地址,会转发到相应的服务;可通过yml文件配置或者代码配置pom:<dependency>......