DNS服务器全面解析--转


引用地址:http://pangge.blog.51cto.com/6013757/1273087

基础认知篇

DNS服务的概述

DNS是Domain Name System 的缩写,即域名系统。DNS服务主要功能是将域名转换为相应的IP地址,提供DNS服务的系统就是DNS服务器。形如它能够把www.baidu.com这样的域名转换为61.135.169.125这样的IP地址;没有DNS,浏览baidu.com这个网站时,就必须用61.135.169.125这么难记的数字来访问。

DNS服务器可以分为3种,即主域名服务器(Master DNS)、辅助域名服务器(Slave DNS)、缓存服务器。

uMaster DNS:本身提供DNS 服务,并且本身含有区域数据文件。

uSlave DNS:和Master一起提供DNS服务,当Master服务器上的配置信息修改的时候,会同步更新到Slave服务器上

u缓存服务器:没有自己的区域数据文件,只是帮助客户端向外部DNS请求查询,然后将查询的结果保存到它的缓存中。

在linux系统下DNS服务的功能是通过bind软件实现的,几乎每个linux发行版都自带了这个DNS服务软件。下面将具体讲述DNS服务的安装、配置和使用。

 

服务器搭建篇

 第一部分:主DNS服务的搭建实现(包含知识点阐述)

环境介绍:CentOS6.4-x86_64

    bind版本:bind 9.8.2-0.17.rc1.el6

 

一.安装bind软件:

CentOS系统下安装bind时,一般都需要同时安装bind-utils、bind-chroot、ypbind、bind-libs和caching-nameserver几个支持bind的软件包。

注:bind-chroot:安装上这个包之后让named进程有限的活动在/var/named/chroot/中防止黑客攻击导致服务器的崩溃。这里就不安装了,因为安装之后除了路径改变之后其他均不变。所以为了更好的熟悉过程就暂时不装了。

上面的几个软件包都可以从系统光盘中查找,可以通过指向yum源进行安装:

[root@localhost ~]#yum install bind

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
查看安装软件生成的配置文件
[root@localhost ~] # rpm -qc bind
/etc/logrotate .d /named
/etc/named .conf                       #主配置文件
/etc/named .iscdlv.key
/etc/named .rfc1912.zones              #事先定义好的区域文件
/etc/named .root.key                   #实现事务签名的密钥文件
/etc/rndc .conf
/etc/rndc .key
/etc/sysconfig/named
/var/named/named .ca
/var/named/named .empty
/var/named/named .localhost
/var/named/named .loopback

 

二.配置DNS服务

准备工作

dig(域信息搜索器)命令是个用于询问 DNS 域名服务器的灵活的工具。他执行 DNS 搜索,显示从受请求的域名服务器返回的答复。多数 DNS 管理员利用 dig 作为DNS 问题的故障诊断,因为他灵活性好、易用、输出清楚。虽然通常情况下 dig 使用命令行参数,但他也能够按批处理模式从文档读取搜索请求。不同于早期版本,dig 的 BIND9 实现允许从命令行发出多个查询。除非被告知请求特定域名服务器,dig 将尝试 /etc/resolv.conf 中列举的任何服务器。当未指定任何命令行参数或选项时,dig 将对“.”(根)执行 NS 查询。

dig命令格式:

dig –t 资源记录类型名称@server-ip

       dig –x IP @server-ip   反向解析
       dig –t axfr zone    验证完全区域传送
      dig –t ixfr zone    验证增量区域传输(通常需要指定序列号)

 

配置工作

主配置文件:named.conf,主要作用是定义区域,定义各区域的全局配置,定义视图,定义日志,注意每个完整语句都要使用分号结尾,否则视为语法错误。

bind安装完毕之后,主程序目录默认为/var/named。

 

1).named.conf文件详解

1
2
3
4
5
6
7
8
[root@localhost ~] # vim /etc/named.conf
//  named.conf
//
//  Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
//  server as a caching only nameserver (as a localhost DNS resolver only).
//
//  See  /usr/share/doc/bind * /sample/  for  example named configuration files.
    在named.conf配置文件中主要使用” // ”进行注释信息,还可以使用/*、*/将多行注释

 

1
2
3
4
5
6
7
8
9
options {
         listen-on port 53 { 127.0.0.1; };   #由于这里监听的地址是本机所以启动之后只会本机当服务器端本机当客户端进行通信;所以要改成外部地址或注释不要。
         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; };    #DNS定义完成之后允许谁来访问,这里定义的为只允许本地查询,所以可以注释不要。
  #这是定义全局选项的,定义之后对所有区域都生效哦。
