DNS服务正向、反向解析区域,主/从区域数据库复制,子域授权及基本安全控制

  1. 云栖社区>
  2. 博客>
  3. 正文

DNS服务正向、反向解析区域,主/从区域数据库复制,子域授权及基本安全控制

余二五 2017-11-16 16:19:00 浏览1053
展开阅读全文

DNS是应用层的协议,默认使用UDP的53端口,也会用到TCP的53端口。

DNS名称解析方式:

名称 --> IP:正向解析

wKioL1cTI2_RHR3YAAK6uLUozo4821.png

第一段这种方式叫递归查询,只发出去一次请求,就给它返回答案;第二段这种方式就迭代查询,要发出多次请求,需要自己查询不同域名,最后才返回答案;这就是DNS的查询类型。

一般内网递归,外网迭代。


IP --> 名称:反向解析

wKiom1cTIwXjUuEDAAGHCVnpT9g722.png

每一层服务器都有各自的数据库,来存储各自负责的网段,这与正向解析的数据库是两个各自独立的数据库。


一次完整的查询请求经过的流程:

Client --> hosts文件 --> DNS Local Cache --> DNS  Server (recursion) --> 分两种情况:

(1)自己负责解析的域:直接查询数据库并返回答案

(2)不是自己负责解析域:Server Cache --> iteration(迭代)


主-辅DNS服务器:

主DNS服务器:维护所负责解析的域数据库的那台服务器;读写操作均可进行

从DNS服务器:从主DNS服务器那里或其它的从DNS服务器那里“复制”一份解析库;但只能进行读操作


在linux系统上实现DNS服务的程序是bind,安装bind程序,而bind程序安装后运行的进程名为named;

]# yum install bind

主配置文件:/etc/named.conf、/etc/named.rfc1912.zones

解析库文件/var/named/目录下,以区域名字命名:ZONE_NAME.zone

正向解析库文件:/var/named/named.localhost

反向解析库文件:/var/named/named.loopback


注意:根区域解析库文件named.ca、正向解析库文件named.localhost、反向解析库文件named.loopback都不是程序提供的,而是rpm包制作者提供的。


配置主DNS服务器

正向区域:

第一步:定义正向区域zone

]# vim /etc/named.con

修改内容:


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

dnssec-enable no

//allow-query  { localhost; };


添加本地主机地址;把dnssec都改为no;关闭仅允许本地查询即加//注释:


]# vim /etc/named.rfc1912.zones 

添加内容:

zone "magedu.com" IN {

    type master;

    file "magedu.com.zone";

};


注意:在区域中定义的这个file指明的magedu.com.zone区域数据库文件还不存在,需要自己创建,如果在上面配置文件的file中定义的是相对路径,默认为在/var/named/目录下创建,且这个目录默认是不存在的


第二步:建立正向区域解析数据库文件(主要记录为A或AAAA记录)

一般默认在/var/named目录下建立,为magedu.com.zone区域创建编辑一个正向区域数据库文件,创建正向区域数据库文件,自己取名为magedu.com.zone。

区域数据库文件除了宏定义外,都是资源记录,第一条必须为soa记录。


]# vim /var/named/magedu.com.zone


$TTL 3600:单位是秒;

$ORIGIN magedu.com.

@       IN      SOA     ns1.magedu.com.     403868144.qq.com. (

    2016041001

    1H

    10M 

    3D

    1D )

             IN      NS      ns1

             IN      NS      ns2 

             IN      MX   10 mx1

             IN      MX   20 mx2

ns1     IN      A       172.18.11.2

ns2     IN      A       172.18.11.3

mx1     IN      A       172.18.11.4

mx2     IN      A       172.18.11.5

www     IN      A       172.18.11.2

web     IN      CNAME   www

bbs     IN      A       172.18.11.2


第三步:修改正向区域数据库文件的权限为其它不可读,属组为named

]# chown :named magedu.com.zone

]# chmod o= magedu.com.zone


第四步:语法检查

]# named-checkconf

]# named-checkzone magedu.com /var/named/magedu.com.zone


查看区域信息

]# rndc status

注意:正向区域名一定要与在/etc/named.rfc1912.zones文件中的zone定义的正向区域名一致;但zone中的区域名后的.可省略。


第五步:让服务器重载配置文件和区域数据文件

]# rndc reload


第六步:测试DNS服务器是否能解析

]# dig -t A www.magedu.com @172.18.250.131

]# host -t A bbs.magedu.com @172.18.11.2

]# dig -t NS magedu.com @172.18.11.2

]# host -t MX magedu.com @172.18.11.2


配置反向区域,配置步骤同配置正向解析区域相同

第一步:定义反向区域

]# vim /etc/named.rfc1912.zones


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

    type master;

    file "172.18.11.zone";

};


第二步:定义反向区域解析库文件(主要记录为PTR)
一般默认在/var/named目录下建立;反向区域解析库文件自己取名为172.18.250.zone。

]# vim 172.18.11.zone


$TTL 3600

