1. DNS( Domain Name Service )介绍

DNS是计算机域名系统 (Domain Name System Domain Name Service) 的缩写,它是由域名解析器和域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。

1.1 DNS树状结构图

Linux-DNS服务器(1):DNS介绍及BIND安装_DNS服务器

1.2 DNS资源记录类型

       资源记录有类型,用于资源的功能

       SOAStart Of Authority,起始授权

       NS:NameServer,域名服务器

       MXMail exchanger:邮件交换器

       AAddress,(FQDN-->IP)

       PTR:Poiter,IP-->FQDN

       AAAA:Address,FQDN-->IPv6

       CNAME:CanonicalName,别名记录

1.3 资源记录格式

name     [ttl]      IN          rrtype  value

例子:

www                   IN          A           192.168.1.1

SOA:只能有一个

name:区域名称,通常可以简写为@enzhi.com.

value:DNS服务器的FQDN

注意:SOA必须是区域数据库文件的第一条记录

                    

列子:  @   600        IN   SOA      ns.enzhi.com.  dnsadmin.enzhi.com.(

                序列号 ;serial number,十进制数字,不能超过10位,通常使用日期,例如:2016032201

                刷新时间 ;每隔多久到服务器检查一次

                重试时间 ;应该小于刷新时间

                过期时间 ;

                否定答案的ttl )

注意#dnsadmin.enzhi.com.是管理员邮箱地址@符使用.替换。

NS:可以有多条

       name:区域名称,通常可以简写为@

       value:dns服务器的FQDN(可以使用相对名称)

例子:@             600        IN NS ns

A

       name:FQDN(可以使用相对名称)

       value:IP

例子:

www           600        IN   A          1.2.3.4

  ftp           600        IN   A          1.2.3.4

MX:可以有多个

       name:区域名称,用于表示smtp服务器

       value:包含优先级和FQDN

优先级:0-99,数字越小,级别越高

例子: @  600        IN   MX 10   mail

@  600        IN   MX 20   mail2           

CNAME:

name:FQDN

value:FQDN

例子:ftp    IN   CNAME      www    

PTR: IP--->FQDN,只能定义在反向区域数据文件中,反向区域名称为逆向网络地址加.in-addr.arpa

name:IP,逆向的主机地址,例如:172.16.100.7name7.100

value:FQDN      

例子:

4.3.2             600        IN   PTR       www.enzhi.com.

反向解析数据库文件:区域名称以逆向的网络地址,并以in.addr.arpa为后缀

第一条必须SOA

应该具有NS记录,但不能出现MXA记录

较常见的即为PTR记录

名称为逆向的主机地址

2. BIND介绍

BIND是一种开源的DNSDomain NameSystem)协议的实现,包含对域名的查询和响应所需的所有软件。它是互联网上最广泛使用的一种DNS服务器,对于类UNIX系统来说,已经成为事实上的标准。
BIND这个缩写来自于使用的第一个域,Berkeley Internet Name Domain,而不是Berkeley Internet Name Daemon。这个软件起源于20世纪八十年代初的Universityof California at Berkeley,是在DARPA授权下编写的。

2.1 安装BIND

生产环境中使用yum安装即可满足大部分的需求。

安装环境规划:

角色IP地址主机名
DNS-MASTER
192.168.233.135dns_master

安装系统环境:

[root@dns_master ~]# cat/etc/redhat-release
CentOS release 6.6 (Final)
[root@dns_master ~]# uname -r
2.6.32-504.el6.x86_64
[root@dns_master ~]# uname -m
x86_64

安装bind

[root@dns_master ~]# yum -y install bind

#安装完成后bind的主配置文件在/etc/目录下名为named.conf。区域数据文件在/var/named/目录下。

[root@dns_master ~]# ls -l /etc/named*
-rw-r----- 1 rootnamed 1008 Jul 19  2010 /etc/named.conf
-rw-r--r-- 1 root named 2389 Mar 1621:25 /etc/named.iscdlv.key
-rw-r----- 1 root named  931 Jun 21 2007 /etc/named.rfc1912.zones
-rw-r--r-- 1 root named  487 Jul 19 2010 /etc/named.root.key
[root@dns_master ~]# ls /var/named/
data dynamic  named.ca  named.empty named.localhost  named.loopback  slaves

2.2 named用户及用户组

