DNS

简介

    DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。

一 DNS and BIND   

        DNS: Domain Name Service,协议(C/S, 53/udp, 53/tcp);应用层协议;

        BIND:Bekerley Internat Name Domain, ISC (www.isc.org)

DNS查询类型:

        递归查询

        迭代查询

DNS资源记录:

    DNS服务器中域名与IP地址相互转换的映射信息以文本形式存储在其区域解析中,每一行表示一对对应关系,称之为资源记(RR Resource Record),每一条资源记录都包含域名、IP地址和其它属性信息。

    资源记录定义的格式:

    语法:name[TTL]IN rr_type value

    name:资源记录引用的域对象名,可以是单台主机或者整个域,字段值: "."是根域 "@"是默认域,即当前域

     TTL: 生存时间字段,以秒为单位定义该资源记录的信息存放在DNS缓存中的时间长度。此字段缺省采用SOA记录中的最小TTL值(即1小时)

    IN : 固定关键字

    rr_type:资源记录类型           

            (1)SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录而必须为解析库的第一条记录;

            (2)A:internet Address,作用,A记录,成为主机记录,DNS名称到IP地址的映射,用于正向解析

            (3)AAAA: FQDN –> IPv6地址主机记录

            (4)PTR: PoinTeR,IP –> IP地址到DNS名称的映射,用于反向解析

            (5)NS: Name Server,专用于标明当前区域的DNS服务器

            (6)CNAME:Canonical Name,别名记录

            (7)MX: Mail eXchanger,邮件交换器,用于告知邮件服务器进程将邮件发往指定的另一台邮件服务器

    value: 有多部分组成

            (1) 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;

            (2) 录前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换,例如linuxedu.magedu.com;

            (3) (主从服务协调属性的定义以及否定的答案的统一的TTL)

