首页 > 系统服务 > 详细

Linux DNS基础知识与配置

时间:2016-01-11 06:51:47      阅读:215      评论:0      收藏:0      [点我收藏+]

基础概念


程序大都都是有客户端和服务端组成,客户端(Client):用于发起应用请求;服务端(Server):接收并响应请求提供服务。Client是主动请求方,如何实现Server能够及时识别并处理Clinet的某种请求呢?这就引入了端口和监听的概念。

端口(PORT): 可以认为是服务的一种认证,1-1023端口号都被一些通用的应用程序所占用,例如Client请求:80端口,服务端就知道Client请求http服务,同时给予响应。( DNS基于UDP/53号端口和TCP/53号端口,TCP用于区域传送,UDP用于解析)

 监听(LISTEN):Server端一直盯着某一个端口号,如果有人请求此端口的请求,Server端就会马上进行处理(首先会放到其接收缓存中,排队等待处理)。  

有了端口和监听机制是不是就万事俱备了?不是,想过没有,Server如何才能知道谁访问了我的这个端口,Server端要给谁响应请求呢?在网络中能标识主机的就是IP了,所以在通信过程中为了能标识唯一通信的就是Socket了,Socket就是由IP:port组成的。也有另外一种情况,有些程序会跳过传输层直接调用网络层的IP实现传输,我们称之为“裸套接字”通信。

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,更够是你快速的访问互联网,而不用去记住他的IP地址。

主机到IP地址的映射有两种方式:

  1. 静态映射:在每个主机上都有一个hosts文件(文件格式为 IP  主机名1 主机名2 ...  别名),个主机维护自己的映射表,提供本机地址解析使用 。

  2.  动态映射:建立一套域名解析系统,只在专门的DNS服务器上配置主机到IP地址映射,在网络上使用主机名通信的设备,均先到DNS服务器查询主机所对应额IP地址。用于应用DNS过程如下图:

        

技术分享

客户端域名解析过程:

1、客户端首先使用getipbyhostname() 和 gethostnamebyip() 库调用本地hosts文件;

2、若本地hosts文件不存在则首先查找本地缓存(本地缓存是一种域名解析提速的机制,用于每次从DNS解析出的信息,都在本地缓存中保留一份。缓存不能永久有效,都有生命周期,这个生命周期是服务器端给本地缓存的一个限制时间);

3、如果本地缓存查询不到,客户端就会到DNS服务器中查询,将查询的结果缓存在本地。

DNS解析是互联网上绝大多数应用的实际寻址方式,域名私互联网上的身份标识,如果没有DNS那连百度,淘宝咱们都不能直接访问了,除非你知道每个域名对应的IP地址。DNS有国际组织IANA统一管理,每一个域名都是向其申请的。DNS的管理是使用一种倒置的树结构:

技术分享

用此图谈论一下DNS工作过程。以查找www.baidu.com的过程为例:

  1. st1要在网络中查找www.baidu.com,首先向其指定的上级DNS服务器查找,即向.mage查找。.mage首先查找本地文件及缓存,若有此记录就会直接反馈给st1;没有找到,.mage就直接去向根查找;

  2. 因为根并不直接是baidu域的管理者,但却知道归.com管理。所以会反馈给.mage,令其去向.com查找;

  3. .mage向.com.查找时,.com.反馈令其查找.baidu;

  4. .mage去找.向baidu.com.,baidu.com.发现www是属于自己管理的域,从本地解析库中查找到www.baidu.com.并将其解析内容反馈给.mage;

  5. .mage得到解析结果后,首先将查询的信息放到自己的本地缓存,并将查询结果反馈给st1。

    综上所述:查找的顺序依次为 . (根)-->.com.-->.baidu.com.-->www.baidu.com。

DNS中查询的方法有两种:

    迭代查询:st1向.mage查询,仅查询一次;

    递归查询:.mage为了给st1办事儿,找根、找.com、找.baidu 这种查询方法就是迭代查询。

