首页 > 代码库 > dns服务实践

dns服务实践

测试环境 VMware 虚拟机环境, linux平台centos6.5 ,ip网段172.16.26.1-6

安装dns服务器提供dns服务

安装bind (named)

 

测试环境 centos6.5平台, ip地址172.16.26.3

/etc/named.conf  ==>主要配置文件

options {

    //listen-on port 53 { 127.0.0.1; }; 监听的端口和地址 只为自己服务,咋行呢?

    //listen-on-v6 port 53 { ::1; }; IPV6,暂时用不上

    directory   "/var/named"; //dns的工作目录 解析库等各种文件要查找的位置

    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-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"; //之后的zone在这里定义,当然,也可以定义在这里,不过这个文件太大,不好管理

//include "/etc/named.root.key";

 

named-checkconf 

service named configtest ==>检查配置文件语法是否正确的两种方法

service named start  如果启动不了,说明随机数没生成,等会就好了 

/dev/urandom  先返回熵池中的随机数,如果熵池耗尽软件算法生成

/dev/random:  只返回熵池中的随机数

熵池内容耗尽?怎么办?又不想等?

改配置脚本文件

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

if /usr/sbin/rndc-confgen -a --randomfile=/dev/urandom  &> /dev/null;then ???

 

 

 

 

 

[root@ct3 etc]# service named status

version: 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 版本

CPUs found: 4 ==>cpu信息

worker threads: 4 工作线程

number of zones: 19 区域数

debug level: 0 没启动调试级别

xfers running: 0

xfers deferred: 0

soa queries in progress: 0

query logging is OFF 查询日志

recursive clients: 0/0/1000 是否有递归客户端

tcp clients: 0/100 tcp客户端 

server is up and running

named (pid  7020) is running...

wKioL1PnZ5eBJjIoAAFv-i7PzVE599.jpg 

rndc: remote name domain controller 是一个可以让你远程控制dns服务的工具 [很危险,一般不允许远程使用,监听在本地]

此时DNS只负责缓存效果,不负责具体域名解析,即一个缓存DNS服务器

 

/etc/named.rfc1912.zones =定义各种域的文在/etc/named.conf引入的

其实区域解析配置在/etc/named.conf也可以,只是这样的话会让named.conf过大,不太好,所以引入方式配置

 

 

 

/etc/named.rfc1912.zones文件中定义自己要解析的域,如我要解析robert.com加入以下配置行

zone "robert.com" IN {

    type master;

file "robert.com.zone";

file ==>是相对路径 在此配置/etc/named.conf =>options => directory=> "/var/named";

 

};

 

下面可以定义robert.com.zone 解析库文件了

/etc/named.conf 文件定义了工作目录/var/named options => directory】 

必须得在定义的工作目录下创建

$TTL 3600

[$ORIGIN robert.com.]==>其实默认是有一个这样的变量在这里的

@       IN      SOA     ns.robert.com.      admin.robert.com.   (

                        2014080501 =>解析库版本

                        2H =>周期性性同步时间隔

                        10M =>重试时间间隔

                        3D =>过期时长

                        1D) =>否定答案统一缓存时长

@       IN      NS      ns.robert.com.   =>Dns服务器的FQDN

@       IN      MX  10  mail.robert.com.  =>Mail服务器的FQDN  mail服务的优先级千万别少了

ns.robert.com.      IN      A        172.16.26.3 各服务器的具体ip地址

mail.robert.com.    IN      A        172.16.26.4    

pop.robert.com.     IN      CNAME   mail.robert.com. pop服务器别名

www.robert.com.    IN      A        172.16.26.5

 

 spacer.gif

 wKiom1PnZpqgQiXyAAKzAra5UKw137.jpg

 

配置完成,

[root@ct3 named]# chgrp named robert.com.zone ==>将文件的属组更改为named

[root@ct3 named]# ll

total 32

drwxrwx--- 2 named named 4096 Aug  5 17:19 data

drwxrwx--- 2 named named 4096 Aug  5 20:54 dynamic

-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

-rw-r----- 1 root  named  380 Aug  5 21:32 robert.com.zone

drwxrwx--- 2 named named 4096 Aug 27  2013 slaves

 

vim /etc/resolv.conf  查看里面的nameserver指向哪? 这时需要指向自己[因为此时自己是dns服务器]172.16.26.3

当然,我们可以用ping来检测是否解析成功.很幸运,解析成功了,ping刚才配置的mail服务器已能成功的解析到它的ip地址

spacer.gif

 wKioL1PnZ8ySP6gIAAE-EaHtC9w674.jpg

我们还有更先进的测试工具,比如 host 

[root@dn3 named]# host -t A ns.robert.com 
ns.robert.com has address 172.16.26.3 
[root@dn3 named]# host -t A www.robert.com 
www.robert.com has address 172.16.26.5 
[root@dn3 named]# host -t A pop.robert.com 
pop.robert.com is an alias for mail.robert.com. 
mail.robert.com has address 172.16.26.4


专用测试工具一

[root@dn3 named]# host -t A pop.robert.com 172.16.26.3    明确的指明用哪台DNS服务器做解析,会输出更多的信息
Using domain server:         
Name: 172.16.26.3 
Address: 172.16.26.3#53 
Aliases: 

pop.robert.com is an alias for mail.robert.com.     会明确的告知pop.robert.com是mail.robert.com的别名
mail.robert.com has address 172.16.26.4    而mail.robert.com的ip地址是172.16.26.4

 

[root@dn3 named]# host -t NS robert.com 172.16.26.3    ==>在172.16.26.3上查看robert.com这个域的dns服务器是哪台

Using domain server:

Name: 172.16.26.3

Address: 172.16.26.3#53

Aliases:
robert.com name server ns.robert.com.

[root@dn3 named]# host -t SOA robert.com 172.16.26.3 还可以查看该域的SOA记录
Using domain server: 
Name: 172.16.26.3 
Address: 172.16.26.3#53 
Aliases: 

robert.com has SOA record ns.robert.com. admin.robert.com. 2014080501 7200 600 259200 86400 所有的时间单位都转化为了秒

 

专用测试工具二

[root@dn3 named]# nslookup     ==>交互式的查看DNS的解析
> server 172.16.26.3     ==>如果不输入,直接回车,则使用默认的server  /etc/resolv.conf 查看里面的nameserver
Default server: 172.16.26.3 
Address: 172.16.26.3#53 
> set type=A     ==>设定要查看的资源类型
> www.robert.com     ==>输入资源名称,
Server: 172.16.26.3     ==>如有则返回dns服务器ip地址
Address: 172.16.26.3#53     ==>同时返回为其服务的dns地址入服务端口号

Name: www.robert.com     ==>目的结果

Address: 172.16.26.5     ==>ip地址查找到




专用测试工具三

[root@dn3 named]# dig -t A www.robert.com@172.16.26.3  [不跟@172.16.26.3则使用默认dns服务器]

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> -t A www.robert.com 
;; global options: +cmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2844 
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1         =>报文首部相关信息

                如果有aa则说明是权威回应  AUTHORITY ANSWER


;; QUESTION SECTION:     ==>查询问题
;www.robert.com. IN A 

;; ANSWER SECTION:     ==>回应问题
www.robert.com. 3600 IN A 172.16.26.5 

;; AUTHORITY SECTION:     ==>回应者
robert.com. 3600 IN NS ns.robert.com.       robert.com域的主DNS是ns.robert.com 

;; ADDITIONAL SECTION:                         主DNS ns.robert.com 的ip
ns.robert.com. 3600 IN A 172.16.26.3 

;; Query time: 2 msec 
;; SERVER: 172.16.26.3#53(172.16.26.3) 
;; WHEN: Tue Aug 5 22:25:07 2014 
;; MSG SIZE rcvd: 81


                        AXFR =>完全区域传送

[root@dn3 named]# dig -t AXFR robert.com @172.16.26.3 ==>dig还可以查询AXFR,可将整个域的信息都查询出来

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> -t AXFR robert.com @172.16.26.3 
;; global options: +cmd 
robert.com. 3600 IN SOA ns.robert.com. admin.robert.com. 2014080501 7200 600 259200 86400 
robert.com. 3600 IN NS ns.robert.com. 
robert.com. 3600 IN MX 10 mail.robert.com. 
ftp.robert.com. 3600 IN A 172.16.26.6 
mail.robert.com. 3600 IN A 172.16.26.4 
ns.robert.com. 3600 IN A 172.16.26.3 
pop.robert.com. 3600 IN CNAME mail.robert.com. 
www.robert.com. 3600 IN A 172.16.26.5 
robert.com. 3600 IN SOA ns.robert.com. admin.robert.com. 2014080501 7200 600 259200 86400 
;; Query time: 2 msec 
;; SERVER: 172.16.26.3#53(172.16.26.3) 
;; WHEN: Tue Aug 5 22:36:24 2014 
;; XFR size: 9 records (messages 1, bytes 234)



dig +trace -t A www.baidu.com  还可以追踪中间的解析过程


 dig -t NS . 查找根域 [全球13个根节点ip所在]

 dig -t NS . > /var/named/named.ca ==>根节点信息由此命令生成 由此生成是最新的,最权威的



配置反向解析

在主DNS服务器的配置文件/etc/named.rfc1912.zones 中加上一个解析域,内容如下

zone "26.16.172.in-addr.arpa" IN {    =>既然是反向解析,那么要解析的域是反过来写, .in-addr.arpa这个是固定用法

 type master;                    =>反向解析主服务器

 file "172.16.26.zone";    =>解析域文件

};

注意 172.16.26.zone 文件的权限一定要刻改

解析域文件 /var/named/172.16.26.zone 内容如下

$TTL 3600 
$ORIGIN 26.16.172.in-addr.arpa.     
@ IN SOA ns.robert.com. admin.robert.com. (    =>此行用法与正向解析用法一致 
2014080502     =>版本号
2H 
10M 
3D 
1D ) 
        IN         NS           ns.robert.com. 
        IN         NS           ns2.robert.com. 
1      IN         PTR         ns2.robert.com     各种反向解析条目
3      IN         PTR         ns.robert.com                         ==>因为在 /etc/named.rfc1912.zones 中定义的zone就是 26.16.172.in-addr.arpa. 也就是后缀 26.16.172给定好了.
7     IN         PTR          mail.robert.com                             合起来就是 3.26.16.172  因为反向嘛,自然会反过来 172.16.26.3 反向解析很简单
5     IN         PTR          www.robert.com 
6     IN         PTR          ftp.robert.com


 


支持查看反向解析zone 

[root@dn3 named]# dig -t AXFR 26.16.172.in-addr.arpa 

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> -t AXFR 26.16.172.in-addr.arpa 
;; global options: +cmd 
26.16.172.in-addr.arpa. 3600 IN SOA ns.robert.com. admin.robert.com. 2014080501 7200 600 259200 86400 
26.16.172.in-addr.arpa. 3600 IN NS ns.robert.com. 
3.26.16.172.in-addr.arpa. 3600 IN PTR ns.robert.com. 
4.26.16.172.in-addr.arpa. 3600 IN PTR mail.robert.com. 
5.26.16.172.in-addr.arpa. 3600 IN PTR www.robert.com. 
6.26.16.172.in-addr.arpa. 3600 IN PTR ftp.robert.com. 
26.16.172.in-addr.arpa. 3600 IN SOA ns.robert.com. admin.robert.com. 2014080501 7200 600 259200 86400 
;; Query time: 1 msec 
;; SERVER: 172.16.26.3#53(172.16.26.3) 
;; WHEN: Tue Aug 5 23:50:58 2014 
;; XFR size: 7 records (messages 1, bytes 222)


[root@dn3 named]# dig -x 172.16.26.6 

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> -x 172.16.26.6 
;; global options: +cmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14716 
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 

;; QUESTION SECTION: 
;6.26.16.172.in-addr.arpa. IN PTR 

;; ANSWER SECTION: 
6.26.16.172.in-addr.arpa. 3600 IN PTR ftp.robert.com. 

;; AUTHORITY SECTION: 
26.16.172.in-addr.arpa. 3600 IN NS ns2.robert.com.     ==>有两台解析主机,它们会轮询工作
26.16.172.in-addr.arpa. 3600 IN NS ns.robert.com.       ==>有两台解析主机,它们会轮询工作   一主一从

;; ADDITIONAL SECTION: 
ns.robert.com. 3600 IN A 172.16.26.3 
ns2.robert.com. 3600 IN A 172.16.26.1 

;; Query time: 2 msec 
;; SERVER: 172.16.26.3#53(172.16.26.3) 
;; WHEN: Wed Aug 6 16:34:22 2014 
;; MSG SIZE rcvd: 137


主从DNS服务器

在主服务器配置的域(zone)下添加dns记录,明确标明要新配置一个DNS从服务器节点

[ /var/named/robert.com.zone ]

spacer.gif

wKiom1PnZv_wdhtqAAGMP8KBQ8s017.jpg

就这么简单从服务器在主服务器的域中,记录已配置好.



下面我们去建立一台新的服务器,作为172.16.26.3的从DNS服务器


要建立从服务器的IP地址为172.16.26.1 ==>工作平台一样是centos6.5


同样的,在named服务的配置文件中,要配置服务所属的域

/etc/named.rfc1912.zones 配置文件

zone "robert.com" IN {                ==>服务的域 robert.com

    type slave;                       =>表明自己是从服务

    file "slaves/robert.com.zone";    =>同步数据存放位置

    masters { 172.16.26.3; };         =>从属于172.16.26.3服务

};

spacer.gifwKioL1PnaDHiN_82AAB-ywYv098320.jpg

此时从属于172.16.26.3的dns服务器就已配置好,只需要主服务器通知[或者到了更新的时间点],从服务器的解析数据就能更新了


主DNS服务器172.16.26.3未重读配置文件时,从服务器的解析数据尚未生成.

spacer.gifwKiom1PnZyyRzHlaAACKR5DYGEA116.jpg


此时切换主服务器操作

[root@dn3 etc]# service named reload     =>主服务器重读配置文件,使从服务器工作生效
Reloading named: [ OK ]


经过以上步骤后,重服务器启动,服务开启,并在对应配置的工作目录下,同步了主服务器的解析数据

spacer.gif

wKioL1PnaGayeLe2AADcvA72SCk475.jpg

用host测试工具,明确指明由 172.16.26.1从服务器解析mail.robert.com

[root@www slaves]# host -t A mail.robert.com 172.16.26.1 
Using domain server: 
Name: 172.16.26.1         =>服务主机名称 
Address: 172.16.26.1#53     =>工作ip ,响应端口
Aliases: 

mail.robert.com has address 172.16.26.4    =>得到解析结果




此时如果主服务器的配置文件上再加一条解析纪录,从服务器能解析得到吗?我们来测试一下

[ /var/named/robert.com.zone ]

$TTL 3600

$ORIGIN robert.com.

@ IN SOA ns.robert.com. admin.robert.com. (

                        2014080502    =>有变化,版本号更新

                        2H

                        10M

                        3D

                        1D )

@       IN NS ns

        IN NS ns2    ==>从服务器

        IN MX 10 mail

ns IN A 172.16.26.3

ns2 IN A 172.16.26.1

mail IN A 172.16.26.4

pop IN CNAME mail

www IN A 172.16.26.5

ftp IN A 172.16.26.6

web IN A 172.16.26.2    ==>新添加解析记录

spacer.gifwKioL1PnaKHA6cnOAAGsaUoSV_8204.jpg


主服务器没重读配置文件是解析不到新添加的记录的

[root@dn3 named]# host -t A web.robert.com 
Host web.robert.com not found: 3(NXDOMAIN)

重读配置文件后测试

[root@dn3 named]# service named reload     =>重读配置文件
Reloading named: [ OK ] 
[root@dn3 named]# host -t A web.robert.com 
web.robert.com has address 172.16.26.2          ==>测试结果,解析成功


对于172.16.26.1从服务器来说,也是一样的

主服务器未重读配置文件时

[root@www named]# host -t A web.robert.com 
Host web.robert.com not found: 3(NXDOMAIN) 解析结果 找不到记录 

主服务器重读配置文件后
[root@www named]# host -t A web.robert.com 
web.robert.com has address 172.16.26.2    解析结果ok

这说明主服务器一但有数据更新,并重读生效后,就会发出通知让从属于它工作的从服务器来更新解析数据




同步安全

如果是随意来一台主机,想要得到完全域名解析的数据就能随意得到,太不安全了,我们得对同步数据做访问限制.

例如,现在我开启另一台主机 172.16.26.5 

[root@localhost ~]# dig -t AXFR robert.com @172.16.26.3 用此命令去探测解析库

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> -t AXFR robert.com @172.16.26.3 
;; global options: +cmd 
robert.com. 3600 IN SOA ns.robert.com. admin.robert.com. 2014080503 7200 600 259200 86400 
robert.com. 3600 IN NS ns.robert.com. 
robert.com. 3600 IN NS ns2.robert.com. 
robert.com. 3600 IN MX 10 mail.robert.com. 
ftp.robert.com. 3600 IN A 172.16.26.6 
mail.robert.com. 3600 IN A 172.16.26.4 
ns.robert.com. 3600 IN A 172.16.26.3 
ns2.robert.com. 3600 IN A 172.16.26.1 
pop.robert.com. 3600 IN CNAME mail.robert.com. 
web.robert.com. 3600 IN A 172.16.26.2 
www.robert.com. 3600 IN A 172.16.26.5 
robert.com. 3600 IN SOA ns.robert.com. admin.robert.com. 2014080503 7200 600 259200 86400 
;; Query time: 15 msec 
;; SERVER: 172.16.26.3#53(172.16.26.3) 
;; WHEN: Wed Aug 6 11:36:14 2014 
;; XFR size: 12 records (messages 1, bytes 288)     ==>结果畅通无阻,所有结果返回

显然出于安全考虑,不能这么做, 下面来谈谈dns同步解析数据的安全策略

编辑主服务器的配置文件 /etc/named.rfc1912.zones

zone "robert.com" IN {

    type master;

    file "robert.com.zone";

    allow-transfer { 172.16.26.1; };    ==>允许来同步的ip

};


spacer.gifwKiom1PnZ8WjUOfwAACMRDdJLws209.jpg注,此截图 allow-trandsfer 名单ip后面少个 ";" 这是不对的

主服务器重新读取配置文件,


我们用ip 172.16.26.2的主机来同步测试一下,发现,确实无法同步主服务器了,但是同步从服务器还是没问题的

spacer.gifwKioL1PnaPnCrHaoAAWcE3y1hQY328.jpg

显然,漏洞依然存在,我们再去堵从服务器的漏洞

修改从服务器配置文件

/etc/named.rfc1912.zones

zone "robert.com" IN {

    type slave;

    file "slaves/robert.com.zone";

    masters { 172.16.26.3; };

    allow-transfer { none; };    ==>在从服务器的白名单列表,明确标识,none; 不允许任何人来同步

};

注,除了同步,还有其它的访问控制

 

   allow-transfer {};

   allow-query {};    允许查询[这个一般是都允许查的,可以是取反 例 !172.16.26.8 除了这个ip都能来查询

   allow-update {};    通常不允许别人来更改, 只能本地修改

wKiom1PnaAXQjgi0AADSH_srbjw679.jpg

spacer.gif allow-update 设置为 none; 这样比较安全,不允许任何人更新解析库





子域授权

在主DNS服务器上,域配置文件中,要给予授权


ops         IN        NS    ns.ops            ==>指定授权给ns的子域 ops

ns.ops      IN        A     172.16.26.4    ==>ns.ops的具体ip地址

/var/named/robert.com.zone

$TTL 3600

$ORIGIN robert.com.

@ IN SOA ns.robert.com. admin.robert.com. (

                        2014080503

                        2H

                        10M

                        3D

                        1D )

@ IN NS ns

        IN NS ns2

        IN MX 10 mail

ns IN A 172.16.26.3

ns2 IN A 172.16.26.1

mail IN A 172.16.26.4

pop IN CNAME mail

www IN A 172.16.26.5

ftp IN A 172.16.26.6

web IN A 172.16.26.2  


ops IN NS ns.ops        ==>加上授权纪录

ns.ops IN A 172.16.26.4    =>明确子域授权纪录的ip地址 

授权完成,要重读主DNS的配置文件[172.16.26.3 上 service named reload ]


子域 172.16.26.4的操作

在配置文件 /etc/named.rfc1912.zones  中,添加子域解析域 

zone "ops.robert.com" IN {

        type master;

        file "ops.robert.com.zone";    对应的配置文件名

        allow-update { none; };        不允许任何人更新

        allow-transfer { 172.16.26.4; }; =>只允许自己同步

};

创建配置文件, 并修改其属主为root     并添加内容如下

/var/named/ops.robert.com.zone

$TTL 3600

$ORIGIN ops.robert.com.

@ IN SOA ns.ops.robert.com. admin.ops.robert.com. (

                        2014080601

                        2H

                        10M

                        3D

                        1D )

@      IN     NS        ns    

       IN     MX 10     mail

ns     IN     A         172.16.26.4

mail   IN     A         192.168.1.10

pop    IN     CNAME     mail

www    IN     A         192.168.1.11

ftp    IN     A         192.168.1.12

此时启动[或者重读配置文件]ok

在172.16.26.5上测试子域DNS服务器解析工作是否OK

[root@localhost ~]# dig -t A ns.ops.robert.com @172.16.26.4 

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> -t A ns.ops.robert.com @172.16.26.4 
;; global options: +cmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51087 
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0  ==>有aa 权威回应

;; QUESTION SECTION: 
;ns.ops.robert.com. IN A 

;; ANSWER SECTION: 
ns.ops.robert.com. 3600 IN A 172.16.26.4     ==>得到结果 要查询的ns.ops.robert.com ip 是  172.16.26.4

;; AUTHORITY SECTION: 
ops.robert.com. 3600 IN NS ns.ops.robert.com. 

;; Query time: 3 msec 
;; SERVER: 172.16.26.4#53(172.16.26.4) 
;; WHEN: Wed Aug 6 17:57:14 2014 
;; MSG SIZE rcvd: 65



如果子域的dns服务器查找不到所要查询的fqnd,那么默认的子域会转发给根服务器,就转发到外网去了. 

如果我们要建立的是公司内部使用的dns服务器,不需要转发到外网,只在内部使用,怎么处理呢?


我们可以配置子域服务器的配置文件 172.16.26.4 /etc/named.conf 让其实现转发功能

options {

// listen-on port 53 { 127.0.0.1; };

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

        forward only;    =>转发选项

        forwarders { 172.16.26.3; };    =>转发的ip 转发给172.16.26.3,交给它帮找

        dnssec-enable yes;

        dnssec-validation yes;

        dnssec-lookaside auto;  

        /* Path to ISC DLV key */

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

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

};

spacer.gif

wKiom1PnaDKSHb-uAAMIcklzaFY515.jpg

从服务器重读配置文件


主DNS上的配置 

==>[注意, allow-recursion内可以放置acl,  内置的ACL有: none, any, local(本机), localnet(本机所在网络)

 如果要允许递归的主机很多,内置的acl又不合用,可以手动定义一个acl 

在options外定义

mynetwork { 172.16.26.1;172.16.26.2;172.16.26.4;172.16.26.5; }

在options内的 allow-recursion内写 

allow-recursion { mynetwork; };

]

spacer.gifwKiom1PnaHPg6B5iAALVcl0HsKM197.jpg

注意,dnssec-enable yes

        dbssec-vakudatuib yes

        dnssec-lookaside auto  这三项要注释,否则转发不成功


在712.16.26.5主机上, 在172.16.26.4上查询 fftp.robert.com的ip 

spacer.gif

wKiom1PnaIficyE8AAPQJ99etd8838.jpg


当然以上的配置,还是不够灵活,因为我们只是想内网的域,在指定dns解析.

而真正的外网ip自己解析不了,还是交给外网上的根DNS.那该如何配置呢


将/etc/named.conf文件中,刚才配置转发所需要的两顶配置注释

spacer.gifwKiom1PnaN6z8JW3AAILtBEdv7o120.jpg

将其写入配置文件 /etc/named.rfc1912.zones中

编辑从服务器172.16.26.4的配置文件 /etc/named.rfc1912.zones 

spacer.gifwKioL1PnagezH6ISAACrus4IoaQ109.jpg


在172.16.26.5上测试 使用172.16.26.4解析

[root@localhost ~]# dig -t A fftp.robert.com @172.16.26.4 

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> -t A fftp.robert.com @172.16.26.4 
;; global options: +cmd 
;; connection timed out; no servers could be reached 
[root@localhost ~]# dig -t A fftp.robert.com @172.16.26.4 

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> -t A fftp.robert.com @172.16.26.4 
;; global options: +cmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60600 
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 

;; QUESTION SECTION: 
;fftp.robert.com. IN A 

;; ANSWER SECTION: 
fftp.robert.com. 3600 IN A 172.16.26.6     ==>得到结果,OK!

;; AUTHORITY SECTION: 
robert.com. 3600 IN NS ns2.robert.com. 
robert.com. 3600 IN NS ns.robert.com. 

;; ADDITIONAL SECTION: 
ns2.robert.com. 3600 IN A 172.16.26.1 
ns.robert.com. 3600 IN A 172.16.26.3 

;; Query time: 11 msec 
;; SERVER: 172.16.26.4#53(172.16.26.4) 
;; WHEN: Wed Aug 6 21:04:18 2014 
;; MSG SIZE rcvd: 116



如果172.16.26.4要来查一个互联网上的地址, 而172.16.26.4是没办法解析的,转发给172.16.26.3, 而3也发现自己没法解析,如果这时再配置3转发给一台可以与外网交互的主机,应该就能解析了

spacer.gif

wKiom1PnaQbgtTgJAAHUHYe9TTo882.jpg

wKioL1Pnah-h-lebAAIYoDweqOo502.jpg

spacer.gif

二者的配置文件修改后,重读配置文件

在172.16.26.5上运行测试命令

spacer.gifwKiom1PnaSLSDP_SAAKTdWKvwOk518.jpg

得到结果,得知www.baidu.com是 www.a.shifen.com的正式名称 ip地址有两个 61.135.169.105/125



以上配置的dns服务主从服务器一般是轮询工作的,如果我们想实现相应的主机来查询就让对应的服务器响应解析

那要如何实现呢?这就涉及到了一个dns解析中一个视图的概念.


我们在DNS主服务器[172.16.26.3]上,开始配置

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

我们可以定义两个视图


view main172 {

    match-clients { 172.16.0.0/16;127.0.0.1; };    ==>如果是176.16.0.0网段的客户端来访问,就使用这个视图里的

    zone "robert.com" IN {

        type master;

        file "robert.com.172";        使用robert.com.172 

        allow-transfer { 172.16.26.1;172.16.26.3; };       允许的的转发 , , , , ,

        allow-update { none; };                                    不允许其它主机更新

    };

};


view no172 {    

    match-clients { any; };    

    zone "robert.com" IN {    

        type master;                  允许

        file "robert.com.other";      使用的文件

    };    

};    

配置 /var/named/robert.com.other 内容如下图

spacer.gif

wKioL1PnalWx0BP6AAGkymBBFf0618.jpg

配置 /var/named/robert.com.172 内容如下图

wKiom1PnaTzgDQZcAAG1hdUtXt0286.jpg


spacer.gif

配置好之后, 重启服务, OK, 开始测试


在192.168.1.30的主机上测试

spacer.gifwKioL1PnanaxErDzAAJbm7uYAjI878.jpg

[root@ca2 network-scripts]# dig -t A fftp.robert.com @172.16.26.3 

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> -t A fftp.robert.com @172.16.26.3 
;; global options: +cmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54942 
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 
;; WARNING: recursion requested but not available 

;; QUESTION SECTION: 
;fftp.robert.com. IN A 

;; ANSWER SECTION: 
fftp.robert.com. 3600 IN A 172.16.26.16     ==>得到测试结果 172.16.26.16 ok和 robert.com.other  配置文件中的内容一样

;; AUTHORITY SECTION: 
robert.com. 3600 IN NS ns.robert.com. 
robert.com. 3600 IN NS ns2.robert.com. 

;; ADDITIONAL SECTION: 
ns.robert.com. 3600 IN A 172.16.26.3 
ns2.robert.com. 3600 IN A 172.16.26.1 

;; Query time: 4 msec 
;; SERVER: 172.16.26.3#53(172.16.26.3) 
;; WHEN: Thu Aug 7 00:02:58 2014 
;; MSG SIZE rcvd: 116



在172的网段测试  

spacer.gifwKiom1PnaWvQDqJ-AAI63t-37Hs730.jpg

[root@localhost ~]# dig -t A fftp.robert.com @172.16.26.3 

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> -t A fftp.robert.com @172.16.26.3 
;; global options: +cmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61171 
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 

;; QUESTION SECTION: 
;fftp.robert.com. IN A 

;; ANSWER SECTION: 
fftp.robert.com. 3600 IN A 172.16.26.6  =>得到结果,果然是 robert.com.172的配置内容

;; AUTHORITY SECTION: 
robert.com. 3600 IN NS ns2.robert.com. 
robert.com. 3600 IN NS ns.robert.com. 

;; ADDITIONAL SECTION: 
ns.robert.com. 3600 IN A 172.16.26.3 
ns2.robert.com. 3600 IN A 172.16.26.1 

;; Query time: 5 msec 
;; SERVER: 172.16.26.3#53(172.16.26.3) 
;; WHEN: Mon Aug 4 15:56:09 2014 
;; MSG SIZE rcvd: 116 

本文出自 “909是个目标” 博客,请务必保留此出处http://robert1joy.blog.51cto.com/4489523/1538296