正向解析区域、反向解析区域;主/从;子域;基本安全控制
一、背景:
DNS服务器所提供的服务是完成将主机名和转换为IP地址的工作。为什么需要将主机名转换为IP地址的工作呢?这是因为,当网络上的一台客户机访问某一服务器上的资源时,用户在浏览器地址栏中输入的是人类便于识记的主机名和域名。而网络上的计算机之间实现连接却是通过每台计算机在网络中拥有的惟一的IP地址来完成的,这样就需要在用户容易记忆的地址和计算机能够识别的地址之间有一个解析,DNS服务器便充当了地址解析的重要角色。
正向解析就是通过域名解析到IP地址而反向解析就是通过IP能解析到域名。
二、正向解析区域、反向解析区域
1、配置解析域
配置解析一个正向区域:
以magedu.com域为例:
(1) 定义区域
在主配置文件中或主配置文件辅助配置文件中实现;
zone "ZONE_NAME" IN {
type {master|slave|hint|forward};
file "ZONE_NAME.zone";
};
注意:区域名字即为域名;
(2) 建立区域数据文件(主要记录为A或AAAA记录)
在/var/named目录下建立区域数据文件;
文件为:/var/named/magedu.com.zone
$TTL 3600
$ORIGIN magedu.com.
@ IN SOA ns1.magedu.com. dnsadmin.magedu.com. (
2017010801
1H
10M
3D
1D )
IN NS ns1
IN MX 10 mx1
IN MX 20 mx2
ns1 IN A 172.16.100.67
mx1 IN A 172.16.100.68
mx2 IN A 172.16.100.69
www IN A 172.16.100.67
web IN CNAME www
bbs IN A 172.16.100.70
bbs IN A 172.16.100.71
权限及属组修改:
# chgrp named /var/named/magedu.com.zone
# chmod o= /var/named/magedu.com.zone
检查语法错误:
# named-checkzone ZONE_NAME ZONE_FILE
# named-checkconf
(3) 让服务器重载配置文件和区域数据文件
# rndc reload 或
# systemctl reload named.service
配置解析一个反向区域
(1) 定义区域
在主配置文件中或主配置文件辅助配置文件中实现;
zone "ZONE_NAME" IN {
type {master|slave|hint|forward};
file "ZONE_NAME.zone";
};
注意:反向区域的名字
反写的网段地址.in-addr.arpa
100.16.172.in-addr.arpa
(2) 定义区域解析库文件(主要记录为PTR)
示例,区域名称为100.16.172.in-addr.arpa;
$TTL 3600
$ORIGIN 100.16.172.in-addr.arpa.
@ IN SOA ns1.magedu.com. nsadmin.magedu.com. (
2017010801(序列号)
1H (刷新时间间隔)
10M (重试时间间隔)
3D (否定答案的生存时长)
12H (过期时长))
IN NS ns1.magedu.com.
67 IN PTR ns1.magedu.com.
68 IN PTR mx1.magedu.com.
69 IN PTR mx2.magedu.com.
70 IN PTR bbs.magedu.com.
71 IN PTR bbs.magedu.com.
67 IN PTR www.magedu.com.
权限及属组修改:
# chgrp named /var/named/172.16.100.zone
# chmod o= /var/named/172.16.100.zone
检查语法错误:
# named-checkzone ZONE_NAME ZONE_FILE
# named-checkconf
(3) 让服务器重载配置文件和区域数据文件
# rndc reload 或
# systemctl reload named.service
三、主,从DNS服务器配置
假设我们以上配置的主机为主DNS服务器,在另一台主机配置从服务器。
从服务器是区域级别的概念;所以是在zone定义的type为slave;所以可以互为主从,例如一个正向解析的DNS服务器A的从服务器是DNS服务器B。DNS服务器B是反向解析的主服务器,DNS服务器A是反向解析的从服务器;
(1)配置从DNS服务器方式
在从DNS服务器上
1)定义区域:
zone "ZONE_NAME" IN {
type slave;
file "slaves/ZONE_NAME.zone"; ----> slaves目录的属主是named,确保数据可以写入;
masters {MASTER_IP;};
};
2) 重载配置
rndc reload
systemctl reload named.service
[root@COS6 ~]# rndc reload
server reload successful
在主DNS服务器上
确保区域数据文件中为每个从服务配置NS记录,并且在正向区域文件需要为每个从服务器的主机名配置一个A记录,且此后A后面的地址为真正的从服务器的IP。
注意:时间要同步;ntpdate命令
主服务器的序列号每次修改都要更新!
[root@COS7 ~]# vim /var/named/flyalways.com.zone
[root@COS7 ~]# cat /var/named/flyalways.com.zone
$TTL 3600
$ORIGIN flyalways.com.
@ IN SOA dns.flyalways.com. dnsadmin.flyalways.com. (
2016011002 -----> 修改序列号
1H
10M
3D
1D )
IN NS dns
IN NS dns2 -----> 添加从服务器的NS记录
IN MX 10 mx1
IN MX 20 mx2
dns IN A 172.16.25.71
dns2 IN A 172.16.25.67 -----> 指明从服务器的地址
mx1 IN A 172.16.25.72
mx2 IN A 172.16.25.73
www IN A 172.16.25.74
web IN A 172.16.25.75
[root@COS7 ~]# named-checkconf
[root@COS7 ~]# named-checkzone flyalways.com /var/named/flyalways.com.zone
zone flyalways.com/IN: loaded serial 2016011002 ----> 序列号已变
OK
[root@COS7 ~]# rndc reload
server reload successful
从服务器一般而言是为了和主DNS服务器一起做负载均衡的。一旦主DNS服务器失效,从DNS服务器也会停止提供服务。
四、子域授权
1、 子域授权就相当于是划片管理,是由上至下的授权。由根开始"."。
例如:.com .net 就是由根授权名称空间,其实就是由.决定要划分什么的名称空间,由它委派子名称空间。
DNS中最重要的就是NS记录,其中每个NS里面的负责人就是SOA,在父域上定义一条NS记录和一条A记录就可以完成子域授权了
.com IN NS wd.com.
wd.com IN A 10.10.10.1
(这就表示在.com这个片里面有一台主机叫叫wd。以后这个.com这一片就归这个wd这台主机来管理了,哪谁是这台主机呢?下面的A记录就给予很明确的答案,10.10.10.1就是管理.com这个片的这台主机)
注意:子域和父域没有必要在同一个网段,只要能够通信就可以了。
正向解析区域授权子域的方法:
ops.magedu.com. IN NS ns1.ops.magedu.com.
ops.magedu.com. IN NS ns2.ops.magedu.com.
ns1.ops.magedu.com. IN A IP.AD.DR.ESS
ns2.ops.magedu.com. IN A IP.AD.DR.ESS
2、定义转发:
注意:被转发的服务器必须允许为当前服务做递归;
(1) 区域转发:仅转发对某特定区域的解析请求;
zone "ZONE_NAME" IN {
type forward;
forward {first|only};
forwarders { SERVER_IP; };
};
first:首先转发;转发器不响应时,自行去迭代查询;
only:只转发;
(2) 全局转发:针对凡本地没有通过zone定义的区域查询请求,通通转给某转发器;
options {
... ...
forward {only|first};
forwarders { SERVER_IP; };
.. ...
};
五、基本安全控制
bind中的安全相关的配置
1、BIND配置文件语法介绍
(1)acl语句
acl 语句的定义和使用
acl 语句给一个地址匹配表赋予了一个象征名称。它的名字来自于地址匹配列表的最基本功能:访问控制表列(ACLs)。
acl:访问控制列表;把一个或多个地址归并一个命名的集合,随后通过此名称即可对此集全内的所有主机实现统一调用;
acl acl_name {
ip;
net/prelen;
};
示例:
acl mynet {
172.16.0.0/16;
127.0.0.0/8;
};
注意:一个地址表名必须首先在acl中定义了,然后才能在别处使用;提前调用是不允许的。
acl acl-name { address_match_list };
bind有四个内置的acl:
any 匹配所有主机
none 不匹配任何主机
ocalhost 匹配主机上所有IPV4的网络接口
localnets 匹配所有IPV4本地网络的主机
2、访问控制指令:
allow-query {}; 允许查询的主机;白名单;
allow-transfer {};
允许向哪些主机做区域传送;默认为向所有主机;应该配置仅允许从服务器;
allow-recursion {}; 允许哪此主机向当前DNS服务器发起递归查询请求;
allow-update {}; DDNS,允许动态更新区域数据库文件中内容;