要启动named服务需要以named用户的身份运行。当我们手动创建主配置文件或者区域数据文件后我们需要将属主改为root属组改为named用户,并将文件权限改为640.

[root@dns_master ~]# ll /etc/named.conf
-rw-r----- 1 root named 1008 Jul 19  2010 /etc/named.conf
[root@dns_master ~]# ll /var/named/
total 28
drwxrwx--- 2 named named 4096 Mar 1621:25 data
drwxrwx--- 2 named named 4096 Mar 1621:25 dynamic
-rw-r----- 1 root  named 2075 Apr 23  2014 named.ca
-rw-r----- 1 root  named 152 Dec 15  2009 named.empty
-rw-r----- 1 root  named 152 Jun 21  2007 named.localhost
-rw-r----- 1 root  named 168 Dec 15  2009 named.loopback
drwxrwx--- 2 named named 4096 Mar 1621:25 slaves

2.3 主配置文件介绍

主配置文件:定义区域。至少有三个区域:

根、localhost127.0.0.1三个区域

区域数据文件:/var/named/

主配置文件:

options {

       全局选项    

};

zone {

       定义区域

};

logging {

       定义日志系统

}

2.4 自创建一个主配置文件

#自创建主配置文件必须有options全局段、根、localhost127.0.0.1。每一行参数要以;号结尾。如下:

[root@dns_master ~]# cat /etc/named.conf
options {
       directory "/var/named";
};
zone "." IN {
       type hint;
       file "named.ca";
};
zone "localhost" IN {
       type master;
       file "named.localhost";
};
zone "1.0.0.127.in-addr.apra"IN {
       type master;
       file "named.loopback";
};
[root@dns_master ~]# chown root.named/etc/named.conf
#语法测试检查
[root@dns_master ~]# /etc/init.d/namedconfigtest
zone localhost/IN: loaded serial 0
zone 1.0.0.127.in-addr.apra/IN: loadedserial 0
#type类型有{hint|master|slave|forward}

2.5 案例演示

要求:创建一个DNS服务器域名为enzhi.comIP地址192.168.233.135。具有以下资源记录:

www     192.168.233.10

mail 192.168.233.11

ftp的正式名称为www

ns           192.168.233.135

PTR       要求能反向解析

1.安装bind服务并创建主配置文件

[root@dns_master ~]# yum -y install bind
 
[root@dns_master ~]# vi /etc/named.conf
options {
       directory "/var/named";
};
zone "." IN {
       type hint;
       file "named.ca";
};
zone "localhost" IN {
       type master;
       file "named.localhost";
};
zone "1.0.0.127.in-addr.apra"IN {
       type master;
       file "named.loopback";
};
zone "enzhi.com." IN {
        type master;
        file"enzhi.com.zone";
};
zone "233.168.192.in-addr.arpa" IN {
        type master;
        file"192.168.233.zone";
};
[root@dns_master ~]# named-checkconf
[root@dns_master ~]# chown root.named/etc/named.conf
[root@dns_master ~]# /etc/init.d/namedconfigtest
zone localhost/IN: loaded serial 0
zone 1.0.0.127.in-addr.apra/IN: loadedserial 0

2.创建正向区域数据文件

[root@dns_master named]# vim  enzhi.com.zone
$TTL 600
@      IN      SOA     ns.enzhi.com.   admin.enzhi.com. (
                2016032401
                2H
                5M
                7D
                1D )
 
       IN      NS      ns
       IN      MX  10 mail
ns     IN      A       192.168.233.135
mail   IN      A       192.168.233.11
www    IN      A       192.168.233.10
ftp    IN      CNAME   www

#检查区域配置文件

检查区域配置文件可以使用bind提供的二进制程序named-checkzone命令

命令格式:

named-checkzone  “区域名称”    区域数据文件

[root@dns_master named]# named-checkzone"enzhi.com" enzhi.com.zone
zone enzhi.com/IN: loaded serial2016032401
OK

3.创建反向区域数据文件

#创建反向区域数据文件复制正向的修改就行

[root@dns_master named]# vim  192.168.233.zone
$TTL 600
@      IN      SOA     ns.enzhi.com.   admin.enzhi.com. (
                2016032401
                2H
                5M
                7D
                1D )
 