DNS有两种解析类型:

  • FQDN-->IP  正向解析,结构为名称树如上图;  

  • IP--FQDN    反向解析,结构为IP树,如下图所示。

技术分享

DNS解析答案有以下几种:

  • 权威答案:在上述查询www.baidu.com过程中,.baidu给定的答案

  • 非权威答案:在上述查询www.baidu.com过程中,.mage第一次在本地缓存给定的答案

  • 肯定答案:存在查询的键,直接返回。

  • 否定答案:不存在查询的键,也就不存在与其查询键对应的值 。否定答案也有缓存,可以指定统一的缓存时间。



DNS服务器类型及资源记录类型


DNS服务器常见类型:

  • 主DNS服务器(master):维护所负责解析的域解析数据库服务器,读写操作均可执行;

  • 从DNS服务器(slave):从主DNS服务器或其他的从DNS服务器复制一份解析库;但只能进行读操作,不能修改;

      主从结构五种属性信息:
                serial number版本号 : 主DNS版本号更换 :作用:当辅助DNS到主DNS复制文件的时候,如果serial号码增加就复制。
                refresh:检查时间周期,定义每隔多长时间查询主DNS。
                retry: 重试时间<refresh time   
                expire: 过期时间   超过重试时间便删除辅助DNS自己的记录
                nagative answer TTL:否定答案的缓存时间,需要定义到主从服务器配置中

  • 缓存DNS服务器 (hint):用于缓存DNS解析信息

  • 转发器 (forward): 客户端不能访问互联网时,可以通过其转发出去

主从同步方式分为:

    区域传送;

    全量传送:axfr,传送整个数据库

    增量传送:ixfr,仅传送变化的数据

DNS资源记录的格式:

              NAME(域名)             TTL(生命周期值可省)               IN  (关键字)        RRT(资源记录类型)                VALUE

例:www.magedu.com                     3600(单位是s)                  IN                           A                                            192.168.10.10

DNS资源记录类型:标识该记录主要在当前DNS服务器内扮演什么样的角色

  • SOA(Start Of  Authority):起始授权记录,标识区域内部主从服务器间如何同步数据,及起始授权对象是谁的记录。必须放在第一行,一个区域解析苦衷有且只有一个SOA记录。

       格式:

              ZONENAME    TTL            IN            SOA          起始授权主机(一般是主DNS服务器)        ADMINISTRATOR_MAILBOX (
                                                                                              serial number <=10p
                                                                                               refresh
                                                                                               retry    
                                                                                               expire
                                                                                               na ttl)
                    注:

                   1、 时间单位:M(分钟)、H、D、W 默认是秒钟
                          2、邮箱格式:admin@magedu.com   @通配符,区域名称,要写成  admin.magedu.com

                   3、在整个配置文件变更时,serial number一定要加一,否则从DNS服务器无法与主服务器同步数据

  • NS(Name Server):域名服务记录,Zone Name --> FQDN ,一个区域解析库中可以有多个NS记录,其中一个为主DNS。

       格式:      

          ZONE NAME                 TTL                    IN                NS            FQDN
       例:  magedu.com.            86400                 IN                NS            ns1.magedu.com.
  • A (Address):域名服务记录,FQDN-->IPv4。

       格式:    

              FQDN           TTL          IN           A            IPv4
     例: www.magedu.com.    600          IN           A         192.168.0.1

                注:同一个FQDN可以对应多个IP,可实现负载均衡。

  • AAAA:128位  FQDN-->IPv6

  • MX(Mail eXchange):邮件交换器,接收域内的邮件,可有有多个。MX有优先级特性,范围在0-99,数字越小优先级越高。    

     格式:  

            ZONE NAME            TTL                IN                MX            PRI                  VALUE 
       例:magedu.com.            600               IN                MX            10                   mail.magedu.com.
  • PTR(pointer):IP-->FQDN,包括正向区域文件和反向区域文件

