在RHEL8/9中安装并配置BIND DNS服务器的详细教程

对于使用Kubernetes进行容器化部署的团队来说,能够在内部网络中解析Kubernetes官方镜像仓库(如registry.k8s.io)到内部的Harbor镜像服务器,可以显著提升部署效率和安全性。本文将指导您如何在RHEL 8.10(同样适用于RHEL 9)上安装并配置BIND DNS服务器,以实现将registry.k8s.io域名解析到内网Harbor服务器的IP地址(例如10.6.0.253)。

一、安装BIND服务

1.更新系统(可选,但推荐)

[root@yunweixia.com ~]# dnf update

2.安装BIND软件

[root@yunweixia.com ~]# dnf install bind bind-utils

bind是BIND服务的主体,而bind-utils提供了dig、nslookup等DNS查询工具。如果发现操作系统中没有nslook命令,可使用如下方式进行安装

[root@yunweixia.com ~]# dnf install bind-utils

二、配置BIND

1.修改主配置文件

编辑/etc/named.conf文件,确保BIND服务监听正确的IP地址,并允许任何主机进行查询。通常,你需要找到listen-on和allow-query指令,并修改它们的值。例如:

[root@yunweixia.com ~]# vi /etc/named.conf

修改内容如下:

listen-on port 53 { any; };  
allow-query     { any; };

2.配置区域文件(正向解析)

编辑/etc/named.rfc1912.zones文件,添加一个区域(zone)定义。例如,为k8s.io区域创建一个正向解析区域:

[root@yunweixia.com ~]# vi /etc/named.rfc1912.zones

添加以下内容:

zone "k8s.io" IN {
    type master;
    file "k8s.io.zone";
    allow-update { none; };
};

3.创建并编辑区域数据文件(正向解析)

在/var/named/目录下创建区域数据文件k8s.io.zone,并添加解析记录。例如:

[root@yunweixia.com ~]# cp -a /var/named/named.localhost /var/named/k8s.io.zone  
[root@yunweixia.com ~]# vim /var/named/k8s.io.zone

修改文件内容,设置registry.k8s.io的A记录为10.6.0.253:

$TTL    604800
@       IN      SOA     ns1.k8s.io. admin.k8s.io. (
                                    3         ; Serial
                                604800         ; Refresh
                                 86400         ; Retry
                               2419200         ; Expire
                                604800 )       ; Negative Cache TTL
;
@       IN      NS      ns1.k8s.io.
ns1     IN      A       10.6.0.254  ; 这里通常是DNS服务器的IP,这里实战侠用10.6.0.254作为示例
registry  IN      A       10.6.0.253
basic   IN      A       10.6.0.254

注意:你可能需要将ns1.k8s.io.的A记录设置为你的DNS服务器的实际IP地址,这里使用了10.6.0.254作为示例。

4.配置区域文件(反向解析

编辑/etc/named.rfc1912.zones文件,添加一个区域(zone)定义。例如,为k8s.io区域创建一个反向解析区域:

[root@yunweixia.com ~]# vi /etc/named.rfc1912.zones

添加以下内容:

zone "0.6.10.in-addr.arpa" IN {
    type master;
    file "10.6.zone";
    allow-update { none; };
};

注意:这里的文件名(10.6.zone)是任意的,但应与你在下一步中创建的文件名相匹配。

5.创建并编辑区域数据文件(反向解析)

在/var/named/目录下创建区域数据文件10.6.zone,并添加解析记录。例如:

[root@yunweixia.com ~]# vim /var/named/10.6.zone
$TTL    86400  
@       IN      SOA     ns1.k8s.io. admin.k8s.io. (  
                                    2024071101 ; Serial  
                                    3600       ; Refresh  
                                    1800       ; Retry  
                                    604800     ; Expire  
                                    86400 )    ; Negative Cache TTL  
;  
@       IN      NS      ns1.k8s.io.  
253     IN      PTR     registry.k8s.io.

注意:这里的ns1.k8s.io.是你的DNS服务器的名称,你需要确保它能够解析到DNS服务器的实际IP地址。同时,2024071101是序列号,你应该在每次修改区域文件时递增它。

6.修改文件权限

[root@yunweixia.com ~]# chown -R named.named /var/named/k8s.io.zone
[root@yunweixia.com ~]# chown -R named.named /var/named/10.6.zone

三、重启BIND服务

重启BIND服务以使配置生效:

[root@yunweixia.com ~]# systemctl restart named
[root@yunweixia.com ~]# systemctl enable named # 开机自启动

四、验证配置

1.检查区域文件是否有语法错误

[root@yunweixia.com ~]# named-checkzone k8s.io /var/named/k8s.io.zone
zone k8s.io/IN: loaded serial 3
OK

2.使用nslookup查询

在另一台机器上或同一台机器上(如果配置了本地查询),使用nslookup命令来查询registry.k8s.io的IP地址:

[root@yunweixia.com ~]# nslookup registry.k8s.io
Server:         10.6.0.254
Address:        10.6.0.254#53

Name:   registry.k8s.io
Address: 10.6.0.253

[root@yunweixia.com ~]# nslookup 10.6.0.253
253.0.6.10.in-addr.arpa name = registry.k8s.io.

五、注意事项

确保DNS服务器的防火墙设置允许TCP和UDP的53端口通信。如果你的DNS服务器位于内网,确保客户端能够正确配置以使用你的DNS

原创文章,作者:运维侠,如若转载,请注明出处:https://www.yunweixia.com/solutions/rhel-8-9-install-configure-bind-dns-server-guide.html

(0)
运维侠的头像运维侠共建用户
上一篇 2025年7月5日 18:11
下一篇 2025年7月7日 18:11

相关推荐

发表回复

登录后才能评论