DNS基础知识:

DNSDomain Name Service):域名解析服务,应用层协议。

BIND:实现DNS服务的一种软件。

DNS监听的端口:53/TCP53/UDP

DNS查询类型:递归查询,迭代查询

DNS的两种解析方式:正向解析(FQDN ---> IP),反向解析(IP --->FQDN

区域解析库:由众多资源记录组成;

资源记录(RR)类型:

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

Ainternet Address,作用,FQDN --> IP

AAAA: FQDN --> IPv6

PTR: PoinTeRIP --> FQDN

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

CNAMECanonical Name,别名记录

MX: Mail eXchanger,邮件交换器(标明域内谁是邮件服务器)

 

资源记录定义格式:

语法:name        [TTL]          IN         rr_type         value

            例如:ns1                         1D                           IN                          A                          192.168.1.111

bind: 

bind程序包:

bind:

主程序

bind-libs

库文件

bind-utils

测试程序

配置文档:

服务脚本:

/etc/rc.d/init.d/named

主配置文件:

/etc/named.conf,

/etc/named.rfc1912.zones,

 /etc/rndc.key

解析库文件:

/var/named/ZONE_NAME.ZONE

准备实验环境:

操作系统:CentOS 6.6

bind版本:bind-9.8.2-0.37.rc1.el6.x86_64

关闭防火墙:service iptables stop

关闭selinuxsetenforce 0

主服务器IP192.168.1.111(正反解析的主服务器都在此主机)

从服务器IP192.168.1.200(正反解析的从服务器都在此主机)

 

正向解析配置:(主DNS服务器)

1,对/etc/named.conf稍作修改,使得监听所有本机IP,以及允许任何人解析,并注释掉dnssec的内容。

[root@localhost named]# vim /etc/named.conf

       listen-on port 53 { any; };       监听在本机所有IP地址上

       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     { any; };   允许任何人解析

        recursion yes;  允许递归查询

//     dnssec-enable no;

//      dnssec-validation no;(注释掉了dnssec的内容)

//     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 {

        typehint;

        file"/var/named/named.ca";

};

 

include "/etc/named.rfc1912.zones";

//include"/etc/named.root.key";开始时候无法解析外网域名,注释掉这一行就可以解析了,暂时不知为何。

 

2,在/etc/named.rfc1912.zones中定义新的区域

[root@localhost named]# vim /etc/named.rfc1912.zones

