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。