分步教程:使用绑定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服务器获取响应。