Rocky Linux 安装 Bind
一、环境
CentOS 7.9
BIND 9.11.4
1. BIND
BIND是Berkeley Internet Name Domain的简称,是一个开源的DNS服务器。 这是一个历史悠久的软件,它诞生于1980年的加州大学伯克利分校。
BIND是一个非常健壮而且稳定的DNS协议的实现,可应用于高负载、高可用性的应用场景。
二、安装和配置
1. 安装
sudo yum install bind bind-utils -y
(1) 查看安装的包
rpm -qa | grep bind
或者
named -v
2. 服务
(1) 启动
sudo systemctl start named
(2) 开机自动启动
sudo systemctl enable named
(3) 查看服务状态
systemctl status named
3. 配置DNS
(1) 打开配置文件
sudo vi /etc/named.conf
(2) 默认情况下BIND仅对locahost的53端口进行监听,其他机器无法访问。
a. 公网访问
如果我们有公网访问这台DNS服务的需求,就需要将BIND服务开放给公网,找到如下两个配置项并将其注释:
#listen-on port 53 { 127.0.0.1; }; #listen-on-v6 port 53 { ::1; };
b. 内网访问
如果我们仅需要在内网访问这台DNS服务,则配置如下:
listen-on port 53 { 127.0.0.1; 10.8.0.1; }; listen-on-v6 port 53 { ::1; };
10.8.0.1为DNS服务在内网中的地址。
(3) 接下来我们需要将需要访问BIND服务的网段添加到BIND服务的白名单中。
在上图中的"options {"那一行之上添加:
# Add: Set ACL entry for local network acl internal-network {
127.0.0.1; 10.8.0.0/24; };
10.8.0.0为公司内网的网段。找到如下配置项:
allow-query { localhost;};
修改为:
allow-query { internal-network; };
10.8.0.0/24为公司内网的网段。
4. 配置防火墙
sudo firewall-cmd --permanent --add-port=53/udp
or
sudo firewall-cmd --permanent --add-service=dns
sudo firewall-cmd --reload
5. 重启服务
sudo systemctl restart named
此时,我们已经完成了BIND服务的配置,但是服务的DNS查询规则是空的。
三、Zone
1. 概念
在Bind9中,Zone这个概念可以理解为Domain(域名)的近义词,Zone与Domain不同的地方在于它的范围更加宽广,比如Domain为"baidu.com",那么Zone也包含"mail.baidu.com"和"cn.mail.baidu.com"这种子域名。
在下面的配置中,我们需要将域名"www.example.com"解析到IPv4地址10.8.0.4,反之亦然。
2. Zone的配置分类
(1) forward map: 用于域名到IP地址的转换,比如baidu.com域名的IP地址是10.242.68.66;
(2) reverse map: 用于IP地址到域名的转换,也就是forward的反操作。
3. lookup文件中的域名类型关键字
A --- A record
NS --- Name Server
MX --- Mail for Exchange
CN --- Canonical Name
SOA – Start of Authority
PTR --- Pointer
3. forward配置
(1) options entry
将以下配置追加到/etc/named.conf文件的末尾:
#Add: Forward map for example.com
zone "example.com" IN { type master; file "example.com.fwd.db"; allow-update { none; };
notify no; };
解释一下各个参数:
example.com:需要解析的域名;
type master:是指Primary DNS;
file "example.com.fwd.db":后者是Forward lookup文件,这个文件需要放在options配置块中的directory所指定的路径下,默认为“/var/named”;
allow-update:设置为none是因为当前DNS为Primary,不需要被更新;
notify no:默认为yes,当Zone的配置信息发生改变的时候,主节点会向从节点发送DNS NOTIFY消息,通知从节点更新自己的Zone配置,如果使用单机则可将该配置改为no。
(2) Forward lookup文件
a. 新建文件:
sudo vi /var/named/example.com.fwd.db
b. 初始化内容:
; base zone file for example.com $TTL 2d ; default TTL for zone $ORIGIN example.com. ; base domain-name @ IN SOA ns1.example.com. root.example.com. ( 2023010801 ;Serial 12h ;Refresh 15m ;Retry 3w ;Expire 2h ;Minimum TTL ) ; Name Server RR for the domain IN NS ns1.example.com. ; mail server RRs for the zone (domain) 3w IN MX 10 mail.example.com. ; A - Record of Name Server ns1 IN A 10.8.0.1
; A - Record hostname example.com to IP address
@ IN A 10.8.0.4
; A - Record hostname www.example.com to IP address
www IN A 10.8.0.4
; A - Record hostname mail.example.com to IP address
mail IN A 10.8.0.2
; aliases ftp (ftp server) to an external domain
ftp IN CNAME ftp.example.com.
注意:
以上配置包含www域名、邮箱域名和ftp域名的解析,可按需填写,删掉不需要的配置项目。
当你有需要更新example.com.fwd.db文件时,可以将参数"Serial"参数的值更新为当前时间。
4. reverse配置
(1) options entry
将以下配置追加到/etc/named.conf文件的末尾:
#Add: Reverse map for 10.8.0 zone "0.8.10.in-addr.arpa" { type primary; file "10.8.0.rev";
allow-update { none; };
notify no; };
(2) Reverse lookup
a. 新建文件:
sudo vi /var/named/10.8.0.rev
b. 初始化内容:
; reverse map zone file for 10.8.0.4 $TTL 2d ; 172800 seconds $ORIGIN 0.8.10.IN-ADDR.ARPA. @ IN SOA ns1.example.com. root.example.com. ( 2023010802 ; serial number 3h ; refresh 15m ; update retry 3w ; expiry 3h ; nx = nxdomain ttl ) ; only one NS is required for this local file and is an out of zone name IN NS ns1.example.com. ; PTR Record IP address to hostname 2 IN PTR mail.example.com. ; fully qualified domain name (FQDN) 4 IN PTR www.example.com. ; fully qualified domain name (FQDN)
注意:
当你有需要更新10.8.0.rev文件时,可以将参数"Serial"参数的值更新为当前时间。
5. 文件权限
sudo chown -R named:named /var/named sudo chown named:named /etc/named.conf
6. 重启服务
sudo systemctl restart named
四、校验配置
1. 配置使用BIND DNS服务
(1) 进入同网段的另外一台机器:
sudo vi /etc/resolv.conf
(2) 添加以下配置,指向DNS服务器。
注意,如果已经配置了其他DNS服务器,域名解析时会遵循依次轮训的原则,我们要解析的www.example.com这个域名存在公网的解析,需要将下面的配置放到首行:
nameserver 10.8.0.1
(3) 解决NetworkManager重置resolv.conf文件的问题
在CentOS 7中,如果手动修改了resolv.conf,那么重启network.service或者NetworkManager.service之后会将resolv.conf内容还原,所以这里可以通过禁止NetworkManager修改DNS来实现保持resolv.conf文件不变的目的。
a. 修改NetworkManager.conf文件:
sudo vi /etc/NetworkManager/NetworkManager.conf
b. 在main部分添加:
dns=none
c. 重启NetworkManager服务:
systemctl restart NetworkManager
(4) 对于CentOS 8以上的环境,使用Network Manager管理网络,可使用nmcli来配置DNS
su
nmcli connection modify enp0s25 ipv4.dns '10.8.0.1' nmcli connection down enp0s25 && nmcli connection up enp0s25
将enp0s25改为自己的网卡地址。
2. 测试域名解析
(1) dig
dig www.example.com
(2) ping
ping www.example.com
3. 测试IP反向解析
dig -x 10.8.0.4
五、参考
1. 官方
https://downloads.isc.org/isc/bind9/9.18.10/doc/arm/html/
2. 其他
https://www.unixmen.com/dns-server-setup-using-bind-9-on-centos-7-linux/
https://systemzone.net/how-to-add-new-domains-to-bind-dns-server/