二 BIND的安装配置

     dns服务,程序包名bind,程序名named            

    程序包:

        bind#提供服务

        bind-libs#提供库文件

        bind-utils#测试工具

    系统安装环境:centos 6.7

    关闭SELINUX:setenforce 0 #立即生效   (实际是宽容模式)

    配置防火墙:iptables -F(清除防火墙规则)或者是关闭iptables

    域名:test.com

    主DNS的IP:192.168.1.7

    从DNS的IP:192.168.1.5

    1.bind 的安装  

     yum -y install bind    #依赖关系会自动解决安装

     blob.png    

    查看一下bind生成的文件和路径信息

    rpm -ql bind

    blob.png      

    /etc/named.conf              #主配置文件

    /etc/named.rfc1912.zones        #主配置文件的辅助区域配置文件

    /etc/rc.d/init.d/named        #服务启动脚本

    /etc/rndc.conf               #域名服务远程控制工具

    /etc/rndc.key            #rndc的消息完整性验证key

    /usr/sbin/named              #主运行程序

    /usr/sbin/named-checkconf       #配置文件测试工具,测试语法错误

    /usr/sbin/named-checkzone       #区域解析库文件测试工具

    /usr/sbin/rndc              #域名服务远程控制工具

    /usr/sbin/rndc-confgen         #密钥生成工具

    /var/named                 #区域解析文件存放位置

    /var/named/slaves            #从服务器由主服务器同步过来区域文件的存放位置

    /var/run/named              #服务启动后产生的进程

    /var/named/named.ca           #DNS根服务器信息

    注意:

        (1) 一台物理服务器可同时为多个区域提供解析;

        (2) 必须要有根区域文件;named.ca

        (3) 应该有两个(如果包括ipv6的,应该更多)实现localhost和本地回环地址的解析库;

    

    主配置文件格式:

            全局配置:options {}

            日志子系统配置:logging {}

            区域定义:本机能够为哪些zone进行解析,就要定义哪些zone;

            zone "ZONE_NAME" IN {}

    注意:任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听在一个能与外部主机通信的IP地址上;

    缓存名称服务器的配置:

            监听外部地址即可;

    2.配置主配置文件:/etc/named.conf

    注意这里面不需要的用//注释掉就可以了啊

        options {
            listen-on port 53 { 192.168.1.7; 127.0.0.1; };    #定义监听的端口以及监听ip地址
   //        listen-on-v6 port 53 { ::1; };             #ipv6地址和端口的配置
            directory       "/var/named";            #定义bind的工作目录
            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; };           #允许那些客户端来查询,默认localhost为内置acl
            recursion yes;                      #允许递归
    
    //      dnssec-enable yes;                     #这几行是跟DNS安全相关的,建议关闭此功能
    //      dnssec-validation yes;
    //      dnssec-lookaside auto;
    
            /* Path to ISC DLV key */
    //      bindkeys-file "/etc/named.iscdlv.key";
    
    //      managed-keys-directory "/var/named/dynamic";
    };
    
    logging {                                 #日志相关的配置
            channel default_debug {
                    file "data/named.run";
                    severity dynamic;
            };
    };
    
    zone "." IN {                              #定义根区域
            type hint;
            file "named.ca";
    };
    
    include "/etc/named.rfc1912.zones";                    #配置文件包含这个文件的内容
    include "/etc/named.root.key";                      #配置文件包含这个文件的内容

    3.定义区域解析库文件:/etc/named.rfc1912.zones   

        zone "localhost.localdomain" IN {               #域名,IN为固定格式
            type master;                       #类型,master|slave|hint|forward 这几种
            file "named.localhost";                 #区域解析配置文件,在options定义的工作目录下
            allow-update { none; };                #动态数据更新,默认是不接受
    };
    
    zone "localhost" IN {
            type master;
            file "named.localhost";
            allow-update { none; };
    };
    
    zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
            type master;
            file "named.loopback";
            allow-update { none; };
    };
    
    zone "1.0.0.127.in-addr.arpa" IN {              #反向域                
            type master;
            file "named.loopback";
            allow-update { none; };
    };
    
    zone "0.in-addr.arpa" IN {
            type master;
            file "named.empty";
            allow-update { none; };
    };
    
    zone "test.com" IN {
          type master;
          file "test.com.zone";
          allow-update { none;};
    };
    zone "1.168.192.in-addr.arpa" {
          type master;
          file "192.168.1.zone";
    };

    4.创建区域解析库文件:/var/named/test.com.zone     

    $TTL 86400
    $ORIGIN test.com.
    @       IN      SOA  ns1.test.com.   admin.test.com (     #定义SOA记录
                         2016030701               #序列号
                         1H                   #版本号刷新时间
                         5M                   #重试时间
                         7D                   #过期时长 
                         1D )                  #否定答案的TTL值
           IN      NS       ns1
           IN      NS       ns2
           IN      MX 10     mx1                  #MX记录以及优先级
           IN      MX 20     mx2
    ns1     IN      A       192.168.1.7              
    ns2     IN      A       192.168.1.5
    mx1     IN      A       192.168.1.13
    mx2     IN      A       192.168.1.14
    www     IN      A       192.168.1.7
    www     IN      A       192.168.1.5
    pop     IN      CNAME    WWW                    #别名记录

    5.创建反向区域解析库文件:/var/named/192.168.1.zone

   $TTL 86400
    $ORIGIN 1.168.192.in-addr.arpa.
    @       IN      SOA     ns1.test.com.   admin.test.com (
                            2016030701
                            1H
                            5M
                            7D
                            1D )
            IN      NS      ns1.test.com.
            IN      NS      ns2.test.com.
    7        IN      PTR       ns1.test.com.        #将A记录全改成PTR记录,提供反向解析
    7        IN      PTR       www.test.com.
    13       IN      PTR       mx1.test.com.
    5        IN      PTR       ns2.test.com.
    5        IN      PTR       www.test.com.
    14       IN      PTR       mx2.test.com.

 

    6.由于默认named服务有named用户身份运行,因此修改解析库文件的属组为named,权限改为640

    cd /var/named/

    chmod 640 test.com.zone

    chmod 640 1.168.192.zone  

    chown :named test.com.zone

    blob.png

    7.检查zone配置文件是否有错误

    named-checkzone "test.com" /var/named/test.com.zone

    named-checkzone "1.168.192.in-addr.arpa" /var/named/1.168.192.zone

    named-checkconf 

    blob.png

    

    8.测试命令

        (1)host [-t type] name [SERVER]

            例子:host -t A www.test.com 192.168.1.7

        (2)dig [-t type] name [@SERVER] [query options]

          dig用于测试dns系统,因此,不会查询hosts文件进行解析        

            查询选项:

            +[no]trace:跟踪解析过程

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

            

            测试反向解析:

            dig -x IP @SERVER

            

            模拟区域传送:

            dig -t axfr ZONE_NAME @SERVER

            

            例如:dig -t axfr test.com @192.168.1.7                    

        (3)nslookup命令:           

          nslookup [-option] [name | -] [server]

          交互式模式:

             nslookup>

                 server IP: 指明使用哪个DNS server进行查询;

                 set q=RR_TYPE: 指明查询的资源记录类型;

                 NAME: 要查询的名称;

    9.启动DNS服务并进行正向解析测试

     service named start #如果你已经启动过服务的话直接 service named reload 

     dig -t A www.test.com @192.168.1.7

     dig -t MX mail.test.com @192.168.1.7

    blob.png

    

    10.进行逆向解析测试

       dig -x 192.168.1.5 @192.168.1.7

     blob.png