$ORIGIN 250.18.172.in-addr.arpa.设置自动补上完整IP的内容;

@   IN  SOA     ns1.magedu.com.  403868144.qq.com. (

        2016041001

        1H

        10M

        3D

        12H ) 

   IN  NS      ns1.magedu.com. 

2 IN  PTR     ns1.magedu.com. 

3 IN  PTR     ns2.magedu.com.

4 IN  PTR     mx1.magedu.com.

5 IN  PTR     mx2.magedu.com.

2 IN  PTR     www.magedu.com. 

2 IN  PTR     bbs.magedu.com.

2 IN  PTR     bbs.magedu.com.


第三步:修改反向区域数据库文件的权限为其它不可读,属组为named


]# chgrp named 172.18.11.2.zone

]# chmod o= 172.18.11.2.zone 


第四步:检查语法

]# named-checkconf

]# named-checkzone 11.18.172.in-addr.arpa /var/named/172.18.11.zone

注意:反向区域名一定要与在/etc/named.rfc1912.zones文件中的zone定义的反向区域名一致;但zone中的区域名后的.可省略。


第五步:让服务器重载配置文件和区域数据文件

]# rndc reload


第六步:测试DNS服务器是否能反向解析


]# dig -x 172.18.11.2



以上配置为主DNS服务器配置过程。


配置从DNS服务器:

首先配置正向区域的从,再配置反向区域的从。

在从服务器上配置:

第一步:定义从区域

]# vim /etc/named.conf

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

dnssec-enable no

//allow-query  { localhost; };


第二步:
配置从服务器为正向区域的DNS服务器

]# vim /etc/named.rfc1912.zones


zone "magedu.com"       IN {    

        type slave;

        file "slaves/magedu.com.zone";

        masters { 172.18.11.2; }

};


第三步:检查语法

]# named-checkconf


第四步:在主服务器上配置

]# vim /var/named/magedu.com.zone

ns2     IN      A       172.18.11.3


提示:添加一条ns记录,例如可以为NS2,这个名字和从服务器的自身主机名没关系,但是NS2要有一条A记录,指向从服务器主机即172.18.11.3是从服务器的IP地址;这条记录必须得有。


第五步:检查主服务器区域文件语法

]# named-checkzone magedu.com /var/named/magedu.com.zone


第六步:重载配置文件

]# rndc reload


第七步:在从服务器上操作,重载配置文件

]# rndc reload


测试从DNS服务器正向解析

]# dig -t A www.magedu.com @172.18.11.3 


验证从服务器能同步到正向解析数据库文件


在主服务器区域文件中新增一条pop3的记录,并递增序列号;

2016041003:系列号递增;

pop3    IN      A       172.18.11.6:添加pop3的A记录;

]# rndc reload


在从服务器上查看是否收到更新的区域数据库文件

]# dig -t A pop3.magedu.com @172.18.11.3


配置从服务器为反向区域的DNS服务器

第一步:在从服务器上主配置文件中添加反向区域

]# vim /etc/named.rfc1912.zones


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

        type slave;

        file "slaves/172.18.11.zone";

        masters { 172.18.11.2; };

};


第二步:检查主配置文件语法

]# named-checkconf


第三步:在主服务器的反向区域数据库文件中要确保有一条NS记录必须要有,还可以有ns对应的ptr记录

]# vim /var/named/172.18.11.zone


2016041002

    IN  NS      ns2.magedu.com.

3   IN  PTR     ns2.magedu.com.


第四步:检查反向区域文件语法

]# named-checkzone 11.18.172.in-addr.arpa /var/named/172.18.11.zone


第五步:重载

]# rndc reload


第六步:从服务器重载

]# rndc reload


查看从服务器是否同步到反向解析数据库文件

]# ls /var/named/slaves


测试从DNS服务器反解析

]# dig -x 172.18.11.2 @172.18.11.3


子域授权方法:

第一步:在父域的主DNS服务器上的正向区域数据库文件/var/named/magedu.com.zone上授权子域

]# vim /var/named/magedu.com.zone


2016041004

ops     IN      NS      ns1.ops

ns1.ops IN      A       172.18.11.4


第二步:重载

]# rndc reload


在子域服务器(172.18.11.4)上操作

第一步:编辑主配置文件

]# vim /etc/named.conf


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

dnssec-enable no

//allow-query  { localhost; };


第二步:启动named程序

]# systemctl start named.service


第三步:配置172.18.11.4的服务器为ops.magedu.com子域的主服务器

]# vim /etc/named.rfc1912.zones


zone "ops.magedu.com" IN {

    type master;

    file "ops.magedu.com.zone";

};


第四步:在var/named/目录下创建file中指明的ops.magedu.com.zone正向区域数据库文件

]# vim var/named/ops.magedu.zone


$TTL 3600

$ORIGIN ops.magedu.com.

@   IN  SOA       ns1.ops.magedu.com.   403868144.qq.com. (

        2016041101 

        1H  

        10M 

        1D  

        2H ) 

    IN  NS          ns1 

