首页 > 技术文章 > BIND 9 在 CentOS Stream 上的搭建流程

doherasyang 2021-04-21 17:08 原文

BIND 9 在 CentOS Stream 上的搭建流程

「2021年6月18日更新本文所有内容」

本来其实我不太想写关于 CentOS 的配置过程,因为在之前的文章中,因为 RHEL 在2021年年底停止对 CentOS 8 的跟踪支持以及将以后的 CentOS 版本更新重新设定成新的系统发版本: CentOS Stream, 我认为此举是对

为什么说这个不好呢:

  • 第一:CentOS 将会作为 RHEL 官方版本 (RedHat) 和 Fedora 的衔接版本,即变成了 Red Hat 的一个先行发布的操作系统版本,RHEL想要开发新特性,先用到 Fedora, 再用到 CentOS, 最后再用到自己的 RHEL 中,所以 失去了 CentOS 最赖以生存或者吸引人的点: 稳定性;

    最近我重新听了一个网课,非常推荐使用 CentOS 7.x 版本作为服务器端的开发版本,我认为这个事情比较因人而异,当然对于已经进行过红帽认证的服务器端运维人员以及来说,技术选型为:CentOS 是一个比较不错的选择;

    但是对于个人开发来说,简单以及实用性是我考虑比较多的,所以我对CentOS的评价并不是很高;

  • 第二:考虑到新的版本迁移问题,从企业生产方面的考虑,除了财大气粗紧跟红帽的步伐或者购买红帽的服务,从 CentOS 迁移到RHEL 是非常简单或者不需要花太多心思的,但是对于中小企业来说,CentOS 失去了往昔的稳定性,那就需要考虑其他稳定的Linux发行版本了,比如说: Debian,就是我之前写的关于DNS服务在 Debian 9.11 的搭建流程;

    [ISC BIND9 - 最详细、最认真的从零开始的 BIND 9 - DNS服务搭建及其原理讲解](


我个人是非常看好社区的力量的,红帽这么做无非就是从商业利益出发,我个人认为红帽最后会得不偿失;


但是,在最近学习 Linux 的过程中,我发现了 Debian 比不上 CentOS 的点:

  • BIND 9 的日志服务会莫名的报错,即无法正常使用 BIND 9 自带的日志功能;
  • 系统的功能 以及 对于服务的监控、追溯 比不上 RedHat,也许是因为操作系统版本问题,但是对比 CentOS 我认为其功能是比不上的;
  • Debian 的离线包管理真的是让我非常郁闷,apt-get 搭配 dpkg 的循环依赖处理非常头疼,搞不懂为啥装个包这么麻烦,可能在包管理的方面 yum / npm 有自己的独特优势,但是这仅是在离线配置上我遇到的问题;

很多教程都是以 CentOS 操作系统为例子进行讲解的,我也在不断的去学习 Linux 系统,希望相比之前能对于 Linux 机制以及相关功能实现能有更进一步的了解;

以上就是写这篇的初衷;


1. 配置 CentOS Stream 的 yum 源

1.安装完 CentOS Stream 之后, 在目录路径: /etc/yum.repos.d 目录下更新 CentOS-Stream-BaseOS.repo

这里使用 CentOS Stream 的 yum 文件使用 CentOS 8 的就好,因为两者的内核版本是相同;

# 备份一下原来的配置文件
$ sudo mv /etc/yum.repos.d/CentOS-Stream-BaseOS.repo /etc/yum.repos.d/CentOS-Stream-BaseOS.repo.bak

# 下载新的阿里云 yum 配置文件
# CentOS Stream 的目前内核版本 为        CPE OS Name: cpe:/o:centos:centos:8
$ wget -O /etc/yum.repos.d/CentOS-Stream-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo

2.生成 yum 的 新的缓存:

$ yum makecache
Repository extras is listed more than once in the configuration
CentOS Stream 8 - AppStream                     3.2 kB/s | 4.4 kB     00:01    
CentOS-8 - Base - mirrors.aliyun.com            4.8 kB/s | 3.9 kB     00:00    
CentOS-8 - Base - mirrors.aliyun.com            3.6 MB/s | 2.3 MB     00:00    
CentOS-8 - Extras - mirrors.aliyun.com           11 kB/s | 1.5 kB     00:00    
CentOS-8 - Extras - mirrors.aliyun.com           48 kB/s | 9.6 kB     00:00    
CentOS-8 - AppStream - mirrors.aliyun.com        56 kB/s | 4.3 kB     00:00    
CentOS-8 - AppStream - mirrors.aliyun.com       6.8 MB/s | 6.3 MB     00:00 

3.更新一下 yum 的相关配置:

$ yum -y update
# 所有的可执行文件都被放倒了 /usr/sbin/ 下

2. 安装 / 启动 BIND 9

1.更新完 yum 之后就可以直接去安装就好了,非常的方便

$ sudo yum install bind

2.启动DNS相关服务 - 区别于 Debian 下的BIND服务这里是 named

$ sudo systemctl start named

3. CentOS Stream 的相关配置

区别于 Debian 版本,BIND 在 CentOS 的配置文件存储非常混乱,并不是存储在 /etc/bind 目录下,而是 /etc 目录下;

换句话来说,所有原来的在 /etc/bind 目录下的文件都被混乱的保存在 /etc 的目录下,因此配置不是很方便;

如果你想要查找与 BIND - DNS 相关的文件,可以使用 rpm 命令

$ rpm -ql bind
/etc/logrotate.d/named
/etc/named
/etc/named.conf
/etc/named.rfc1912.zones
/etc/named.root.key
/etc/rndc.conf
/etc/rndc.key
/etc/rwtab.d/named
/etc/sysconfig/named
/run/named
/usr/bin/mdig
/usr/bin/named-rrchecker
/usr/lib/.build-id
/usr/lib/.build-id/0f
/usr/lib/.build-id/0f/9b8ec74d25c7cc6bc59f2fe8c9d075cb66a6ba
/usr/lib/.build-id/6b
/usr/lib/.build-id/6b/ef476edae4a6e4b11d9e71f9bbd2f03649b998
/usr/lib/.build-id/ae
/usr/lib/.build-id/ae/a8125f21acf127390cb026d33c1ade7d08e0d1
/usr/lib/.build-id/c7
/usr/lib/.build-id/c7/81c28b099170128124d9bd56f02d5da4d8ffd1
/usr/lib/.build-id/c7/81c28b099170128124d9bd56f02d5da4d8ffd1.1
/usr/lib/.build-id/d1
/usr/lib/.build-id/d1/18d258ae504ce40cb63c0f343b6724313468c7
/usr/lib/.build-id/d3
/usr/lib/.build-id/d3/be44507e376ed1faab0be178ac786ef1d0d7e0
/usr/lib/.build-id/ea
/usr/lib/.build-id/ea/801450613c0d68e11c8c067eef780395de15a6
/usr/lib/systemd/system/named-setup-rndc.service
/usr/lib/systemd/system/named.service
/usr/lib/tmpfiles.d/named.conf
/usr/lib64/bind
/usr/libexec/generate-rndc-key.sh
/usr/sbin/lwresd
/usr/sbin/named
/usr/sbin/named-checkconf
/usr/sbin/named-journalprint
/usr/sbin/rndc
/usr/sbin/rndc-confgen
/usr/share/doc/bind
/usr/share/doc/bind/Bv9ARM.ch01.html
/usr/share/doc/bind/Bv9ARM.ch02.html
/usr/share/doc/bind/Bv9ARM.ch03.html
/usr/share/doc/bind/Bv9ARM.ch04.html
/usr/share/doc/bind/Bv9ARM.ch05.html
/usr/share/doc/bind/Bv9ARM.ch06.html
/usr/share/doc/bind/Bv9ARM.ch07.html
/usr/share/doc/bind/Bv9ARM.ch08.html
/usr/share/doc/bind/Bv9ARM.ch09.html
/usr/share/doc/bind/Bv9ARM.ch10.html
/usr/share/doc/bind/Bv9ARM.ch11.html
/usr/share/doc/bind/Bv9ARM.ch12.html
/usr/share/doc/bind/Bv9ARM.ch13.html
/usr/share/doc/bind/Bv9ARM.html
/usr/share/doc/bind/Bv9ARM.pdf
/usr/share/doc/bind/CHANGES
/usr/share/doc/bind/README
/usr/share/doc/bind/isc-logo.pdf
/usr/share/doc/bind/man.arpaname.html
/usr/share/doc/bind/man.ddns-confgen.html
/usr/share/doc/bind/man.delv.html
/usr/share/doc/bind/man.dig.html
/usr/share/doc/bind/man.dnssec-checkds.html
/usr/share/doc/bind/man.dnssec-coverage.html
/usr/share/doc/bind/man.dnssec-dsfromkey.html
/usr/share/doc/bind/man.dnssec-importkey.html
/usr/share/doc/bind/man.dnssec-keyfromlabel.html
/usr/share/doc/bind/man.dnssec-keygen.html
/usr/share/doc/bind/man.dnssec-keymgr.html
/usr/share/doc/bind/man.dnssec-revoke.html
/usr/share/doc/bind/man.dnssec-settime.html
/usr/share/doc/bind/man.dnssec-signzone.html
/usr/share/doc/bind/man.dnssec-verify.html
/usr/share/doc/bind/man.dnstap-read.html
/usr/share/doc/bind/man.genrandom.html
/usr/share/doc/bind/man.host.html
/usr/share/doc/bind/man.isc-hmac-fixup.html
/usr/share/doc/bind/man.lwresd.html
/usr/share/doc/bind/man.mdig.html
/usr/share/doc/bind/man.named-checkconf.html
/usr/share/doc/bind/man.named-checkzone.html
/usr/share/doc/bind/man.named-journalprint.html
/usr/share/doc/bind/man.named-nzd2nzf.html
/usr/share/doc/bind/man.named-rrchecker.html
/usr/share/doc/bind/man.named.conf.html
/usr/share/doc/bind/man.named.html
/usr/share/doc/bind/man.nsec3hash.html
/usr/share/doc/bind/man.nslookup.html
/usr/share/doc/bind/man.nsupdate.html
/usr/share/doc/bind/man.pkcs11-destroy.html
/usr/share/doc/bind/man.pkcs11-keygen.html
/usr/share/doc/bind/man.pkcs11-list.html
/usr/share/doc/bind/man.pkcs11-tokens.html
/usr/share/doc/bind/man.rndc-confgen.html
/usr/share/doc/bind/man.rndc.conf.html
/usr/share/doc/bind/man.rndc.html
/usr/share/doc/bind/named.conf.default
/usr/share/doc/bind/notes.html
/usr/share/doc/bind/notes.pdf
/usr/share/doc/bind/sample
/usr/share/doc/bind/sample/etc
/usr/share/doc/bind/sample/etc/named.conf
/usr/share/doc/bind/sample/etc/named.rfc1912.zones
/usr/share/doc/bind/sample/var
/usr/share/doc/bind/sample/var/named
/usr/share/doc/bind/sample/var/named/data
/usr/share/doc/bind/sample/var/named/my.external.zone.db
/usr/share/doc/bind/sample/var/named/my.internal.zone.db
/usr/share/doc/bind/sample/var/named/named.ca
/usr/share/doc/bind/sample/var/named/named.empty
/usr/share/doc/bind/sample/var/named/named.localhost
/usr/share/doc/bind/sample/var/named/named.loopback
/usr/share/doc/bind/sample/var/named/slaves
/usr/share/doc/bind/sample/var/named/slaves/my.ddns.internal.zone.db
/usr/share/doc/bind/sample/var/named/slaves/my.slave.internal.zone.db
/usr/share/man/man1/mdig.1.gz
/usr/share/man/man1/named-rrchecker.1.gz
/usr/share/man/man5/named.conf.5.gz
/usr/share/man/man5/rndc.conf.5.gz
/usr/share/man/man8/lwresd.8.gz
/usr/share/man/man8/named-checkconf.8.gz
/usr/share/man/man8/named-journalprint.8.gz
/usr/share/man/man8/named.8.gz
/usr/share/man/man8/rndc-confgen.8.gz
/usr/share/man/man8/rndc.8.gz
/var/log/named.log
/var/named
/var/named/data
/var/named/dynamic
/var/named/named.ca
/var/named/named.empty
/var/named/named.localhost
/var/named/named.loopback
/var/named/slaves

推荐阅读