1
2
3
4
5
6
logging {
         channel default_debug {
                 file  "data/named.run" ;
                 severity dynamic;
         };
  #定义日志选项的
1
2
3
4
5
zone  "."  IN {
         type  hint;
         file  "named.ca" ;
};
  #定义区域文件的

 

1
2
3
include  "/etc/named.rfc1912.zones" ;
include  "/etc/named.root.key" ;
  #包含其他文件,意思就是可以将这些文件读取进来

 

2).定义本地区域文件解析

首先更改/etc/named.rfc1912.zones主区域配置文件,在文件尾部新增下面一段内容:

1
2
3
4
5
zone  "magedu.com"  IN {
         type  master;
         file  "magedu.com.zone" ;               #定义的是相对路径
         allow-update { none; };
};

   上面这段设置是用zone关键字来定义的一个正向区域,对应的域名为magedu.com。在这里type类型有三种,他们分别为master、slave、hint,含义如下:

    master:表示定义的主域名服务器

    slave:表示定义的是辅助域名服务器

    hint:表示是互联网中的根域名服务器

   file用来指定存放DNS记录的文件(一般都是区域名称.zone),allow-update定义是否允许客户主机或服务器自行更新DNS记录,上面指定的这个正向区域不允许更新DNS记录。

 

 

 

1
2
3
4
5
zone  "18.16.172.in-addr.arpa"  IN {
         type  master;
         file  "172.16.18.zone" ;
         };
  #这段设置是定义一个IP为172.16.18.*的反向区域

 

 

3).定义区域数据文件:

[root@localhost ~]# cd /var/named/                 #切换到区域文件存放目录

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@localhost named] # vim magedu.com.zone        #编辑正向区域文件
$TTL  86400             #一天的时间秒钟计算,看你的需求你需要多少写多少
@        IN       SOA     dns.magedu.com.    admin.magedu.com. (
                                2013081401
                                2H
                                10M
                                7D
                                6H )
          IN       NS      dns    #若不写全会自动同步名称,若不写全不能以”.”结尾
          IN       MX  10  mail
dns      IN       A       172.16.18.20
mail     IN       A       172.16.18.2
www      IN       A       172.16.18.6
www      IN       A       172.16.18.7   #若一个主机名两个地址可以实现“负载均衡“
ftp       IN       CNAME   www

下面我们分析一下我们已经设定好的magedu.com正向区域数据文件的格式和含义:

可以看出,区域数据文件的内容很简单。

第一行是一个TTL设定,定义区域数据文件里面的各项记录的宏,缺少此行不影响使用,但是会出现警告信息。

第二行是一个SOA记录的设定,“@“代表相应的域名,也就是在/etc/named.rfc1912.zones,如在这里表示magedu.com,IN表示后面的数据使用的是Internet标准。SOA表示目前区域授权开始。每一个区域数据文件只能有一个SOA,不能重复,并且必须是所负责的zone中第一个”记录“。在SOA后面分别指定这个区域的授权主机名称和管理者的邮箱。

注:授权主机名和管理员信箱后面都要有一个”.”。由于”@”在区域数据文件中有其他含义,因此管理员邮箱地址中用”.”代替“@“符号。

接下来包含在括弧内的5组数字是作为服务器同步信息而设置的,含义如下:

第一段表示配置文件的修改版本,格式是年月日加上修改的次数,每次修改这个配置文件时都应该修改这个数值,因为当DNS进行信息同步时,会比较这个数值的值。如果这个数值比自身的数值大,就进行更新,否则忽略更新。(这个设置很重要,如果修改区域数据后没有更新该值,那么所做的更改就不会同步到其他DNS服务器)

第二段表示用来设定DNS服务器进行同步的间隔时间又称刷新时间。只通知给本区域解析库文件中定义NS记录的所有主机;

第三段表示同步更新失败之后,在进行重试的间隔时间。

第四段表示同步更新失败之后,多长时间清除对应的记录,又称过期时间

第五段表示否定的TTL值

接下来是对域名解析的具体设置,第1列表示不同的主机域名,但是省略了后面的域信息(若为空白表示与上面域名相同)。例如:”www”其实是www.magedu.com等。“IN“后面的指令含义说明如下:

