下面介绍的是DNS、转发器、Bind
一、DNS
1、DNS基础
对于一个解析区域,我们可以把名称域比作一棵倒置的树,其中有根域、顶级域。其中,顶级域又分为三类,即组织域、地理域、反向域。
DNS名称解析方式:正向解析、反向解析(所用的数据库不同)。正向解析,即名称到IP地址的解析;反向解析,即IP地址到名称的解析。
DNS查询类型:递归查询、迭代查询。
DNS服务器的分类:主DNS服务器、从DNS服务器、缓存DNS服务器。
区域数据传送的两种类型:全量传送、增量传送。
FQDN:完全合格域名
2、DNS的查询请求流程:
Client --> hosts --> Local Cache --> first DNS(recursive) -->
--> 服务器本地缓存或本地数据库中有结果,直接响应客户端;
--> ROOT(iteration) --> TLD_DNS_SERVER --> 二级域DNS_SERVER --> ... --> ns.xxx. --> 解析结果;
3、主从DNS服务器数据库的四部分:
(1)、序列号(serial) ---------数据库的版本号,数据库变化则自增
(2)、刷新时间间隔(refresh) --------------到主DNS服务器上检查序列号的变化更新情况的时间间隔
(3)、重试时间间隔(retry) ----------------同步数据库失败,再次发起尝试请求的时间间隔
(4)、过期时间(expire) ---------------接不上主DNS服务器时,从DNS服务器多久后停止服务
(5)、否定答案的缓存时长(minimal TTL)
4、资源记录(RR)
资源记录,就是存放于区域数据库文件中,用于解析工作的数据。
常见的【7种资源记录】类型为:A、AAAA、PTR、SOA、NS、CNAME、MX,具体解释如下:
(1)、SOA -------------起始授权记录
任何一个数据库中,有且仅有一条,必须是第一条。
(2)、A ------------主机记录(IPV4)
标识完全合格域名,到IP地址的映射关系。
(3)、AAAA ------------主机记录(IPV6)
标识完全合格域名,到IPV6地址的映射关系
(4)、PTR ----------------指针记录
标识IP地址,到完全合格域名的映射关系。
(5)、NS ---------------名称服务器记录
标明当前域中所有的DNS服务器。
(6)、CNAME -----------别名记录
标识从完全合格域名,到完全合格域名的映射关系。
(7)、MX ---------------邮件交换器记录
标识域中邮件服务器的主机名,从域名映射到完全合格域名
5、七种资源记录的格式(在区域数据库中):
资源记录格式:name|FQDN [TTL] IN RR_TYPE VALUE
(1)、SOA资源记录
name ------------当前域的域名(qhdlink.com.)/@
value(三类):
1)、当前区域的主DNS服务器的FQDN(ns1.qhdlink.com.)
2)、当前区域数据库的管理员的邮件地址(mailmaster.qhdlink.com.)
3)、主从服务器进行区域传送的相关时间定义及否定答案的统一TTL
(Serial 1H 15M 1W 1D)
(
Serial; --------------序列号
1H;refresh -----------刷新时间间隔
15M;retry --------------------重试时间间隔
1W;expire --------------------过期时间
1D);minimal ttl -----------否定答案的缓存时长
示例:
$TTL 86400
qhdlink.com. 86400 IN SOA ns1.qhdlink.com. master.qhdlink.com.(
2017081001;serial
1H;refresh
15M;retry
1W;expire
1D);ttl
(2)、NS记录
每个域中,可以有多条NS记录,但每一条NS记录必须对应一个A记录。
name ------------当前域的域名
value -----------当前区域内某【DNS服务器】的完全合格域名(ns.qhdlink.com.)
示例:
qhdlink.com. 86400 IN NS ns1.qhdlink.com.
qhdlink.com. 86400 IN NS ns2.qhdlink.com.
$ORIGIN qhdlink.com.
$TTL 86400
IN NS ns1
IN NS ns2
(3)、MX记录
一个域中,可以有多个MX记录,但每个MX记录必须与一条A对应。
name -------------当前域的域名;
value ------------当前域中某有效的【邮件服务器】的主机名
示例:
qhdlink.com. 86400 IN MX 10 mail1.qhdlink.com.
$ORIGIN qhdlink.com.
$TTL 86400
@ IN MX 20 mail2
(4)、A记录
name --------------域中某主机的FQDN或主机名称
value --------------与主机名对应的IPv4地址
示例:
www.qhdlink.com. 86400 IN A 192.168.1.1
www.qhdlink.com. 86400 IN A 192.168.1.2
www.qhdlink.com. 86400 IN A 192.168.1.3
www.qhdlink.com. 86400 IN A 192.168.1.4
$ORIGIN qhdlink.com.
$TTL 86400
www IN A 192.168.1.1
(5)、CNAME记录
name -------------别名的FQDN或简单的名称
value --------------真正的名称的FQDN或其简单名称
示例:
web.qhdlink.com. 86400 IN CNAME www.qhdlink.com.
$ORIGIN qhdlink.com.
$TTL 86400
web IN CNAME www
(6)、AAAA记录 -------------与A一致
name --------------域中某主机的FQDN或主机名称
value --------------与主机名对应的IPv4地址
示例:
ftp.qhdlink.com. 86400 IN AAAA ::1
(7)、PTR记录
name -----------将IP地址反过来写,再加标准后缀。(1.72.16.172.in-addr.arpa.)
value --------------域中某主机的FQDN
示例:
1.72.16.172.in-addr.arpa. 86400 IN PTR www.qhdlink.com.
$ORIGIN 16.172.in-addr.arpa.
$TTL 86400
1.72 IN PTR www.qhdlink.com.
6、DNS配置(正反向区域配置)
(1)、正向区域配置
正向区域配置,包括三部分,即:定义区域、创建区域数据文件、重载区域和配置文件。具体解释如下:
1)、定义区域的方式-----------/etc/named.rfc1912.zones
zone "ZONE_NAME" IN {
type {master|slave|forward|hint};
file "ZONE_NAME.zone";
};
例:zone "qhdlink.com" IN {
type master;
file "qhdlink.com.zone";
};
2)、创建区域数据文件 -----------/var/named/qhdlink.com.zone
在创建区域数据文件时,需要对ZONE_NAME.zone权限进行修改
# chown :named qhdlink.com.zone
# chmod o-r qhdlink.com.zone
例:
$ORIGIN qhdlink.com.
$TTL 86400
@ IN SOA ns1.qhdlink.com. admin.qhdlink.com. (
2017081001;serial
1H;refresh
15M;retry
1W;expire
1D);TTL
IN NS ns1.qhdlink.com.
MX 10 mx1.qhdlink.com.
ns1.qhdlink.com. IN A 172.16.72.1
www IN A 172.16.100.1
www IN A 172.16.100.2
www IN A 172.16.100.3
web IN CNAME www
mx1 IN A 172.16.100.4
3)、重载区域和配置文件
# named-checkconf -----------检测named.conf语法
# named-checkzone "ZONE_NAME" FILE_NAME ---------检测域名、区域数据库文件语法
# rndc reload ------------重载配置文件
# systemctl reload named.service
# service named reload ------------CentOS6
(2)、反向区域配置
反向区域配置,包括三部分,即:定义区域、创建区域数据文件、重载区域和配置文件。具体解释如下:
1)、定义区域 -----------------/etc/named.rfc1912.zones
zone "ZONE_NAME" IN {
type {master|slave|forward|hint};
file "ZONE_NAME.zone";
};
例:zone "16.172.in-addr.arpa" IN {
type master;
file "172.16.zone";
};
2)、创建数据库文件 -------------/var/named/172.16.zone
修改权限:
# chown :named 172.16.zone
# chmod o-r 172.16.zone
例:
$ORIGIN 16.172.in-addr.arpa.
$TTL 86400
@ IN SOA ns1.qhdlink.com. admin.qhdlink.com. (
2017081001;serial
1H;refresh
15M;retry
1W;expire
1D);TTL
IN NS ns1.qhdlink.com.
1.72 IN PTR ns1.qhdlink.com.
1.100 IN PTR www.qhdlink.com.
2.100 IN PTR www.qhdlink.com.
3.100 IN PTR www.qhdlink.com.
4.100 IN PTR mx1.qhdlink.com.
3)、重载区域和配置文件
# named-checkconf -----------检测named.conf语法
# named-checkzone "ZONE_NAME" FILE_NAME ---------检测域名、区域数据库文件语法
# rndc reload ------------重载配置文件
# systemctl reload named.service
# service named reload ------------CentOS6
7、DNS配置(主从服务器) --------------区域级别
配置一个从服务,主要包括两部分,即:定义区域、重载配置文件
(1)、主从服务器定义区域
zone "ZONE_NAME" IN {
type slave;
file "slaves/ZONE_NAME.zone";
masters { MASTER_IP; };
};
例:
zone "qhdlink.com" IN {
type slave;
file "slaves/qhdlink.com.zone";
masters { 172.16.72.1; };
};
(2)、重载配置文件
# named-checkconf
# rndc reload
二、转发器
1、区域转发、全局转发
转发器分为两种,即:区域转发、全局转发。区域转发器是针对于某个特定区域的转发,全局转发针对的是没有定义zone的全部区域。
(1)、区域转发 ------------------/etc/named.rfc1912.zones
例:
zone "baidu.com" IN {
type forward;
forward {first|only};
forwarders { 172.16.72.1; };
};
forward {first|only}中:
first:首先转发,当指定的转发器无响应时,再自行迭代
only:只使用转发器进行转发,不执行自行迭代
(2)、全局转发 -------------------/etc/named.conf
例:
options {
...
forward {first|only};
forwarders { SERVER_IP; };
...
};
2、子域授权
(1)、子域授权
对子域进行授权,只需在父域的区域文件中直接授权即可。在子域的NS服务器上,直接创建子域的区域文件,管理资源记录。
例:
qhdlink.com内容如下:-------------------区域的文件为/var/named/qhdlink.com.zone
tech.qhdlink.com. IN NS ns.tech.qhdlink.com.
ns.tech.qhdlink.com. IN A 172.16.69.1
其子域的授权如下(直接加一个域): ------------------/etc/named.rfc1912.zones
zone "tech.qhdlink.com" IN {
type master;
file "tech.qhdlink.com.zone";
};
(2)、子域的NS服务器解析父域的资源记录步骤: -------------需定义转发器(子 ---> 父)
可以通过区域转发和全局转发,使子域能够通过父域的NS服务器,查找父域中的资源记录。区域转发、全局转发的定义如下:
1)、定义区域转发 ----------------/etc/named.rfc1912.zones
zone "qhdlink.com" IN {
type forward;
forward first;
forwarders { 172.16.72.1; };
};
2)、全局转发 ------------/etc/named.conf
options {
...
forward first;
forwarders { 172.16.72.1; };
...
};
三、Bind
1、Bind配置文件
Bind,实现DNS协议的程序,Bind对应的服务器的主程序为named,named使用的是tcp/udp的53号端口。
Bind的主配置文件为:/etc/named.conf。对于该主配置文件,其注释可以使用单行注释,也可以采用多行注释。同时,该配置文件采用分段配置的方式,其配置文件主要分为6部分,即:访问控制列表段(acl ACL_NAME)、全局选项段(options)、日志配置段(logging)、区域配置段(zone "ZONE_NAME" IN)、视图配置段(view VIEW_NAME)、include包含段(include /PATH/TO/SOME_CONFIG_FILE)。
2、测试工具:dig, host, nslookup
bind-utils通用工具包中,包含了dig、 host、 nslookup、rndc等测试工具。
(1)、dig命令 ------------DNS查询
格式:dig [@Server] [-t RR_TYPE] [query_options]
常用选项:
@Server -----------此次的查询的DNS服务器,若没有,就读取/etc/resolv.conf中的nameserver配置项
-t RR_TYPE ----------查询请求的资源记录类型
+[no]trace ----------跟踪整个解析过程
+[no]recurse -----------目标DNS服务器递归查询
# dig -x IPADDR -----------反向解析
# dig -t axfr DOMAIN_NAME [@Server] ----------模拟区域传送
(2)、host命令
格式:host [-t RR_TYPE] DOMAIN_NAME SERVER
常用选项:
-t RR_TYPE ----------查询请求的资源记录类型
DOMAIN_NAME -----------域名
SERVER -----------此次的查询的DNS服务器
(3)、nslookup命令 ------DNS查询,多用于windows(交互式)
> server IP_ADDR ----------DNS服务器的IP地址
> set q=RR_TYPE ----------资源记录的类型
> QUERY_NAME -------------------解析的主机名
> set type=RR_TYPE ----------资源记录的类型
(4)、rndc命令 ----------------远程名称域控制器、DNS服务器端的控制命令,tcp/953
# rndc status -----------服务器端的运行状态
# rndc reload -----------服务器端程序重载配置为文件和区域文件
3、bind安全配置,acl访问控制列表
(1)、bind的四个acl访问控制列表,如下:none、any、local、localnet。
(2)、acl语法: ------------使用前,确保已定义
acl acl_name {
[!] ip;
[!] network/prefix;
};
例:
acl mynet {
172.16.0.0/16;
127.0.0.1;
! 172.16.100.100;
};
4、定义视图
view VIEW_NAME {
match_clients { acl; };
zone
zone
zone
...
};
视图配置示例:--------------定义视图后,所有zone必须定义如视图内。
view intranet {
match-clients { mynet; };
zone "." IN {
type hint;
file "named.ca";
};
zone "qhdlink.com" IN {
type master;
file "qhdlink.com.intra.zone";
allow-query { mynet; };
allow-update { none; };
allow-transfer { none; };
};
};
view internet {
match-clients { any; };
zone "." IN {
type hint;
file "named.ca";
};
zone "qhdlink.com" IN {
type master;
file "qhdlink.com.inter.zone";
allow-update { none; };
allow-transfer { none; };
};
};