zone "localhost" IN {

        typemaster;

        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 {

        typemaster;

        file"named.loopback";

       allow-update { none; };

};

 

zone "1.0.0.127.in-addr.arpa" IN {

        typemaster;

        file"named.loopback";

       allow-update { none; };

};

 

zone "0.in-addr.arpa" IN {

        typemaster;

        file"named.empty";

       allow-update { none; };

};

//新定义的区域liaobin.com

zone "liaobin.com" IN {            

        type master;                         定义为主DNS服务器,其他可选:(master|slave|hint|forward

        file "liaobin.com.zone";       区域文件位置

        allow-transfer{ 192.168.1.200; };允许192.168.1.200这个服务器区域传送

};

 

3,创建定义好的区域的区域文件

[root@localhost named]# vim/var/named/liaobin.com.zone

$TTL 1D    宏定义TTL为一天

$ORIGIN liaobin.com.

@      IN      SOA     ns1.liaobin.com.        admin.liaobin.com (

                2015112201;序列号

                2H  ;刷新时间

                5M;重试时间

                7D  ;过期时间

                1D  ;否定答案的TTL

 )

        IN     NS      ns1;(IN前边省略的部分被$ORIGIN的值替换)

        IN     NS      ns2;(这两行的意思是ns1 ns2liaobin.com域的DNS服务器)

        IN     NS      mx1;(两个邮件服务器mx1 mx2

       IN      NS      mx2

ns1     IN     A       192.168.1.111;(指定DNS服务器的IP地址)

ns2    IN      A       192.168.1.200

mx1    IN     A      192.168.1.111;(指定邮件服务器的IP地址)

mx2    IN      A      192.168.1.200

www  IN     A       192.168.1.111;(A记录,解析www.liaobin.com

web    IN     CNAME   www          ;(设置webwww的别名)

 

 

4,简单配置完成,重启服务,测试。

wKioL1aI_9bzh071AABb1q0piHo135.png

反向解析配置:

1,在/etc/named.rfc1912.zones 中定义反向解析区域,新增以下配置:

zone "1.168.192.in-addr.arpa." IN {

        typemaster;

        file"1.168.192.zone";

       allow-transfer{ 192.168.1.200; };  允许192.168.1.200这个服务器区域传送

};

 

2,在/var/named/下新建1.168.192.zone区域文件:

[root@localhost named]# vim/var/named/1.168.192.zone

 

$TTL 1D

$ORIGIN 1.168.192.in-addr.arpa. 

@      IN      SOA     ns1.liaobin.com.        admin.liaobin.com (

       2015112201

        2H

        5M

        7D

        1D )

           IN     NS      ns1.liaobin.com. 

           IN      NS     ns2.liaobin.com.

111    IN      PTR     ns1.liaobin.com.        111后面会自动添加$ORIGIN的值

200    IN      PTR     ns2.liaobin.com.

111    IN      PTR     www.liaobin.com.     ;定义反向解析192.168.1.111的值为www.liaobin.com.

 

3.反向解析配置完成,重启服务,测试。

wKiom1aI_-Dz5YFIAABgHwMkRtc570.png

主从同步配置:(以上主服务器都已经配置好,接下来只需要配置从服务器即可。)

 

1,切换到从服务器192.168.1.200操作

 

2,打开/etc/named.conf稍作配置修改

[root@localhost slaves]# vim /etc/named.conf

options {

       listen-on port 53 { any; };     监听在所有地址端口

       //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     { any; };    允许任何人解析

       recursion yes;   允许递归解析

 

      //dnssec-enable yes;

       //dnssec-validation yes;

       //dnssec-lookaside auto;  注释掉dnssec相关内容

 

        /*Path to ISC DLV key */

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

 

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

};

 

3,在配置文件/etc/named.rfc1912.zones中添加从服务器的区域

zone "liaobin.com" IN {

       type slave;                                  正向解析的从服务器

       masters { 192.168.1.111; };      主服务器为192.168.1.111

       file "/var/named/slaves/liaobin.com.zone";    区域文件放在slaves目录;因为slaves目录named才有写权限

};

zone "1.168.192.in-addr.arpa." {

       type slave;                                反向解析的从服务器

       masters { 192.168.1.111; };    主服务器为192.168.1.111

       file "/var/named/slaves/1.168.192.zone";   区域文件放在slaves目录

};

 

4,配置完成,重启服务,测试。

wKiom1aJABaAN3ujAACkpkGlwkY561.pngwKioL1aJAEyAWQhzAABYBGyhhgc325.png

测试命令简单用法:

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

dig[-t type] name [@SERVER] [query options]

查询选项:

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

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

例如:dig -t A www.baidu.com @192.168.1.111 +trace

测试反向解析:

dig-x IP @SERVER

例如:dig -x 192.168.1.111 @192.168.111

模拟区域传送:

dig-t axfr ZONE_NAME @SERVER

例如:dig -t axfr liaobin.com @172.16.100.11

host命令:

host[-t type] name [SERVER]

例如:

         wKiom1aJAIOh2iVFAAAW2N4cnyM660.png

nslookup命令:

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

例如:

wKioL1aJANihgr1oAAAYw_xTQFU978.png

nslookup交互模式:

         nslookup>

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

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

                 NAME:要查询的名称;

例如:

        wKiom1aJANHQWS4uAAA3pAFzpw8460.png

rndc简单用法:

rndcCOMMAND

status:查看dns状态

reload: 重载主配置文件和区域解析库文件

reload zone: 重载区域解析库文件

retransfer zone: 手动启动区域传送过程,而不管序列号是否增加;

notify zone: 重新对区域传送发通知;

reconfig: 重载主配置文件

querylog: 开启或关闭查询日志;(建议关闭,否则大量磁盘I/O产生影响性能,排错时可启动)

trace: 递增debug级别;

trace LEVEL: 指定使用的级别;