NS:用来定义这个主机是个域名服务器,是个区域名称

MX:定义邮件服务器,这里需要定义优先级的哦!这里定义的交换级别为10

A:定义了一个A记录,即域名到IP的记录

CNAME:定义了域名的别名

 

[root@localhostnamed]# cp magedu.com.zone 172.16.18.zone   #定义反向区域文件

 

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@localhost named] # vim 172.16.18.zone                   #编辑反向区域文件
$TTL  86400
@        IN       SOA     dns.magedu.com.    admin.magedu.com. (
                                2013081401
                                2H
                                10M
                                7D
                                6H )
          IN       NS      dns.magedu.com.   #这里必须写全,不然会默认成dns.18.16.172
20       IN       PTR     dns.magedu.com.
2        IN       PTR     mail.magedu.com.
6        IN       PTR     www.magedu.com.
7        IN       PTR     www.magedu.com.

 

分析:可以看出,反向区域文件基本结构和正向区域数据文件基本完全相同,只不过这里多出了一个PTR选项。PTR用来定义一个反向记录,也就是通过IP可以查到对应的域名信息。最后四行的第一列表示是主机的IP地址,只不过省略了网络地址部分,系统会自动补全,如20对应的是172.16.18.20.

至此,DNS文件配置部分已经基本配置完成,从过程可以看出DNS配置文件对格式的要求非常严格。因此,在以后的配置中要格外的小心。

 

 

4).定义区域文件的权限关系

 

1
2
3
4
5
6
7
8
9
10
11
[root@localhost named] # ls -l
total 36
-rw-r--r-- 1 root  root   470 Jul 28 13:56 172.16.18.zone
drwxrwx--- 2 named named 4096 Jul 28 10:51 data
drwxrwx--- 2 named named 4096 Jul 28 13:52 dynamic
-rw-r--r-- 1 root  root   504 Jul 28 13:56 magedu.com.zone
-rw-r----- 1 root  named 1892 Feb 18  2008 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 Feb 22 11:10 slaves

 

在这里我们通过编辑创建的magedu.com.zone文件,然后将该文件的权限属组更改成系统默认设定权限,这个授权很重要,要不然DNS无法正常工作。

 

1
2
3
4
[root@localhost named] # chmod 640 magedu.com.zone
[root@localhost named] # chmod 640 172.16.18.zone
[root@localhost named] # chown :named magedu.com.zone
[root@localhost named] # chown :named 172.16.18.zone

 

这里的named属组属主都是创建DNS时系统默认创建的。

 

 

5).检查区域文件语法错误与否:

 

 

1
2
3
4
5
6
7
8
[root@localhost named] # named-checkconf         #检查主配置文件语法,无信息输出说明配置成功
[root@localhost named] # named-checkzone "magedu.com" /var/named/magedu.com.zone            #检查zone语法错误与否
zone magedu.com /IN : loaded serial 2013081401
OK
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
[root@localhost named] # named-checkzone "18.16.172.in-addr.arpa" /var/named/172.16.18.zone
zone 18.16.172. in -addr.arpa /IN : loaded serial 2013081401
OK

 

 

 

三.测试DNS配置

在对DNS文件的所有配置完成后,需要重启服务,以使配置生效。由于我们这里还未启动过服务所以执行如下命令启动DNS服务:

 

1
2
3
[root@localhost etc] # service named start             #启动服务
Generating  /etc/rndc .key:                                  [  OK  ]    #也许读取速度会很慢,稍等!
Starting named:                                            [  OK  ]

 

建议:若之前启动过服务,配置完成之后想重新启动新数据,建议不要使用restart重启,因为这样可能导致网络服务断掉,所以要使用reload重新载入信息。

 

1
2
[root@localhost named] # service named reload
Reloading named:                                           [  OK  ]

