BIND提供将域名转换为IP地址的功能,是一款开源软件。BIND是DNS(DomainNameSystem)协议的参考实施方案,但因其高可靠性,广泛的应用于商用环境。BIND的全称是 “Berkeley Internet Name Domain”。
在这里介绍安装及设定”主DNS服务器”的方法。参考URL如下。
安装BIND9
BIND安装包可以直接使用dnf命令进行安装,执行命令如下。
# dnf install bind bind-utils -y
完成安装之后,执行下面的命令确认BIDN的版本。
# named -v
执行结果如下。
BIND 9.16.23-RH (Extended Support Version)
启动BIND服务
安装BIND之后,需要启动BIND服务并使其在OS启动时自动启动,这样就避免每次都手动启动。接下来使用下面的命令启动BIND。
# systemctl start named
执行下面的命令确认服务状态。
# systemctl status named
当named服务正常运行时的结果如下。
确认安装后的BIND能够正常启动之后,执行下面的命令激活开机自动启动。
# systemctl enable named
确认开机自启的状态,执行下面的命令。
# systemctl is-enabled named
输出结果为enalbe时,BIND的开机自启已激活。
enabled
设定BIND
BIND的默认配置文件为 “named.conf”,被保存于 “/etc” 目录下,使用自己喜欢的编辑器打开 “/etc/named.conf” 文件,注释掉下面的2行,让BIND监听在所有的IP地址上。
# vi /etc/named.conf
# listen-on port 53 { 127.0.0.1; };
# listen-on-v6 port 53 { ::1; };
重启BIND进程之后,确认53端口(DNS的默认监听端口)的监听情况。
# systemctl restart naemd
# ss -ntpl | grep ':53'
如下,可确认到在所有IP地址上监听53端口。
然后在配置文件中设定,哪些计算机可以使用该DNS服务进行域名查询(allow-query参数),给哪些计算机(Slave DNS服务器)可以传送Zone文件内容(allow-transfer参数)。192.168.64.0/24是本地网络的CIDR,既仅接收从本地网络计算机的DNS域名解析请求。
allow-query { localhost;192.168.64.0/24; };
allow-transfer { 192.168.64.0/24; };
创建BIND Zone文件
DNS 有2种解析方法可将 域名 与 IP地址 联系起来,正向查找和反向查找。反向解析的PTR记录经常用做邮件服务器接收邮件之后检查发送邮件服务器身份,以此确定”垃圾邮件”。
接下来要在 “named.conf “文件中为sys-blog.locla域添加正向和反向条目。编辑 /etc/named.conf,添加以下配置。
# vi /etc/named.conf
zone "sys-blog.local" IN {
type master;
file "sys-blog.local.zone";
allow-update { none; };
};
zone "64.168.192.in-addr.arpa" IN {
type master;
file "64.168.192.in-addr.arpa.zone";
allow-update { none; };
};
正向解析的设定内容如下,反向解析是指定文件不同,需注意的是必须 “in-addr.arpa”。
- sys-blog.loca: 域名
- file: master是指定sys-blog.local zone(区域)的主DNS为该服务器
- file: 指定zone文件为sys-blog.local.zone,保存在 directory参数 /var/named 目录下
- allow-update: none,因为该服务器是主DNS
在 /var/named 目录下,创建在上面指定的2个zone文件,并添加内容。
正向解析的zone文件名为 sys-blog.local.zone。
# vi /var/named/sys-blog.local.zone
$TTL 86400
@ IN SOA dns001.sys-blog.local. root.sys-blog.local. (
2023010700 ; serial number
3600 ; refresh period
1800 ; retry period
604800 ; expire time
43200 ; minimum TTL
)
;Name Server Information
@ IN NS dns001.sys-blog.local.
;IP address of Name Server
dns001 IN A 192.168.64.157
ad001 IN A 192.168.64.148
反向解析的zone文件名为 “64.168.192.in-addr.arpa.zone”。
# vi /var/named/sys-blog.local.zone
$TTL 86400
@ IN SOA dns001.sys-blog.local. root.sys-blog.local. (
2023010700 ; serial number
3600 ; refresh period
1800 ; retry period
604800 ; expire time
43200 ; minimum TTL
)
;Name Server Information
@ IN NS dns001.sys-blog.local.
;PTR Record IP address to HostName
157 IN PTR dns001.sys-blog.local.
148 IN PTR ad001.sys-blog.local.
关于在zone文件里指定参数,参照 在 BIND DNS 服务器中配置区。
至此BIND的配置已完成,接下来检证配置文件的内容是否正确,并重启BIND反应设定。
# named-checkconf
# systemctl restart named
# systemctl status named
区域文件里的SOA
每个zone文件里应定义SOA(Start of Authority)。
$TTL 3600 ; 1 hour
@ IN SOA ns1.sys-blog.local. hostmaster.sys-blog.local. (
2024010101 ; serial number
1d ; refresh period
3h ; retry period
3d ; expire time
3h ) ; minimum TTL
区域文件顶部的$TTL是每条记录的生命周期。当客户端检索该区域的信息时,指定可在缓存中保留多长时间。
SOA记录是对整个区域的设置,对于括号前的两个FQDN,第一个是主服务器的FQDN,第二个是该区域管理员的电子邮件地址(将@转换为.),在这里sys-blog.local区域的管理员邮箱为hostmaster@sys-blog.local。
参数 | 内容 |
---|---|
serial number | 区域的版本信息,除非更新该值(应大于原值),否则区域传送将无法正确执行。 |
refresh period | 从服务器向主服务器询问是否有更新信息的时间间隔。 |
retry period | 在refresh period内从服务器与主服务器之间无法通信时,到下一次重试的时间。 |
expire time | 从服务器的补助区域信息的有效时间。如果主服务器宕机的时间超过这个时间,从服务器的补助区域信息将被禁用。 |
minimum TTL | 也被称为Negative cache TTL。指定缓存不存在的域名信息的时长。当向DNS服务器查询不存在的域名时,返回状态为MXDOMAIN的响应。 |
检证Zone文件
登录本地系统之后,需要修改 “/etc/resolv.conf” 文件,将主DNS服务器指定为在上面配置的服务器。
# vi /etc/resolv.conf
nameserver 192.168.64.157
然后使用以下命令验证正向解析,DNS服务器将会返回域名 dns001.sys-blog.local 的IP地址。
# dig dns001.sys-blog.local
最后使用以下命令验证反向解析,DNS服务器将会返回 192.168.64.157的域名。
# dig -x 192.168.64.157
现在已经确认,正向和反向解析都正常,我们在RockyLinux9服务器上安装及配置了BIND9。