分步教程:使用绑定chroot配置DNS服务器(CentOS/RHEL 7/8)
如何逐步在rhel 7或者rhel 8中配置dns服务器。
在Linux中逐步配置dns服务器。
绑定chroot。
在Linux中逐步配置dns服务器。
如何在Rhel 7中逐步配置dns服务器。
名为chroot。
绑定允许查询。
安装bind centos 7或者centos8. 使用centos或者rhel 7或者centos 8使用命名的chroot配置正向区域文件和反向区域文件。
在rhel 7或者rhel 8 linux上示例正向区域文件和反向区域文件。
使用named-checkconf验证绑定dns服务器配置文件。
不要将chroot内容复制到/var/named/chroot。
dns配置逐步。
在红色帽子上安装dns服务器。
安装绑定Chroot RPM
要安装在chroot环境中运行的BIND,我们必须安装bind-chroot软件包。
说明:
如果我们没有活动的存储库,请下载具有所有依赖项列表的rpms,然后可以使用其创建离线存储库。
[root@centos-8 ~]# yum install -y bind-chroot
通过yum验证与bind chroot一起安装的可用绑定软件包的列表:
[root@centos-8 ~]# rpm -qa| grep bind bind-license-9.9.4-74.el7_6.1.noarch bind-chroot-9.9.4-74.el7_6.1.x86_64 keybinder3-0.3.0-1.el7.x86_64 bind-libs-9.9.4-74.el7_6.1.x86_64 bind-utils-9.9.4-74.el7_6.1.x86_64 bind-libs-lite-9.9.4-74.el7_6.1.x86_64 bind-9.9.4-74.el7_6.1.x86_64 rpcbind-0.2.0-47.el7.x86_64
下面的目录和文件列表将在CentOS/RHEL 7/8 Linux主机上使用bind chroot软件包创建:
[root@centos-8 ~]# ls -l /var/named/chroot/ total 20 drwxr-x---. 2 root named 4096 Jun 21 16:11 dev drwxr-x---. 4 root named 4096 Jun 21 16:11 etc drwxr-x---. 3 root named 4096 Jun 21 16:11 run drwxr-xr-x. 3 root root 4096 Jun 21 16:11 usr drwxr-x---. 5 root named 4096 Jun 21 16:11 var
打开bind chroot环境,与此相关的所有与DNS DNS服务器绑定的文件和目录将挂载在/var/named/chroot上。
提示:
如果我们已经安装了bind chroot软件包,则BIND服务将在chroot环境中运行。
在这种情况下,初始化脚本将使用mount --bind命令将所有BIND配置文件安装到chroot位置,以便我们可以在此环境之外管理配置。
不需要将任何内容复制到/var/named/chroot /目录中,因为它是自动挂载的。
[root@centos-8 ~]# /usr/libexec/setup-named-chroot.sh /var/named/chroot on
接下来验证/var/named/chroot上的安装路径列表
[root@centos-8 ~]# mount | grep chroot /dev/mapper/centos-root on /var/named/chroot/etc/named type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/usr/lib64/bind type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/etc/localtime type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/etc/named type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/etc/named.root.key type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/etc/named.conf type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/etc/named.rfc1912.zones type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/etc/rndc.key type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/etc/named.iscdlv.key type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/etc/protocols type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/etc/services type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/usr/lib64/bind type ext4 (rw,relatime,data=ordered) tmpfs on /var/named/chroot/run/named type tmpfs (rw,nosuid,nodev,mode=755) /dev/mapper/centos-root on /var/named/chroot/var/named type ext4 (rw,relatime,data=ordered)
我们将记下我们的IP地址,该地址将用于在chroot环境中配置BIND DNS
[root@centos-8 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:df:87:41 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.32/8 brd 10.255.255.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fedf:8741/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:95:c3:cd brd ff:ff:ff:ff:ff:ff
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:b0:af:fb brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:b0:af:fb brd ff:ff:ff:ff:ff:ff
配置DNS服务器(named.conf)
配置DNS服务器的第一件事就是更新我们的/etc/named.conf文件。
我们在我们的named.conf文件中进行了以下突出显示的更改:
[root@centos-8 ~]# cat /etc/named.conf
options {
listen-on port 53 { 127.0.0.1; any; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { localhost; any; };
allow-query-cache { localhost; any; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
添加区域记录
接下来,我们需要在/etc/named.rfc1912.zones文件中添加正向区域文件和反向区域文件位置的区域记录。
这里example.com包含我们的正向区域文件的详细信息,而2.0.10.in-addr.arpa包含有关反向区域文件的信息。
zone "example.com" IN {
type master;
file "example.com.zone";
allow-update { none; };
};
zone "2.0.10.in-addr.arpa" IN {
type master;
file "example.com.rzone";
allow-update { none; };
};
说明:
对于反向区域,这里由于我们的IP为10.0.2.32,因此我将2.0.10.in-addr.arpa用作区域名称,类似地,如果IP为192.168.0.XX,则反向区域区域名称语法为0.168.192.in-addr.arpa
在接下来的步骤中,我们将创建正向和反向区域文件。
创建前向区域文件
导航到"/var/named",我们将使用一些默认模板来配置我们的正向区域文件。
[root@centos-8 ~]# cd /var/named/
列出/var/named的内容
[root@centos-8 named]# ls -l total 32 drwxr-x---. 2 root named 4096 Jun 21 16:12 chroot drwxrwx---. 2 named named 4096 Jun 5 00:56 data drwxrwx---. 2 named named 4096 Jun 5 00:56 dynamic -rw-r-----. 1 root named 2281 Jan 22 2016 named.ca -rw-r-----. 1 root named 152 Dec 15 2009 named.empty -rw-r-----. 1 root named 152 Jun 21 2007 named.localhost -rw-r-----. 1 root named 168 Dec 15 2009 named.loopback drwxrwx---. 2 named named 4096 Jun 5 00:56 slaves
使用" named.localhost"创建前向区域文件
[root@centos-8 named]# cat named.loopback > example.com.zone
更改转发区域文件(example.com.zone)的权限和所有权,如下所示:
[root@centos-8 named]# chmod 644 example.com.zone [root@centos-8 named]# chown root:named example.com.zone [root@centos-8 named]# ls -l example.com.zone -rw-r--r--. 1 root named 260 Jun 21 16:28 example.com.zone
使用设置和环境中的详细信息更新前向区域文件。
以下是我的示例正向区域文件:
[root@centos-8 named]# cat example.com.zone
$TTL 1D
@ IN SOA example.com root (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS localhost
localhost IN A 127.0.0.1
centos-7 IN A 10.0.2.30
rhel-8 IN A 10.0.2.31
centos-8 IN A 10.0.2.32
创建反向区域文件
同样,使用named.localhost创建一个反向区域文件。
[root@centos-8 named]# cat named.localhost > example.com.rzone
更改反向区域文件(example.com.rzone)的权限和所有权,如下所示:
[root@centos-8 named]# chmod 644 example.com.rzone [root@centos-8 named]# chown root:named example.com.rzone [root@centos-8 named]# ls -l example.com.rzone -rw-r--r--. 1 root named 260 Jun 21 16:28 example.com.rzone
接下来,根据环境更新反向区域文件的值。
以下是我的示例反向区域文件:
[root@centos-8 named]# cat example.com.rzone
$TTL 1D
@ IN SOA example.com. root.example.com. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS localhost.
30 IN PTR centos-7.example.com.
31 IN PTR rhel-8.example.com.
32 IN PTR centos-8.example.com.
说明:
每次修改区域文件时更新序列号。
验证绑定chroot配置
在启动" named-chroot"服务之前,重要的是要验证绑定chroot配置文件是否存在语法错误:
[root@centos-8 named]# named-checkconf -t /var/named/etc/named.conf
这里的-t表示chroot到目录,以便配置文件中的include伪指令被处理,就好像是由类似chrooted的名称运行一样。
执行此命令之前,请确保将/var/named /的所有内容都挂载在/var/named/chroot上,否则可能会出现`open:etc/named.conf:not found file'错误。
使用mount命令检查/etc/mtab的内容
[root@centos-8 ~]# mount | grep chroot /dev/mapper/centos-root on /var/named/chroot/etc/named type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/usr/lib64/bind type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/etc/localtime type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/etc/named type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/etc/named.root.key type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/etc/named.conf type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/etc/named.rfc1912.zones type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/etc/rndc.key type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/etc/named.iscdlv.key type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/etc/protocols type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/etc/services type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/usr/lib64/bind type ext4 (rw,relatime,data=ordered) tmpfs on /var/named/chroot/run/named type tmpfs (rw,nosuid,nodev,mode=755) /dev/mapper/centos-root on /var/named/chroot/var/named type ext4 (rw,relatime,data=ordered)
如果我们没有在/var/named/chroot上看到这些路径,请使用以下命令关闭chroot的安装:
[root@centos-8 ~]# /usr/libexec/setup-named-chroot.sh /var/named/chroot off
然后将其重新打开
[root@centos-8 ~]# /usr/libexec/setup-named-chroot.sh /var/named/chroot on
接下来重新验证mount | grep chroot命令输出。
我们应该看到所有必需的设备都挂载在/var/named/chroot上。
这对于刷新我们最近执行的所有更改非常重要,这些更改应该在/var/named/chroot下可见。
现在我们可以运行以下命令来验证chroot配置文件
[root@centos-8 named]# named-checkconf -t /var/named/etc/named.conf
启动named-chroot服务
要在Red Hat Enterprise Linux 7上配置dns服务器,bind-chroot的安装不会改变命名服务的运行方式。
相反,如果我们想在chroot环境中运行命名服务,它将安装新的named-chroot服务,该服务需要使用systemctl命令启动。
但在此之前,请确保停止并禁用RHEL 7 Linux主机上可用且正在运行的任何命名服务:
[root@centos-8 named]# systemctl stop named [root@centos-8 named]# systemctl disable named
接下来使用systemctl启动named-chroot服务:
[root@centos-8 named]# systemctl start named-chroot
[root@centos-8 ~]# systemctl status named-chroot
● named-chroot.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named-chroot.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2019-06-21 17:00:25 IST; 1min 1s ago
Process: 5321 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} -t /var/named/chroot $OPTIONS (code=exited, status=0/SUCCESS)
Process: 5319 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -t /var/named/chroot -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS)
Main PID: 5323 (named)
Tasks: 4
CGroup: /system.slice/named-chroot.service
└─5323 /usr/sbin/named -u named -c /etc/named.conf -t /var/named/chroot
Jun 21 17:00:25 centos-8.example.com named[5323]: zone 2.0.10.in-addr.arpa/IN: loaded serial 1
Jun 21 17:00:25 centos-8.example.com named[5323]: zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
Jun 21 17:00:25 centos-8.example.com named[5323]: zone localhost.localdomain/IN: loaded serial 0
Jun 21 17:00:25 centos-8.example.com named[5323]: zone example.com/IN: loaded serial 1
Jun 21 17:00:25 centos-8.example.com named[5323]: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0....ial 0
Jun 21 17:00:25 centos-8.example.com named[5323]: zone localhost/IN: loaded serial 0
Jun 21 17:00:25 centos-8.example.com named[5323]: all zones loaded
Jun 21 17:00:25 centos-8.example.com named[5323]: running
Jun 21 17:00:25 centos-8.example.com named[5323]: zone example.com/IN: sending notifies (serial 1)
Jun 21 17:00:25 centos-8.example.com named[5323]: zone 2.0.10.in-addr.arpa/IN: sending notifies (serial 1)
Hint: Some lines were ellipsized, use -l to show in full.
现在我们的配置dns服务器步骤几乎完成,启用named-chroot服务以在每次重新启动后自动启动该服务:
[root@centos-8 ~]# systemctl enable named-chroot Created symlink from /etc/systemd/system/multi-user.target.wants/named-chroot.service to /usr/lib/systemd/system/named-chroot.service.
使用resolv.conf配置DNS服务器
现在配置dns服务器的最后一步是使用我们的DNS服务器IP(即" 10.0.2.32")更新/etc/resolv.conf。
[root@centos-8 ~]# cat /etc/resolv.conf # Generated by NetworkManager search example.com nameserver 10.0.2.32 nameserver 8.8.8.8
验证绑定的Chroot DNS服务器
现在,我们可以使用其他工具来验证绑定chroot DNS服务器配置。
在此示例中,我使用" nslookup"进行挖掘以验证我的正向和反向区域配置
[root@centos-8 ~]# nslookup centos-7.example.com Server: 10.0.2.32 Address: 10.0.2.32#53 Name: centos-7.example.com Address: 10.0.2.30
因此,nslookup可以使用我们的绑定chroot DNS服务器10.0.2.32来获得centos-7.example.com的响应。
类似地,使用dig命令查找ANSWER SECTION,以获取反向区域文件内容。
[root@centos-8 ~]# dig -x 10.0.2.30 ; <<>> DiG 9.9.4-RedHat-9.9.4-74.el7_6.1 <<>> -x 10.0.2.30 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55495 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 3 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;30.2.0.10.in-addr.arpa. IN PTR ;; ANSWER SECTION: 30.2.0.10.in-addr.arpa. 86400 IN PTR centos-7.example.com. ;; AUTHORITY SECTION: 2.0.10.in-addr.arpa. 86400 IN NS localhost. ;; ADDITIONAL SECTION: localhost. 86400 IN A 127.0.0.1 localhost. 86400 IN AAAA ::1 ;; Query time: 0 msec ;; SERVER: 10.0.2.32#53(10.0.2.32) ;; WHEN: Fri Jun 21 17:02:28 IST 2019 ;; MSG SIZE rcvd: 149
在客户端上配置DNS服务器
要在客户端上配置DNS服务器,我们不需要安装任何其他与绑定chroot相关的rpm,只需在所有客户端上更新/etc/resolv.conf文件即可使用DNS服务器的名称服务器IP。
例如在我的客户节点上:
[root@rhel-8 ~]# cat /etc/resolv.conf # Generated by NetworkManager search example.com nameserver 10.0.2.32
让我们使用nslookup来验证DNS服务器的配置:
[root@rhel-8 ~]# nslookup centos-8.example.com Server: 10.0.2.32 Address: 10.0.2.32#53 Name: centos-8.example.com Address: 10.0.2.32
如我们所见,客户端可以正确地从运行在10.0.2.32 rhel linux主机上的DNS服务器获取响应。