下面我们使用dig命令对DNS正向区域解析情况进行测试

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@localhost named] # dig -t A www.magedu.com @172.16.18.20      #解析A记录
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t A www.magedu.com @172.16.18.20
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR,  id : 44158
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;www.magedu.com.            IN  A
;; ANSWER SECTION:
www.magedu.com.     86400   IN  A   172.16.18.6
www.magedu.com.     86400   IN  A   172.16.18.7
;; AUTHORITY SECTION:
magedu.com.     86400   IN  NS  dns.magedu.com.
;; ADDITIONAL SECTION:
dns.magedu.com.     86400   IN  A   172.16.18.20
;; Query  time : 1 msec
;; SERVER: 172.16.18.20 #53(172.16.18.20)
;; WHEN: Sun Jul 28 14:31:54 2013
;; MSG SIZE  rcvd: 98

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@localhost named] # dig -t NS magedu.com @172.16.18.20    #解析NS记录
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t NS magedu.com @172.16.18.20
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR,  id : 41920
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; QUESTION SECTION:
;magedu.com.            IN  NS
;; ANSWER SECTION:
magedu.com.     86400   IN  NS  dns.magedu.com.
;; ADDITIONAL SECTION:
dns.magedu.com.     86400   IN  A   172.16.18.20
;; Query  time : 1 msec
;; SERVER: 172.16.18.20 #53(172.16.18.20)
;; WHEN: Sun Jul 28 14:39:00 2013
;; MSG SIZE  rcvd: 62

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
root@localhost named] # dig -t SOA magedu.com @172.16.18.20   #解析SOA记录
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t SOA magedu.com @172.16.18.20
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR,  id : 60898
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;magedu.com.            IN  SOA
;; ANSWER SECTION:
magedu.com.     86400   IN  SOA dns.magedu.com. admin.magedu.com. 2013081401 7200 600 604800 21600                #这里全部以秒为单位进行显示
;; AUTHORITY SECTION:
magedu.com.     86400   IN  NS  dns.magedu.com.
;; ADDITIONAL SECTION:
dns.magedu.com.     86400   IN  A   172.16.18.20
;; Query  time : 1 msec
;; SERVER: 172.16.18.20 #53(172.16.18.20)
;; WHEN: Sun Jul 28 14:44:34 2013
;; MSG SIZE  rcvd: 104

 

下面我们使用dig命令对DNS反向区域解析情况进行测试

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@localhost named] # dig -x 172.16.18.20    #反向区域解析
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -x 172.16.18.20
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR,  id : 13525
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;20.18.16.172. in -addr.arpa. IN  PTR
;; ANSWER SECTION:
20.18.16.172. in -addr.arpa. 86400 IN PTR dns.magedu.com.
;; AUTHORITY SECTION:
18.16.172. in -addr.arpa. 86400   IN  NS  dns.magedu.com.
;; ADDITIONAL SECTION:
dns.magedu.com.     86400   IN  A   172.16.18.20
;; Query  time : 1 msec
;; SERVER: 172.16.18.20 #53(172.16.18.20)
;; WHEN: Sun Jul 28 15:56:49 2013
;; MSG SIZE  rcvd: 101

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@localhost named] # dig -t axfr 18.16.172.in-addr.arpa    #反向完全区域解析
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t axfr 18.16.172. in -addr.arpa
;; global options: +cmd
18.16.172. in -addr.arpa. 86400   IN  SOA dns.magedu.com. admin.magedu.com. 2013081401 7200 600 604800 21600
18.16.172. in -addr.arpa. 86400   IN  NS  dns.magedu.com.
2.18.16.172. in -addr.arpa. 86400 IN  PTR mail.magedu.com.
20.18.16.172. in -addr.arpa. 86400 IN PTR dns.magedu.com.
6.18.16.172. in -addr.arpa. 86400 IN  PTR www.magedu.com.
7.18.16.172. in -addr.arpa. 86400 IN  PTR www.magedu.com.
18.16.172. in -addr.arpa. 86400   IN  SOA dns.magedu.com. admin.magedu.com. 2013081401 7200 600 604800 21600
;; Query  time : 5 msec
;; SERVER: 172.16.18.20 #53(172.16.18.20)
;; WHEN: Sun Jul 28 16:02:04 2013
;; XFR size: 7 records (messages 1, bytes 220)

从上面的输出信息可以看出,DNS都可以正确解析,说明我们的配置没有问题,DNS服务器已经正常工作了。

小拓展:如何不用指向本机就能做本地解析??

#直接将DNS指向本机即可

 

