Debian9 BIND9 文件族详解
先来看下Bind9配置文件族
- -rw-r--r-- 1 root root 3923 Aug 31 03:05 bind.keys
- -rw-r--r-- 1 root root 237 Aug 31 03:05 db.0
- -rw-r--r-- 1 root root 271 Aug 31 03:05 db.127
- -rw-r--r-- 1 root root 237 Aug 31 03:05 db.255
- -rw-r--r-- 1 root root 353 Aug 31 03:05 db.empty
- -rw-r--r-- 1 root root 270 Aug 31 03:05 db.local
- -rw-r--r-- 1 root root 3048 Aug 31 03:05 db.root
- -rw-r--r-- 1 root bind 463 Aug 31 03:05 named.conf
- -rw-r--r-- 1 root bind 217 Dec 17 20:56 named.conf.default-zones
- -rw-r--r-- 1 root bind 164 Dec 17 21:29 named.conf.local
- -rw-r--r-- 1 root bind 890 Dec 16 19:09 named.conf.options
- -rw-r----- 1 bind bind 77 Dec 16 19:09 rndc.key
- -rw-r--r-- 1 root root 0 Dec 17 20:54 zones.rfc1918
下面来简单说明一下这些配置文件:
- named.conf 设置一半的named参数,指向该服务器使用的域数据库
- named.conf.options 全局选项
- db.root 跟服务器指向文件,无需更改
- db.local 区域正解文件,将FQDN--->IP地址
- db.127 区域反解文件,将IP--->FQDN
其主配置文件/etc/named.conf的控制语句
1.Acl 定义IP地址的访问控制列表
2.Control 定义ndc使用的控制通道
3.Include 把其他文件包含到配置文件中
4.Key 定义授权的安全密钥
5.Logging 定义日志写什么,写在哪
6.Options 定义全局配置选项和缺省值
7.Server 定义远程服务器的特征
8.Trunstred-keys 为服务器定义DNSSEC加密秘钥
9.Zone 定义一个区域
初始情况下,该配置文件(/etc/named.conf)内容如下:
zone "." {
type hint;
file "/etc/bind/db.root";
};
zone "localhost" {
type master;
file "/etc/bind/db.local";
};
zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
其中type项的值:
Master:定义为域主服务器
Slave:定义为域辅服务器
Hint:定义为互联网中根域服务器
在Debian系统中,所有Options语句的配置内容,全部转移至named.conf.options中,以下是该文件的默认配置:
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
// forwarders {
// 0.0.0.0;
// };
// If BIND logs error messages about the root key being expired,
// you will need to update your keys. See https://www.isc.org/bind-keys
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
接下来做一个简单的实验,域名a.com,做正向解析,在上手配置之前,一定要知道这些文件互相之间的包含关系,下图可以大致表示
在知道了这个文件关系之后,在进行配置,思路会清晰很多,否则你会不知道将区域配置写在哪里,接下来看一下实验配置
vim /etc/bind/named.conf.default-zones
zone "a.com" {
type master;
file "/etc/bind/db.a.com";
};
这段内容添加在named.conf , named.conf.local , named.conf.default-zones都可以(因为这些主配置文件与其他是包含关系)
cp db.local db.a.com && vim db.a.com
$TTL 604800
@ IN SOA dns.a.com. root.a.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN A 192.168.10.1
a.com. IN NS dns.a.com.
dns IN A 192.168.10.1
a IN A 192.168.10.1
b IN A 192.168.10.2
@ IN A 192.168.10.1 ##如果你的区域数据库中没有这行,那么你就要将下面的主机名写完整,例如:
a.a.com. IN A 192.168.10.1
b.a.com. IN A 192.168.10.2
如果少了红字行的同时,下列行又没有写全,那么就会导致域名无法正常解析,添加补正后通过systemctl restart bind9 重启服务,就可以用客户端解析测试了
Primary Master Server是一个域信息的根本来源,同时负责向辅域名服务器传输包含域信息的数据库,主域名服务器将从本地数据库中读取域数据
Slave Server或Secondary Server,辅域名服务器会使用一个叫做域传输的复制过程,调入其他服务器中的域数据库。通常情况下,数据库是直接从主服务器上传输过来的,但也有可能使用本地硬盘上的cache读取到的,辅域名服务器可以提供必要的冗余服务,所有的辅域名服务器都应该写在这个域的NS记录中
Stealth Server 可以针对一个域的查询返回授权的记录,但是它并没有列在这 个域的 NS 记录里。Stealth 服务器可以用来针对一个域进行集中分发,这样可以不 用在远程服务器上手工编辑这个域的信息了。在这种方式中,一个域的 master 文件在 stealth server上存储的 位置,经常叫做“hidden primary”配置。Stealth 服务器也可以 将域文件在本地做一个拷贝,从而可以在所有官方的域名服务器都不能访问的情况下, 也能更快地读取域的记录
缓存服务器可以将它收到的信息存储下来,并再将其提供给其它的用户进行查询,直 到 这些信息过期。它的配置中没有任何本地的授权域的配置信息。它可以响应用户的请求, 并询问其它授权的域名服务器,从而得到回答用户请求的信息
一台缓存名服务器本身不能进行完全的递归查询。相反,它能从缓存向其它的缓存服务器转发一部分或是所有不能满足的查询,一般被称作转发服务器。
可能会有一个或多个转发服务器,它们会按照顺序进行请求,直到全部穷尽或者请求 得到回答为止。转发服务器一般用于用户不希望站点内的服务器直接和外部服务器通讯的情况下。一个特定的情形是许多 DNS 服务器和一个网络防火墙。服务器不能透过防火墙传 送信息,它就会转发给可以传送信息的服务器,那台服务器就会代表内部服务器询问因特 网 DNS 服务器。使用转发功能的另一个好处是中心服务器得到了所有用户都可以利用的更 加完全的信息缓冲
-------------上文(DNS服务器类型)抄自Centos官网