格式: 

  向区域文件:           

         IP                IN                PTR                FQDN  
   例:192.168.0.1         IN                PTR                www.magedu.com.

反向区域文件:      

         倒写IP.in-addr.arpa.            IN            PTR            FQDN
   例:  1.0.168.192.in-addr.arpa.  IN            PTR            www.magedu.com.

            注:

                  1、正向区域文件中FQDN不可以简写;

                  2、反向区域文件中FQDN可以简写。

  • CNAME (Canonical Name):别名记录 ,FQDN(别名)-->FQDN(真名)

       格式:

FQDN(别名)            TTL            IN            CNAME             FQDN(真名)
例:www                            600          IN            CNAME             www.magedu.com.

注:针对于区域文件有如***意事项

       1、TTL可以全局继承:在文件头用$TTL定义每条记录中的TT,例:$TTL 3600,每条记录TTL可省略

       2、FQDN公共部分可全局继承:在文件前用$ORIGIN定义,例:$ORIGIN   magedu.com.

       3、@标识当前区域的名称

       4、对正向区域来说,MX、NS等类型的记录的VALUE为一个FQDN,此FQDN应该有一个A记录。


BIND的安装与配置


BIND(Berkeley Internet Name Domain,ISC.org (dhcp、bind),bind是DNS协议实现的一种方式,其主程序名叫named。

1、bind程序包:

      bind-libs:被bind和bind-units中的程序共同依赖的库文件。

      bind-utils:bind客户端程序集,包括:dig,host,nslookup等;

      bind:提供的DNS server程序,以及几个常用的测试程序;

       2、BIND相关目录

[root@localhost ~]# rpm -ql bind
/usr/sbin/named
/etc/logrotate.d/named
/etc/named
/etc/named.conf            #主配置文件,可包含进其他文件:/etc/named.iscdlv.key,
                           #/etc/named.rfs1912.zones,/etc/named/root.key
/etc/named.iscdlv.key
/etc/named.rfc1912.zones
/etc/named.root.key
/etc/portreserve/named
/etc/rc.d/init.d/named
/usr/sbin/named-checkconf   #检查配置文件有无语法错误
/usr/sbin/named-checkzone   #检查区域数据库文件有无语法错误
/var/named                  #定义区域解析库存放的目录,named进程的工作目录。一般以zone_name.zone命名。

         注:1、一台DNS服务器可同时为多个区域提供解析;

                2、必须要有根区域文件;根区域文件主要作用是告诉DNS服务器根的位置,文件名为named.ca

                3、还有可能有两个域解析文件:localhost和127.0.0.1的正反向解析,正反向解析个需要一个库

                         a、正向:/var/named/named.localhost

                         b、反向:/var/named/named.loopback

        BIND的辅助工具rndc:remote name domain contoller,名称服务器远程控制工具。默认使用TCP/953端口,默认监听于172.0.0.1地址,因此仅允许本地使用。

        BIND程序安装完成后,默认即可做缓存名称服务器使用,但前提是本地电脑必须能够联网;如果没有专门负责解析的区域,可直接启动服务使用。

      


BIND的主配置文件格式:

  1. 全局配置段:

options {
        listen-on port 53 { 127.0.0.1; };    #默认监听在127.0.0.1上,删掉此IP地址为监听所有地址,{}必须保留。
        listen-on-v6 port 53 { ::1; };
        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功能
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

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

   2. 日志配置段:

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

   3. 区域配置段:定义由本级负责解析的区域或转发的区域。

zone "." IN {
        type hint;
        file "named.ca";
};

            注意:

                  a.每个配置语句必须以分号结尾;

                  b.{}与其中的参数都必须有空格;

                  c.//和/*表示单行注释.

缓存名称服务器的配置:

        监听能与外部主机通信的地址,


BIND测试工具:

  • dig命令:

         dig [-t RRT] name [@SERVER] [QUERY OPTIONS]

用于测试dns系统,因此其不会查询hosts文件

参数说明:

     name:

     @SERVER:使用哪个主机解析,如果指定主机,/etc/resolv.conf中的设置就失去意义

查询选项:

         +[no]trace  是否踪解析过程

         +[no]recurse :是否进行递归解析

-x :反向解析解析测试  

         dig –x IP

  • host命令:

    host [-t RRT] name SERVER-IP

        SERVER-IP:指定服务器进行测试, 相当于dig中的@SERVER

nslookup 命令:

          nslookup [-options] [name] [server]

            交互模式:

               nslookup>

                      server IP :以指定的IP为DNS服务器进行查询

                       set q=RRT 查询资源记录类型

                        name:查询的名称

BIND服务控制命令:

    rndc 命令:

        status:named服务状态信息

        stop:停止服务,此项可以讲DNS服务停掉

        flush:清楚缓存

        reload [zone] : 重载配置文件


如何配置正向解析区域步骤:

  1. 定义区域:一般不使用主配置文件(/etc/named.conf),而是使用/etc/named.rfc1912.zones定义。

        语法格式:

zone “ZONE_NAME” IN {
   type{master|slabve|hint|forward};
   file“ZONE_NAME.zone”;  #ZONE_NAME.zone放到/var/named下,可使用相对路径;否则需要使用绝对目录。
         };

    例:

vim /etc/named.rfc1912.zones
zone "centos.com" IN {
        type master;
        file "centos.com.zone";  #centos.com.zone 为在/var/named/目录下创建的文件名
#       allow-transfer { none; };


    3. 建立区域数据文件(即ZONE_NAME.zone,主要记录A或AAAA记录)

vim /var/named/centos.com.zone
$TTL 1H
$ORIGIN cento.com.
@       IN      SOA     ns1     admin (
        2016011009 1H 10M 3D 1W )
        IN      NS      ns1
ns1     IN      A       172.16.44.71

         需要更改该文件的属组为named,权限为640:

   #chgrp named  /var/named/magedu.com.zone
   #chmod o= /var/named/magedu.com.zone

  3.检查配置文件语法错误

   ~]#named-checkconf    或 ~]# named-checkconf /etc/named.conf   #检查配置文件语法
   ~]#named-checkzone   ZONE_NAME   ZONE_FILE   # 检查区域文件语法

  4.重载配置文件:每次新建或修改都需要重载配置文件令其生效。

      ~]#rndc   reload
   或 ~]#systemctl reload named.service

  5.解析测试    