1
2
3
4
[root@localhost named]# vim /etc/resolv.conf
# Generated by NetworkManager
nameserver  172.16 . 18.20
     #直接将DNS指向本机即可

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@localhost named] # dig -t axfr magedu.com     #正向完全区域解析
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t axfr magedu.com
;; global options: +cmd
magedu.com.     86400   IN  SOA dns.magedu.com. admin.magedu.com. 2013081401 7200 600 604800 21600
magedu.com.     86400   IN  NS  dns.magedu.com.
magedu.com.     86400   IN  MX  10 mail.magedu.com.
dns.magedu.com.     86400   IN  A   172.16.18.20
ftp .magedu.com.     86400   IN  CNAME   www.magedu.com.
mail.magedu.com.    86400   IN  A   172.16.18.2
www.magedu.com.     86400   IN  A   172.16.18.6
www.magedu.com.     86400   IN  A   172.16.18.7
magedu.com.     86400   IN  SOA dns.magedu.com. admin.magedu.com. 2013081401 7200 600 604800 21600
;; Query  time : 1 msec
;; SERVER: 172.16.18.20 #53(172.16.18.20)
;; WHEN: Sun Jul 28 15:00:08 2013
;; XFR size: 9 records (messages 1, bytes 231)

 

 

第二部分:创建从DNS服务器(主从同步实现)

 说明:如果有多台DNS服务器,必须为每个DNS服务器建立NS记录,否则主DNS将无法向其发送通知.

     从服务器IP地址:172.16.18.1

 

 

u正向区域从服务器创建过程:

1、安装Bind软件(同上,不再演示)

2、设置配置文件

1
2
3
4
5
[root@stu18 ~] #vim /etc/named.conf
             注释掉options段中如下选项
     //listen-onport  53 { 127.0.0.1; };
     //listen-on-v6port  53 { ::1; };
     //allow-query      { localhost; };

 3、编辑区域配置文件

 

 

1
2
3
4
5
6
[root@stu18 ~] # vim /etc/named.rfc1912.zones         #添加如下:
zone  "magedu.com"  IN {
         type  slave;
         file  "slaves/magedu.com.zone" ;
         masters {172.16.18.20;};
};

 

 4、检查配置文件语法错误与否

1
[root@stu18 ~] # named-checkconf

 5、切换之主服务器,给此服务器添加一个NS记录

 

1
2
3
4
5
6
[root@localhost ~] # vim /var/named/magedu.com.zone
                 2013081402    #添加完成后记得将配置文件版本号改动一下哦!!
          IN       NS      ns2                #添加NS记录
          IN       MX  10  mail
mail     IN       A       172.16.18.2
ns2      IN       A       172.16.18.1        #添加A记录

 

 6、检查主服务器上解析文件语法错误与否:

 

1
2
3
[root@localhost ~]# named-checkzone  "magedu.com"  / var /named/magedu.com.zone
zone magedu.com/IN: loaded serial  2013081401
OK

 

 7、将主服务器上的数据同步一下

 

1
2
[root@localhost named] # service named reload
Reloading named:                                           [  OK  ]

 

 8、检测NS记录是否同步完成

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@localhost named] # dig -t NS magedu.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t NS magedu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR,  id : 64614
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 2
;; QUESTION SECTION:
;magedu.com.            IN  NS
;; ANSWER SECTION:
magedu.com.     86400   IN  NS  dns.magedu.com.
magedu.com.     86400   IN  NS  ns2.magedu.com.
;; ADDITIONAL SECTION:
dns.magedu.com.     86400   IN  A   172.16.18.20
ns2.magedu.com.     86400   IN  A   172.16.18.1
;; Query  time : 2 msec
;; SERVER: 172.16.18.20 #53(172.16.18.20)
;; WHEN: Sun Jul 28 17:09:09 2013
;; MSG SIZE  rcvd: 96

 

 9、切换至从服务器,启动服务

 

1
2
3
[root@stu18 ~]# service named start
Generating /etc/rndc.key:                                  [  OK  ]
Starting named:                                            [  OK  ]

 

 10、查看数据文件是否已同步

 

1
2
3
[root@stu18 ~] # cd /var/named/slaves/
[root@stu18 slaves] # ls
magedu.com.zone              #自动同步自动创建指定名称

 

 11、查看数据解析情况

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@stu18 slaves] # dig -t A www.magedu.com         #解析A记录
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t A www.magedu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR,  id : 6485
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.magedu.com.            IN  A
;; ANSWER SECTION:
www.magedu.com.     86400   IN  A   172.16.18.6
www.magedu.com.     86400   IN  A   172.16.18.7
;; AUTHORITY SECTION:
magedu.com.     86400   IN  NS  ns2.magedu.com.
magedu.com.     86400   IN  NS  dns.magedu.com.
;; ADDITIONAL SECTION:
dns.magedu.com.     86400   IN  A   172.16.18.20
ns2.magedu.com.     86400   IN  A   172.16.18.1
;; Query  time : 1 msec
;; SERVER: 172.16.18.1 #53(172.16.18.1)
;; WHEN: Sun Aug 11 17:46:16 2013
;; MSG SIZE  rcvd: 132

 

 