ns1 IN  A           172.18.11.4

www IN  A           172.18.11.4


第五步:修改正向区域数据库文件权限为其它没有写权限,属组为named

]# chmod o= ops.magedu.zone 

]# chgrp named ops.magedu.zone


第六步:语法检查

]# named-checkzone ops.magedu.com ops.magedu.com.zone


第七步:重载

]# rndc reload


第八步:测试正向解析

]# dig -t A www.ops.magedu.com @172.18.11.4


在子域服务器上定义转发区域:

 第一步:编辑主配置文件

]# vim /etc/named.rfc1912.zones

zone "magedu.com" IN {

    type forward;

    forward only;

    forwaders { 172.18.11.2; 172.18.11.3; };

};


第二步:检查语法

]# named-checkconf


第三步:重载

]# rndc reload


第四步:测试

在父域服务器上解析子域

]# dig -t A www.ops.magedu.com @172.18.11.2


在子域服务上解析父域

]# dig -t A www.magedu.com @172.18.11.4


在子域服务器上定义全局转发:

第一步:编辑主配置文件

]# vim /etc/named.conf

在options段编辑:

forward only;

forwarders { 172.18.11.2; };



第二步:重载

]# rndc reload


第三步:测试baidu

]# dig -t A www.baidu.com @172.18.11.4


安全相关的配置

在子域服务器上,应该仅设定为允许从服务器区域传送

在主服务器上配置:仅允许从服务器区域传送;访问控制列表allow-transfer


]# vim /etc/named.rfc1912.zones

zone "magedu.com" IN {

    type master;

    file "magedu.com.zone";

    allow-transfer { slaves; };

};



在主服务器上配置访问控制列表:

编辑/etc/named.conf配置文件,在options段前添加slaves访问控制列表:

]# vim /etc/named.conf

acl slaves {

        172.18.11.3;

        127.0.0.1;

};


检查语法:

]# named-checkconf


重载:

]# rndc reload


在非从服务器上测试:

]# dig -t axfr magedu.com @172.18.11.2

设置成功。


在从服务器上测试区域传送:

]# dig -t axfr magedu.com @172.18.11.2


在主服务器上测试:

]# dig -t axfr magedu.com @172.18.11.2

]# dig -t axfr magedu.com @127.0.0.1


均显示区域传送失败;因为,使用本机172.18.11.2这个地址,在访问控制列表中没有定义所以不能传送;而127.0.0.1这个地址即使在访问控制列表中定义了,但因为没有在options段定义监听的地址,所以也不能进行区域传送;


修改主服务器配置文件/etc/named.conf,

]# vim /etc/named.conf

添加监听127.0.0.1:

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

重启服务:

]# systemctl restart named.service

即可;


配置访问控制列表中的递归,仅允许为本地客户端做递归


修改主服务器配置文件/etc/named.conf,添加递归访问控制列表;

]# vim /etc/named.conf

添加:

acl mynet {

        127.0.0.0/8;

};

仅允许本地127网段做递归查询;

(把recursion yes;改为:)allow-recursion { mynet; };


重载:

]# rndc reload


因此,使用其它主机做递归都拒绝,如使用子域服务器递归查询baidu

]# dig -t A www.baidu.com @172.18.11.4

递归查询失败;


当在主服务器配置文件/etc/named.conf,添加172.18.11.4到递归访问控制列表即可实现递归;

]# vim /etc/named.conf

acl mynet {

        172.18.11.4/16;

        127.0.0.0/8;

};


重载:

]# rndc reload


此时,使用子域服务器递归查询baidu;

]# dig -t A www.baidu.com @172.18.11.4

成功递归;


对于从服务器,也要修改主配置文件/etc/named.rfc1912.zones,设定区域传送和递归查询的访问控制列表;

]# vim /etc/named.rfc1912.zones

zone "magedu.com"  IN {

        type slave;

        file "slaves/magedu.com.zone";

        masters { 172.18.11.2; };

        allow-transfer { none; };

        allow-update { none; }; 禁止进程动态更新,跟区域传送没关系;

};

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

        type slave;

        file "slaves/172.18.11.zone";

        masters { 172.18.11.2; };

        allow-transfer { none; };

        allow-update { none; };

};


在子域服务器上测试是否能通过从服务器对magedu.com域进行区域传送;

]# dig -t axfr magedu.com @172.18.11.3

显示失败;


]# dig -t axfr ops.magedu.com @172.18.11.4:子域可以为自己进行传送区域;因为子域没有做访问控制;


正常情况下,每一个域名服务器,只要没有从服务器,allow-transfer都应该是none,有从服务器,allow-transfer应该仅指向从服务器;而且每一个区域都应该是allow-update设为none,除非使用DDNS。










本文转自 crystaleone 51CTO博客,原文链接:http://blog.51cto.com/linsj/1764741,如需转载请自行联系原作者

网友评论

登录后评论
0/500
评论
余二五
+ 关注