三 主从复制(根据以上继续配置从服务器)

    1.配置从服务器的主配置文件:/etc/named.conf

    blob.png

    2.启动named服务

    service named start

    netstat -nlp | grep :53

    blob.png

    3.定义区域解析库文件:/etc/named.rfc1912.zones 

    在文件最后的部分添加这几行

    blob.png

    4.重载主配置文件和区域解析库文件并查看从主服务器同步过来的文件

    rndc reload

    blob.png

    

    主从复制:

        1、应该为一台独立的名称服务器;

        2、主服务器的区域解析库文件中必须有一条NS记录是指向从服务器;

        3、从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于/var/named/slaves/目录中;

        4、主服务器得允许从服务器作区域传送;

        5、主从服务器时间应该同步,可通过ntp进行;

        6、bind程序的版本应该保持一致;否则,应该从高,主低;

  

DNS 子域授权和高级应用

http://www.178linux.com/12542

原创文章,作者:liangkai,如若转载,请注明出处:http://www.178linux.com/12395

赞 (0)
liangkailiangkai
上一篇 2016-11-15 10:12
下一篇 2016-11-15 10:20

相关推荐

  • 马哥教育网络班22期第二周课程练习1-未闻花名

    1、Linux管理文件和目录的命令 命令 功能 命令 功能 pwd 显示当前目录 ls 查看目录下的内容 cd 改变所在目录 cat 显示文件的内容 grep 在文件中查找某字符 cp 复制文件 touch 创建文件 mv 移动文件 rm 删除文件 rmdir 删除目录 1.1 pwd命令 该命令的英文解释为print working directory(打…

    Linux干货 2016-08-22
  • 计算机的组成及功能

    计算机的组成及功能 计算机由CPU、存储器、输入设备、输出设备等部件组成。 CPU:为计算机的中央处理器,是计算机的核心部分,由运算器和控制器组成。 运算器:CPU中用于进行算术运算和逻辑运算的部件。 控制器:整个CPU的指挥中心,控制程序中指令读取、解析并产生相应的操作控制信息保证各程序的有序执行。 存储器:计算机中用来存储数据、程序等信息的部件,并在需要…

    Linux干货 2017-07-02
  • Linux磁盘及文件系统

    Linux磁盘及文件系统 一、硬盘 硬盘接口 PATA(Paralled Advanced Technology Attachment,并行的先进技术规范),也叫IDE(Integrated Drive Eelectronics,集成电路驱动设备),是作为一种简单而廉价的接口而开发的。速度中等,容量大而且非常便宜。 串行ATA接口SATA(Serial AT…

    Linux干货 2016-09-19
  • rsyslog+mysql+loganalyzer安装部署

    log:syslog:syslogd,klogd 日志:历史日志 级别: debug info notice warning,warn(same as warning) err,error(same as err) crit alert emerg,panic(same as emerg) facility:设施 auth authpriv cron dae…

    Linux干货 2016-10-24
  • 马哥教育网络班19期+第九周课程练习

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin),分别这两类用户的个数,通过字符串比较来实现。 #!/bin/bash for user_shell in `awk -F: '{print $7}'&nbsp…

    Linux干货 2016-07-01