u反向区域从服务器创建

说明:创建过程与正向基本相同。

1)编辑区域配置文件

 

1
2
3
4
5
6
[root@stu18 ~] # vim /etc/named.rfc1912.zones         添加如下:
zone  "18.16.172.in-addr.arpa"  IN {
          type  slave;
          file  "slaves/172.16.18.zone" ;
          masters {172.16.18.20;};
};

 

    保存配置过程,之后不要立即重启哦!!

    下面的过程就不重复进行了,相信你的能力和我一样完全可以胜任这一切!!

 

    总结:当主从DNS服务器联通之后,改动主服务器上的数据后,重新载入配置文件会将数据立即同步到从服务器上(这里笔者也不再演示了)。谨记:改动解析文件后一定将配置文件版本号更改一下!!

 

拓展:关于DNS安全的防护

当我们创建完成之后任何一个外界服务器都可以到我们的主服务器上进行区域传送这样会导致我们的网络结构丢失,因此我们不能让外部服务器同步,只允许从服务器同步;我们该怎么做到呢??

使用allow-transfer {IP;}   只允许谁(IP)传送。任何人不允许传送使用{none;}

例如:定义只允许172.16.18.1进行传送

 

1
2
3
4
5
6
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone  "magedu.com"  IN {
         type master;
         file  "magedu.com.zone" ;  
         allow-transfer { 172.16 . 100.17 ;};     #相当于定义一个白名单
};

 

 

第三部分:DNS子域授权(优化部分)

DNS本来的数据结构就是一个层级结构,犹如一个倒立的树状结构,由一点出发,一层层的向下分成了多个分支,而这些分支就是其上级域的子域,其上级域就是相对的父域,子域是从父域中划出来的一个域,子域中的DNS服务器负责这个子域中的地址解析,从而减轻了父域中DNS服务器的压力,这不仅提高了解析服务的效率,同样也提高了解析服务的稳定性,此部分我们就是学习如何给一个域划分出一个子域,并让这个子域中的DNS服务器能够进行子域中的域名解析服务,这个过程也叫做子域授权。

 

正向子域授权实现方式

        主父服务器:172.16.18.20

        从服务器:172.16.18.1

        子域服务器:172.16.251.144

 

首先设置子域的地址名称

 

1
2
3
4
[root@localhost] # vim /var/named/magedu.com.zone  #添加如下
dep1     IN       NS      dns.dep1 
dns.dep1 IN       A       172.16.251.144
#注:记得更改版本号!!

 

然后将数据再同步一下

 

1
2
[root@localhost named] # rndc reload
server reload successful

 

 

最后建立子域服务器:

1、安装bind并启动服务

1
2
安装过程详见其上...
[root@station144 ~]# service named start

2、编辑主配置文件

1
2
3
4
5
[root@stu18 ~] # vim /etc/named.conf
注释掉options段中如下选项:
//listen-on  port 53 { 127.0.0.1; };
//listen-on-v6  port 53 { ::1; };
//allow-query      { localhost; };

3、更改区域文件

1
2
3
4
5
[root@station144 named] # vim /etc/named.rfc1912.zones
zone  "dep1.magedu.com"  IN {
         type  master;
         file  "dep1.magedu.com.zone"
};

4、定义区域数据文件

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@station144 named] # vim dep1.magedu.com.zone
$TTL   1200
@         IN   SOA   dns.dep1.magedu.com.  admin.dep1.magedu.com. (
                         2013081401
                           1H
                           10M
                           3D
                           2H )
                IN       NS         dns
                IN       MX   10    mail
dns            IN       A          172.16.251.144
mail           IN       A          172.16.251.145
www            IN       A          172.16.251.145

5、更改区域数据文件的权限属组

1
2
[root@station144 named] # chown:named dep1.magedu.com.zone
[root@station144 named] # chmod 640dep1.magedu.com.zone

6、检查语法错误与否

 

1
2
3
4
[root@station144 named] # named-checkconf
[root@station144 named] # named-checkzone  "dep1.magedu.com" dep1.magedu.com.zone
zone dep1.magedu.com /IN : loaded serial 2013081401
OK