@      IN      NS      ns.enzhi.com.
135    IN      PTR     ns.enzhi.com.
11     IN      PTR     mail.enzhi.com.
10     IN      PTR    www.enzhi.com.
[root@dns_master named]# named-checkzone"233.168.192.in-addr.arpa" 192.168.233.zone
zone 233.168.192.in-addr.arpa/IN: loadedserial 2016032401
OK

4.启动named服务

#启动前先做语法检查

[root@dns_master named]#/etc/init.d/named configtest
zone localhost/IN: loaded serial 0
zone 1.0.0.127.in-addr.apra/IN: loadedserial 0
zone enzhi.com/IN: loaded serial2016032401
zone 233.168.192.in-addr.arpa/IN: loadedserial 2016032401
[root@dns_master named]#/etc/init.d/named start
Generating /etc/rndc.key:                                  [  OK  ]
Starting named:                                         [  OK  ]
[root@dns_master named]# ss -tunl|grep53
udp   UNCONN     0      0       192.168.233.135:53                   *:*    
udp   UNCONN     0      0              127.0.0.1:53                    *:*    
tcp   LISTEN     0      3       192.168.233.135:53                   *:*    
tcp   LISTEN     0      3              127.0.0.1:53                    *:*    
tcp   LISTEN     0      128                  ::1:953                  :::*    
tcp   LISTEN     0      128            127.0.0.1:953                   *:*

5.使用dig命令解析测试

#解析www.enzhi.comA记录

[root@dns_master named]# dig -t Awww.enzhi.com @192.168.233.135

 

; <<>> DiG9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.7 <<>> -t A www.enzhi.com@192.168.233.135
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode:QUERY, status: NOERROR, id: 50422
;; flags: qr aa rd ra; QUERY: 1, ANSWER:1, AUTHORITY: 1, ADDITIONAL: 1
 
;; QUESTION SECTION:
;www.enzhi.com.                 IN      A
 
;; ANSWER SECTION:
www.enzhi.com.         600     IN      A      192.168.233.10
 
;; AUTHORITY SECTION:
enzhi.com.              600     IN     NS      ns.enzhi.com.
 
;; ADDITIONAL SECTION:
ns.enzhi.com.           600     IN     A       192.168.233.135
 
;; Query time: 1 msec
;; SERVER:192.168.233.135#53(192.168.233.135)
;; WHEN: Thu Mar 24 11:35:22 2016
;; MSG SIZE  rcvd: 80

#解析enzhi.comNS记录

[root@dns_master named]# dig -t NS enzhi.com  @192.168.233.135
 
; <<>> DiG9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.7 <<>> -t NS enzhi.com@192.168.233.135
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode:QUERY, status: NOERROR, id: 54970
;; flags: qr aa rd ra; QUERY: 1, ANSWER:1, AUTHORITY: 0, ADDITIONAL: 1
 
;; QUESTION SECTION:
;enzhi.com.                     IN      NS
 
;; ANSWER SECTION:
enzhi.com.              600     IN     NS      ns.enzhi.com.
 
;; ADDITIONAL SECTION:
ns.enzhi.com.           600     IN     A       192.168.233.135
 
;; Query time: 0 msec
;; SERVER:192.168.233.135#53(192.168.233.135)
;; WHEN: Thu Mar 24 11:36:58 2016
;; MSG SIZE  rcvd: 60

#反向解析192.168.233.10是否能解析到www.enzhi.com域名上

[root@dns_master named]# dig -x 192.168.233.10@192.168.233.135
 
; <<>> DiG9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.7 <<>> -x 192.168.233.10@192.168.233.135
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode:QUERY, status: NOERROR, id: 45072
;; flags: qr aa rd ra; QUERY: 1, ANSWER:1, AUTHORITY: 1, ADDITIONAL: 1
 
;; QUESTION SECTION:
;10.233.168.192.in-addr.arpa.   IN     PTR
 
;; ANSWER SECTION:
10.233.168.192.in-addr.arpa. 600 IN     PTR    www.enzhi.com.
 
;; AUTHORITY SECTION:
233.168.192.in-addr.arpa. 600   IN     NS      ns.enzhi.com.
 
;; ADDITIONAL SECTION:
ns.enzhi.com.           600     IN     A       192.168.233.135
 
;; Query time: 1 msec
;; SERVER:192.168.233.135#53(192.168.233.135)
;; WHEN: Thu Mar 24 11:38:44 2016
;; MSG SIZE  rcvd: 105