[root@centos7-01 named]# dig -t A ns1.centos.com @172.16.44.71

; <<>> DiG 9.9.4-RedHat-9.9.4-18.el7 <<>> -t A ns1.centos.com @172.16.44.71
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31357
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;ns1.magedu.com.            IN    A

;; ANSWER SECTION:
ns1.centos.com.        3600    IN    A    172.16.44.71

;; AUTHORITY SECTION:
centos.com.        3600    IN    NS    ns1.centos.com.
centos.com.        3600    IN    NS    ns2.centos.com.
……

如何配置反向解析区域:

    建立反向解析区域与建立正向解析区域步骤相同,不同之处如下:

    1.反向区域名称为网段地址反写+.in-addr.arpa,例如:44.16.172.in-addr.arpa

    2.正反向区域文件相互间独立。

~]# vim 44.16.172.zone  区域文件
$TTL 1D
$ORIGIN 44.16.172.in-addr.arpa.
@       IN      SOA     ns1.centos.com.         nsadmin.centos.com. (
                2016011006 1H 10M 1D 3D )
        IN      NS      ns1.centos.com.
71      IN      PTR     ns1.centos.com.
~]# vim /etc/named.rfc1912.zones #反向解析配置文件
zone "44.16.172.in-addr.arpa" IN {
        type master;
        file "44.16.172.zone";






Linux DNS基础知识与配置

原文:http://4403357.blog.51cto.com/4393357/1733573

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!