7、重新启动服务,同步数据

 

1
[root@station144 named] # rndc reload

8、测试解析(本机解析)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@station144 named] # dig -t A   www.dep1.magedu.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t A www.dep1.magedu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR,  id : 42286
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;www.dep1.magedu.com.       IN  A
;; ANSWER SECTION:
www.dep1.magedu.com.    1200    IN  A   172.16.251.145
;; AUTHORITY SECTION:
1、  dep1.magedu.com.    1200    IN  NS  dns.dep1.magedu.com.
;; ADDITIONAL SECTION:
dns.dep1.magedu.com.    1200    IN  A   172.16.251.144
;; Query  time : 1 msec
;; SERVER: 172.16.251.144 #53(172.16.251.144)
;; WHEN: Tue Aug 13 00:00:15 2013
;; MSG SIZE  rcvd: 87

9、切换至父服务器测试解析

1
2
[root@localhost named] # dig -t NS www.dep1.magedu.com
结果显示:可以正常解析   父域可以直接查找子域文件进行解析

 10、子域解析父服务器

1
2
[root@station144~]# dig -t A www.magedu.com
结果显示:无法正常进行解析     不能向上直接解析,只能通过根来解析

    11、利用转发实现子域解析父域

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[root@station144 named] # vim /etc/named.rfc1912.zones  #添加下列文本
zone  "magedu.com"  IN {
type  forward;
forward only;
forwarders {172.16.18.20;};
};
保存
[root@station144 named] # rndc reconfig   重新配置信息
结果:
[root@station144 named] # dig -t A www.magedu.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t A www.magedu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR,  id : 62754
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.magedu.com.            IN  A
;; ANSWER SECTION:
www.magedu.com.     85622   IN  A   172.16.18.6
www.magedu.com.     85622   IN  A   172.16.18.7
;; AUTHORITY SECTION:
magedu.com.     85622   IN  NS  dns.magedu.com.
magedu.com.     85622   IN  NS  ns2.magedu.com.
;; ADDITIONAL SECTION:
dns.magedu.com.     85622   IN  A   172.16.18.20
ns2.magedu.com.     85622   IN  A   172.16.18.1
;; Query  time : 1 msec
;; SERVER: 172.16.251.144 #53(172.16.251.144)
;; WHEN: Tue Aug 13 01:31:17 2013
;; MSG SIZE  rcvd: 132

      12、利用子域解析网络其他主机

 

1
2
3
4
5
[root@station144 named] # vim /etc/named.conf    在options(全局变量)中定义访问网关地址即可。
         recursion  yes ;
         forward only;
         forwarders { 172.16.0.1; };        保存
[root@station144 named] # rndc reconfig   重新配置信息

 

注:这里如果解析www.magedu.com会通过172.16.18.20进行解析,说明在/etc/named.rfc1912.zones中定义的内容优先级别高。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[root@station144 named] # dig -t A www.google.com.hk      #解析谷歌进行测试
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t A www.google.com.hk
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR,  id : 49163
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 4, ADDITIONAL: 4
;; QUESTION SECTION:
;www.google.com.hk.     IN  A
;; ANSWER SECTION:
www.google.com.hk.  300 IN  CNAME   www-wide.l.google.com.
www-wide.l.google.com.  300 IN  A   74.125.128.199
;; AUTHORITY SECTION:
google.com.     172800  IN  NS  ns2.google.com.
google.com.     172800  IN  NS  NS1.google.com.
google.com.     172800  IN  NS  ns3.google.com.
google.com.     172800  IN  NS  ns4.google.com.
;; ADDITIONAL SECTION:
ns2.google.com.     172800  IN  A   216.239.34.10
NS1.google.com.     345600  IN  A   216.239.32.10
ns3.google.com.     172800  IN  A   216.239.36.10
ns4.google.com.     172800  IN  A   216.239.38.10
;; Query  time : 1196 msec
;; SERVER: 172.16.251.144 #53(172.16.251.144)
;; WHEN: Tue Aug 13 01:44:40 2013
;; MSG SIZE  rcvd: 222

 

  反向子域授权方式

    反向区域子域授权方式和正向过程基本类似这里也不过多阐述,如有疑问请留言,笔者将以最大的努力帮看客们排忧解难。。。

打赏

免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2021 CODEPRJ.COM