一、配置解析一个正向区域:
以bucktan.com域为例:
1.1 定义区域
在主配置文件中(/etc/named.conf)或主配置文件辅助配置文件(/etc/named.rfc1912.zones)中实现;
zone "ZONE_NAME" IN {
type {master|slave|hint(根服务器)|forward(转发)};
file "ZONE_NAME.zone";
};
注意:区域名字即为域名;
eg:zone "bucktan.com" IN {
type master;
file "bucktan.com.zone";
};
1.2建立区域数据文件(主要记录为A或AAAA记录)
在/var/named目录下建立区域数据文件;
文件为:/var/named/bucktan.com.zone
eg:$TTL 3600
$ORIGIN bucktan.com.
@ IN SOA ns1.bucktan.com. nsadmin.bucktan.com. (
2018010109
1H
10M
1W
1D )
@ IN NS ns1
ns1 IN A 172.18.26.7
www IN A 172.18.26.7
web IN CNAME www
权限及属组修改:
# chgrp named /var/named/bucktan.com.zone
# chmod o= /var/named/bucktan.com.zone
eg:-rw-r-----. 1 root named 362 Apr 16 18:11 bucktan.com.zone
检查语法错误:
# named-checkzone ZONE_NAME ZONE_FILE
# named-checkconf
1.3让服务器重载配置文件和区域数据文件
# rndc reload 或
# systemctl reload named.service
注:1、在解析时注意修改区域数据文件的权限,因为在解析时是由named用户去解析的且权限最好为640
2、在上述操作完全正常的情况下如果不能正常解析,可以查看配置文件(/etc/named.conf)中监听是否正确,在这里注意如果只监听(通信)某一个主机,则可添加它的ip地址,如果要监听所有的(即与所有的主机通信),则可以将其注释掉。
3、在学习中,建议关闭dnssec
dnssec-enable no;
dnssec-validation no;
dnssec-lookaside no;
与别的主机通信时,注意要注释掉//allow-query { localhost; };
4、如果自身是不能解析,就检查dns配置文件(/etc/resolv.conf)设置为自己的主机,在实际中设置为可用的dns服务即可
二、配置解析一个反向区域
2.1定义区域
在主配置文件中或主配置文件辅助配置文件中实现;
zone "ZONE_NAME" IN {
type {master|slave|hint|forward};
file "ZONE_NAME.zone";
};
eg:zone "26.18.172.in-addr.arpa" IN {
type master;
file "172.18.26.7.zone";
};
注意:反向区域的名字
反写的网段地址.in-addr.arpa
如:100.16.172.in-addr.arpa
2.2定义区域解析库文件(主要记录为PTR)
示例,区域名称为26.18.172.in-addr.arpa;
eg:$TTL 3600
$ORIGIN 26.18.172.in-addr.arpa.
@ IN SOA ns1.bucktan.com nsadmin.bucktan.com. (
2018010203
1H
10M
1W
12H )
IN NS ns1.bucktan.com.
7 IN PTR ns1.bucktan.com.
8 IN PTR ns2.bucktan.com.
9 IN PTR new.bucktan.com.
10 IN PTR bbs.bucktan.com.
权限及属组修改:
# chgrp named /var/named/172.16.100.zone
# chmod o= /var/named/172.16.100.zone
eg:-rw-r-----. 1 root named 408 Apr 16 18:38 172.18.26.7.zone
检查语法错误:
# named-checkzone ZONE_NAME ZONE_FILE
# named-checkconf
2.3让服务器重载配置文件和区域数据文件
# rndc reload 或
# systemctl reload named.service
注:反向区域解析跟正向的一样要注意
三、主从服务器:
注意:从服务器是区域级别的概念;主从结构当中,它只是区域级别的概念,如果一台主服务器上面有三个区域,
他们都是主的,如果配置一台服务器做他的从服务器时,是相对于它的某个区域配置的,而不是相对于整台服务器配置的,所以,它如果是第一个区域的从,那么在从服务器上它只有第一个区域的副本,如果想成为三个区域的从,那么三台都要配置。
如果一台服务器它既是正向的主,又是反向的主,它既提供了正向区域的解析又提供了反向区域的解析,那么这个时候从服务器如果只配置了正向区域的从,那么反向区域跟他是没有关系的,就不能解析反向区域,所以,如果要让一台服务器既是正向的也是反向的解析,那么它们就要分别配置。
复制还可以级联,就是第二台服务器可以去主服务器复制,第三台也可作为第二台的从服务器,从而复制
配置一个从区域:(换一台主机)
On Slave
(1) 定义区域
定义一个从区域;
zone "ZONE_NAME" IN {
type slave;
file "slaves/ZONE_NAME.zone";
masters { MASTER_IP; };
};
配置文件语法检查:named-checkconf
eg:zone "bucktan.com" IN {
type slave;
file "slaves/bucktan.com.zone";
masters { 172.18.26.7; };
};
(2) 重载配置
rndc reload
systemctl reload named.service
注:/var/named/slaves:此目录专用于从服务器从主服务器那里同步的文件,需要自动的创建文件时使用的。
On Master
(1) 确保区域数据文件中为每个从服务器配置NS记录,并且在正向区域文件需要每个从服务器的NS记录的主机名配置一个A记录,且此A后面的地址为真正的从服务器的IP地址;
注意:时间要同步;
ntpdate命令;
eg:$TTL 3600
$ORIGIN bucktan.com.
@ IN SOA ns1.bucktan.com. nsadmin.bucktan.com. (
2018010109
1H
10M
1W
1D )
@ IN NS ns1
@ IN NS ns2##此处添加了一个NS记录
ns1 IN A 172.18.26.7
ns2 IN A 172.18.26.8##此处添加了一个A记录
www IN A 172.18.26.7
web IN CNAME www
只要有主从,那么每更改一次都要改序列号
主从服务中应该注意的事项,和遇到问题时的解决办法:
1.只要有主从,那么每更改一次都要改序列号
2、在学习中,如果不能传送文件时,可以检查防火墙是否关闭,同时也可以通过日志文件(/var/log/messages)查看状况
3、其它的注意的就跟正向区域解析中注意的事项一样
4、在通信连接成功之后要注意时间要同步,可用ntpdate命令。
四、子域授权:
正向解析区域授权子域的方法:定义一个子域
ops.bucktan.com. IN NS ns1.ops.bucktan.com.
ops.bucktan.com. IN NS ns2.ops.bucktan.com.
ns1.ops.magedu.com. IN A IP.AD.DR.ESS
ns2.ops.magedu.com. IN A IP.AD.DR.ESS
eg:@ IN NS ns2
ops IN NS ns3.ops.bucktan.com. ##此为添加的三级域域名
ns1 IN A 172.18.26.7
ns2 IN A 172.18.26.8 ###此为三级域ip
ns3.ops IN A 172.18.26.20
注:1、在父域里添加一个NS记录以及A记录,如上
2、子域要用另一个主机(ip),定义一个子域方法跟定义一个正向解析区域一样,
eg:定义区域
zone "ops.bucktan.com" IN {
type master;
file "ops.bucktan.com.zone";
};
定义区域解析库文件(文件在/var/named/目录下且名字为ops.bucktan.com.zone)
$TTL 3600
$ORIGIN ops.bucktan.com.
@ IN SOA ns.ops.bucktan.com. nsadmin.ops.bucktan.com. (
2018010301
1H
10M
1W
10H )
IN NS ns1
ns1 IN A 172.18.26.20
www IN A 172.18.26.20
web IN CNAME www
五、定义转发:
注意:被转发的服务器必须允许为当前服务做递归;
5.1 区域转发:仅转发对某特定区域的解析请求;
定义方式:
zone "ZONE_NAME" IN {
type forward;
forward {first|only};
forwarders { SERVER_IP(转发器); };
};
first:自己解析不了就首先转发;转发器不响应时,自行去迭代查询;
only:只转发;
对于子域而言,它不知道父域在哪里就可以定义一个区域转发
eg:zone "bucktan.com" IN {
type forward;
forward only;
forwarders { 172.18.26.7; 172.18.26.8; };
};(注:这是在子域的主机172.18.26.20中配置文件定义的)
注:1、父域能解析子域,子域也能解析父域。
子域不能上网的情况下要解析外网就不行,但如果父域主机能上网,这时子域的请求就会转发给父域达到能解析的要求
5.2全局转发:针对凡本地没有通过zone定义的区域查询请求,通通转给某转发器;
在配置文件中编辑/etc/named.conf
在options中加如下内容:
options {
... ...
forward {only|first};
forwarders { SERVER_IP; };
.. ...
};
六、bind中的安全相关的配置:
acl(访问控制列表);把一个或多个地址归并一个命名的集合,随后通过此名称即可对此集合内的所有主机实现统一调用;
acl acl_name {
ip;
net/prelen(掩码);
};
注:也是将此加在配置文件/etc/named.conf中
示例:
acl mynet {
172.18.0.0/16;
127.0.0.0/8;
};
bind有四个内置的acl
none:没有一个主机;
any:任意主机;
local:本机;
localnet:本机所在的IP所属的网络;
访问控制指令:
allow-query {}; 允许查询的主机;白名单;
注:这是允许那些主机可以来查询自己
allow-transfer {}; 允许向哪些主机做区域传送;默认为向所有主机;应该配置为仅允许从服务器(为了安全)
注:以上两个可以写在全局和区域中,只是作用范围不同而已
allow-recursion {}; 允许哪些主机向当前DNS服务器发起递归查询请求;
一般只允许本地的做递归查询
allow-update {}; DDNS,允许动态更新区域数据库文件中内容;
一般为none
eg:allow-recursion { mynet }