文章目录本章节介绍如何使用BIND来配置DNS。
专栏地址:https://blog.csdn.net/qq_41765918/category_11532281.html
- RH358管理DNS和DNS服务器--使用BIND 9配置授权名称服务器
- 1. 为权威名称服务器设计体系结构
- 2. 安装BIND
- 3. 配置BIND
- 定义地址匹配列表
- 匹配DNS服务器所在子网内的所有主机
- 限制访问
- 宣布权威的区域
- 4. 编辑区域文件
- 区域文件格式
- 添加记录到区域文件
- 委派子域
- 5. 验证您的配置
- 6. 运行BIND
- 配置防火墙允许DNS请求
- 启动绑定
- 7. 课本练习
- 1. 将serverb配置为本地主机域的主名称服务器。
- 2. 确认serverb应答本地主机查询而不是lab.example.com网络。
- 3. 按要求创建区域文件。
- 4. 配置BIND以使用新的区域文件来响应后端转发查找。
- 5. 测试查找。
- 6. 按要求创建区域文件。
- 7. 确认服务器响应反向DNS查找。
- 8. 配置serverc为备用名称服务器。
- 9. 测试应答。
- 完成实验
- 总结
权威的名称服务器存储DNS资源记录,并为它们管理的区域提供官方答案。Red Hat Enterprise Linux中包含了Berkeley Internet Name Domain (BIND)软件,可以实现权威的名称服务器。
BIND允许您将授权服务器配置为区域的主服务器或辅助服务器。
您可以在主服务器的区域文件中编辑和管理区域的资源记录。一个区域只有一个主服务器。
辅助服务器通过请求区域传输,定期从主服务器下载区域信息的最新版本。他们执行区域传输的频率以及如何判断区域的SOA资源记录是否过期
**重要:**名称服务器可以是某些区域的主服务器,也可以是其他区域的辅助服务器。
**注意:**当RHEL 8发布时,它发布了BIND 9.11 ESV,这是当时软件的最新扩展支持版本。该版本的BIND将主名称服务器称为“主”,将辅助名称服务器称为“从”。
BIND的开发人员已经决定在该软件的未来版本中不再使用“主”和“从”的术语,而分别使用“主”和“辅”,这反映了RFC 8499所记录的共识。为了与现有配置向后兼容,将继续支持主区和从区类型指令。这在BIND 9.14和以后的配置文件中是支持的。
然而,RHEL 8附带的BIND版本还不支持将primary和secondary指令作为这些区域类型的同义词。当Red Hat在某种程度上提供了一个新的BIND扩展支持版本时,比如BIND 9.16 ESV,新的指令将被支持。
当您注册一个新的DNS域时,您必须为该域提供所有公共权威名称服务器的名称和IP地址。您的注册商将该信息放在父域的区域文件中(作为NS、A和AAAA记录),以便DNS解析器可以找到您的名称服务器。为了帮助确保可靠性,您应该至少有两个公共DNS服务器,它们应该位于不同的站点,以避免由于网络故障而停机。
并不是所有的权威服务器都需要公开。例如,您可能决定只使用主服务器来管理区域文件,并将区域信息发布到权威的辅助服务器。主服务器可以是私有的,但辅助服务器将是面向公共的,为外部客户端提供权威的答案。这可以帮助保护您的主服务器免受攻击。
下图显示了外部主机如何使用其缓存名称服务器和权威名称服务器来执行example.com中的记录的DNS查找,假设没有缓存的记录:
客户的caching-only名称服务器首先查询一个根名称服务器。它被定向到负责 .com域名的名称服务器池。其中一个服务器响应example.com域的NS记录,因此caching-only名称服务器查询面向公共的次要名称服务器之一。在这个示例中,主名称服务器实际上不是公共的,但是辅助名称服务器可以从主名称服务器执行区域传输,以便它们拥有关于example.com区域的最新数据
下图说明了example.com域内的内部caching-only仅缓存名称服务器的过程是相同的:
更好的方法是提供内部权威辅助服务器,内部名称服务器可以查询这些服务器。这消除了当存在关于本地域的问题时的外部查询,这样更安全。
为此,您需要配置内部缓存名称服务器,将example.com中的记录请求转发到内部辅助服务器。(例如,对于unbound,您需要配置一个适当的forward-zone块。)
2. 安装BIND通过安装bind包来安装BIND。名称服务器本身作为named服务运行。bind包还在/usr/share/doc/bind/目录中安装了全面的bind文档,包括HTML和PDF格式。
[root@host ~]# yum install bind
Red Hat Enterprise Linux 8的bind包默认将该服务设置为一个基本的递归缓存名称服务器。它还被配置为本地主机和相关域和地址的主服务器,以减轻根名称服务器的负载。此默认配置还限制了仅对本地主机上的程序的访问。侦听IPv4和IPv6 loopback接口的UDP/TCP端口53上的连接,127.0.0.1和::1
在本章的其余部分中,将学习如何修改BIND配置以禁用递归查询支持并提供权威性DNS服务。
3. 配置BINDnamed使用的主配置文件为/etc/named.conf。这个文件控制BIND的基本操作。它应该属于root用户,named组,具有权限0640,并具有命名named_conf_t类型
配置文件还指定授权服务器管理的每个区域的区域文件的位置。在RHEL 8上,这些文件通常保存在/var/named.
配置DNS服务器的步骤如下:
-
定义地址匹配列表,便于维护。
-
配置named侦听的IP地址。
-
为客户端配置访问控制。
-
指定区域指示。
-
在/etc/named.conf配置文件外写入区域文件。
在/etc/named .conf文件的开头,可以使用acl指令来定义地址匹配列表。这些指令不允许或阻止对服务器本身的访问。相反,您可以使用它们来定义一个扩展为IP地址和网络列表的名称。它们提供了方便的别名,可以与访问控制指令和其他配置选项一起使用,并使更新配置文件变得更容易。
表项可以是完整的IP地址或网络,由一个尾随的点(192.168.0.)或CIDR符号(192.168.0/24或2001:db8::/32)表示,或先前定义的地址匹配列表的名称
考虑以下ACL定义:
acl trusted { 192.168.1.21; };
acl classroom { 192.168.0.0/24; trusted; };
有四个预定义的acl内置到named:
预定义的地址匹配列表
| ACL | 描述 |
|---|---|
| none | 没有主机匹配。 |
| any | 匹配所有主机。 |
| localhost | 匹配DNS服务器的所有IP地址。 |
| localnets | 匹配DNS服务器所在子网内的所有主机。 |
你可以在/etc/named.conf文件的options指令中指定一些全局设置。其中的前两个(listen-on和listen-on-v6)规定了名称侦听的接口和端口。侦听选项接受一个分号分隔的IPv4地址列表。Listen-on-v6使用IPv6地址。
本例中除了默认的IPv4和IPv6环回地址外,还配置BIND侦听IPv4地址192.0.2.1IPv4地址和IPv6地址2001:db8:2020::5300。
listen-on port 53 { 127.0.0.1; 192.0.2.1; };
listen-on-v6 port 53 { ::1; 2001:db8:2020::5300; };
还可以定义acl,然后在listen-on和listen-on-v6指令中使用它。这是来自/etc/named.conf的一个更完整的示例:
acl interfaces { 127.0.0.1; 192.0.2.1; };
acl interfacesv6 { ::1; 2001:db8:2020::5300; };
options {
listen-on port 53 { interfaces; };
listen-on-v6 port 53 { interfacesv6; };
...output omitted...
};
限制访问
/etc/named.conf中的另外三个选项指令对于控制访问非常重要:
-
allow-query控制所有查询。
-
allow-recursive控制递归查询。
-
allow-transfer控制区域转移。
默认情况下,allow-query被设置为localhost,因此公共权威服务器必须定义allow-query { any; }; 允许互联网主机从他们那里获取信息。
权威服务器不应该允许递归查询。这可以防止它被用于DNS 扩大分布式拒绝服务攻击,并更好地保护它免受缓存中毒攻击。最简单的配置方法是完全关闭递归:
recursion no;
如果你必须允许受信任的客户端执行递归,你可以为这些特定的主机或网络打开递归并设置allow-recursive:
recursion yes;
allow-recursion { trusted-nets; };
区域传输允许客户端获取区域中所有数据的转储。这些应该受到限制,以便潜在的攻击者很难执行一次DNS查询来快速获取区域中的所有资源记录。
您的主服务器必须配置allow-transfer以允许次要服务器执行区域传输。您应该禁止其他主机执行区域传输。您可以允许Localhost执行区域传输以帮助进行故障排除。
注意:如果服务器允许客户端进行区域传输,则可以使用dig请求区域传输。从一个权威的名称服务器中查询区域的AXFR记录:
[user@host ~]$ dig axfr @classroom.example.com example.com
宣布权威的区域以下named.conf块配置一个服务器来托管example.com的主区域文件及其对应的反向查找区域2.0.192.in-addr.arpa。它作为example.net域的辅助服务器,使用从examplenet ACL标识的一个服务器检索到的区域文件。
file指令指定相对路径名。这些文件的位置由options选项块中的directory目录设置决定,默认为/var/named/。总是配置named.conf将辅助区域文件保存在slaves/ 子目录中,该目录的SELinux类型为named_cache_t。SELinux防止named在其他位置创建文件。
4. 编辑区域文件区域文件的位置由options选项块中的directory指令和/etc/named.conf中区域配置中的file指令控制。
如果将辅助区域文件保存在/var/named/slaves中,那么当辅助服务器启动时,它会将其缓存的区域版本与主服务器上的当前版本进行比较,如果是最新的,则使用它。如果区域不是最新的或文件不存在,named将执行区域传输并将结果缓存到该文件中。
您应该配置一个主区域,以从/var/named.BIND应该能够读取这些区域文件,但不能写入它们。这些文件应该由root用户拥有,这样,如果守护进程有问题,就不能对它们进行更改。
[root@host ~]# chmod 640 /var/named
include "/etc/crypto-policies/back-ends/bind.config";
};
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";
[root@serverb ~]# firewall-cmd --add-service=dns --permanent
success
[root@serverb ~]# firewall-cmd --reload
success
[root@serverb ~]# systemctl enable --now named
2. 确认serverb应答本地主机查询而不是lab.example.com网络。
在servera上查询来自lab.example.com地址的localhost.localdomain。这个操作会失败,因为BIND只允许bastion从该网络进行查询。
[student@servera ~]$ dig localhost.localdomain @172.25.250.11 ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el8 <<>> localhost.localdomain @172.25.250.11 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 6719 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; cookie: b166992e9c73abc172ff75e460c5cdd8eded1b6aca0097dd (good) ;; QUESTION SECTION: ;localhost.localdomain. IN A ;; Query time: 1 msec ;; SERVER: 172.25.250.11#53(172.25.250.11) ;; WHEN: Sun Jun 13 17:20:24 CST 2021 ;; MSG SIZE rcvd: 78
查询来自backend.lab.example.com地址的localhost.localdomain。这是因为BIND允许来自该子网的所有查询。
[student@servera ~]$ dig localhost.localdomain @192.168.0.11 ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el8 <<>> localhost.localdomain @192.168.0.11 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30852 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; cookie: 69b8e5ea2e3ca9d23bf9960e60c5ce881ad394a2fc620916 (good) ;; QUESTION SECTION: ;localhost.localdomain. IN A ;; ANSWER SECTION: localhost.localdomain. 86400 IN A 127.0.0.1 ;; AUTHORITY SECTION: localhost.localdomain. 86400 IN NS localhost.localdomain. ;; ADDITIonAL SECTION: localhost.localdomain. 86400 IN AAAA ::1 ;; Query time: 1 msec ;; SERVER: 192.168.0.11#53(192.168.0.11) ;; WHEN: Sun Jun 13 17:23:20 CST 2021 ;; MSG SIZE rcvd: 1363. 按要求创建区域文件。
注意:虽然应该自己创建这个文件,但是可以在http://materials.example.com/solutions/dns-bind上找到副本进行比较。
wget http://materials.example.com/solutions/dns-bind/backend.lab.example.com.zone
# 将缺省生存时间定义为300秒,并创建SOA条目。
$TTL 300
@ IN SOA serverb.backend.lab.example.com. dnslab.example.com. (
2021061300 ; serial
1H ; refresh
5M ; retry
1W ; expire
1M ) ; minimum
# 添加一条NS记录,将serverb定义为此域的权威名称服务器。给它指定600秒的生存时间。
; owner TTL CL type RDATA
600 IN NS serverb
# 添加A记录映射的IPv4地址。
servera IN A 192.168.0.10
serverb IN A 192.168.0.11
serverc IN A 192.168.0.12
serverd IN A 192.168.0.13
# 添加AAAA记录映射的IPv6地址。
servera IN AAAA fde2:6494:1e09:2::a
serverb IN AAAA fde2:6494:1e09:2::b
serverc IN AAAA fde2:6494:1e09:2::c
serverd IN AAAA fde2:6494:1e09:2::d
# 确保指定组的区域文件是可读的,而不是可写的。
[root@serverb ~]# chmod 640 /var/named/backend.lab.example.com.zone
[root@serverb ~]# chgrp named /var/named/backend.lab.example.com.zone
4. 配置BIND以使用新的区域文件来响应后端转发查找。
[root@serverb ~]# vim /etc/named.backend.conf
zone "backend.lab.example.com" IN {
type master;
file "backend.lab.example.com.zone";
forwarders {};
};
# 确保新的BIND配置文件对named组是可读的,而不是可写的。
[root@serverb ~]# chmod 640 /etc/named.backend.conf
[root@serverb ~]# chgrp named /etc/named.backend.conf
# 添加配置文件包含所写的配置文件
[root@serverb ~]# vim /etc/named.conf
include "/etc/named.backend.conf";
# 重启服务
[root@serverb ~]# systemctl restart named
5. 测试查找。
[student@servera ~]$ dig serverc.backend.lab.example.com @192.168.0.11 ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el8 <<>> serverc.backend.lab.example.com @192.168.0.11 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37496 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 3 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; cookie: def510f3e2f30f35c7aff36c60c5dd8f1741258a22f9dc04 (good) ;; QUESTION SECTION: ;serverc.backend.lab.example.com. IN A ;; ANSWER SECTION: serverc.backend.lab.example.com. 300 IN A 192.168.0.12 ;; AUTHORITY SECTION: backend.lab.example.com. 600 IN NS serverb.backend.lab.example.com. ;; ADDITIonAL SECTION: serverb.backend.lab.example.com. 300 IN A 192.168.0.11 serverb.backend.lab.example.com. 300 IN AAAA fde2:6494:1e09:2::b ;; Query time: 0 msec ;; SERVER: 192.168.0.11#53(192.168.0.11) ;; WHEN: Sun Jun 13 18:27:27 CST 2021 ;; MSG SIZE rcvd: 170 [student@servera ~]$ dig serverc.backend.lab.example.com @bastion.lab.example.com ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el8 <<>> serverc.backend.lab.example.com @bastion.lab.example.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60821 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; cookie: ae1c203a15768c96e471b11960c5ddfab41f88b743c797b2 (good) ;; QUESTION SECTION: ;serverc.backend.lab.example.com. IN A ;; ANSWER SECTION: serverc.backend.lab.example.com. 300 IN A 192.168.0.12 ;; AUTHORITY SECTION: backend.lab.example.com. 86400 IN NS serverb.lab.example.com. ;; ADDITIonAL SECTION: serverb.lab.example.com. 600 IN A 172.25.250.11 ;; Query time: 2 msec ;; SERVER: 172.25.250.254#53(172.25.250.254) ;; WHEN: Sun Jun 13 18:29:14 CST 2021 ;; MSG SIZE rcvd: 142 # 请注意A记录的生存时间值为300秒。 # 再次执行相同的DNS查询。生存时间值小于300秒,因为bastion依赖于其缓存中的值。 [student@servera ~]$ dig serverc.backend.lab.example.com @bastion.lab.example.com ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el8 <<>> serverc.backend.lab.example.com @bastion.lab.example.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46261 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; cookie: c2dc15fcf24673d5658fb98a60c5deb8a7529e598f7cda25 (good) ;; QUESTION SECTION: ;serverc.backend.lab.example.com. IN A ;; ANSWER SECTION: serverc.backend.lab.example.com. 110 IN A 192.168.0.12 ;; AUTHORITY SECTION: backend.lab.example.com. 86400 IN NS serverb.lab.example.com. ;; ADDITIonAL SECTION: serverb.lab.example.com. 600 IN A 172.25.250.11 ;; Query time: 0 msec ;; SERVER: 172.25.250.254#53(172.25.250.254) ;; WHEN: Sun Jun 13 18:32:24 CST 2021 ;; MSG SIZE rcvd: 1426. 按要求创建区域文件。
[root@serverb ~]# vim /var/named/192.168.0.zone
$TTL 300
@ IN SOA serverb.backend.lab.example.com. dnslab.example.com. (
0 ; serial
1H ; refresh
5M ; retry
1W ; expire
1M ) ; minimum
; owner TTL CL type RDATA
600 IN NS serverb.backend.lab.example.com.
10 IN PTR servera.backend.lab.example.com.
11 IN PTR serverb.backend.lab.example.com.
12 IN PTR serverc.backend.lab.example.com.
13 IN PTR serverd.backend.lab.example.com.
[root@serverb ~]# vim /var/named/fde2.6494.1e09.2.zone
$TTL 300
@ IN SOA serverb.backend.lab.example.com. dnslab.example.com. (
0 ; serial
1H ; refresh
5M ; retry
1W ; expire
1M ) ; minimum
; owner TTL CL type RDATA
600 IN NS serverb.backend.lab.example.com.
A.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR servera.backend.lab.example.com.
B.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR serverb.backend.lab.example.com.
C.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR serverc.backend.lab.example.com.
D.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR serverd.backend.lab.example.com.
# 注意:每个PTR记录应该在一行上。
[root@serverb ~]# chmod 640 /var/named/*.zone
[root@serverb ~]# chgrp named /var/named/*.zone
[root@serverb ~]# vim /etc/named.backend.conf
zone "backend.lab.example.com" IN {
type master;
file "backend.lab.example.com.zone";
forwarders {};
};
zone "0.168.192.in-addr.arpa" IN {
type master;
file "192.168.0.zone";
forwarders {};
};
zone "2.0.0.0.9.0.E.1.4.9.4.6.2.E.D.F.ip6.arpa" IN {
type master;
file "fde2.6494.1e09.2.zone";
forwarders {};
};
[root@serverb ~]# systemctl restart named
7. 确认服务器响应反向DNS查找。
[root@serverb ~]# dig -x 192.168.0.13 @localhost ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el8 <<>> -x 192.168.0.13 @localhost ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41654 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 3 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; cookie: dff4d13ab18e64a624f1753460c5e1488fdcf39267055d1d (good) ;; QUESTION SECTION: ;13.0.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 13.0.168.192.in-addr.arpa. 300 IN PTR serverd.backend.lab.example.com. ;; AUTHORITY SECTION: 0.168.192.in-addr.arpa. 600 IN NS serverb.backend.lab.example.com. ;; ADDITIonAL SECTION: serverb.backend.lab.example.com. 300 IN AAAA fde2:6494:1e09:2::b serverb.backend.lab.example.com. 300 IN A 192.168.0.11 ;; Query time: 0 msec ;; SERVER: ::1#53(::1) ;; WHEN: Sun Jun 13 18:43:20 CST 2021 ;; MSG SIZE rcvd: 193 [root@serverb ~]# dig -x fde2:6494:1e09:2::d @localhost ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el8 <<>> -x fde2:6494:1e09:2::d @localhost ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41655 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 3 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; cookie: 1a31b9f51da36b31109513f360c5e16e9289bac87aff8f20 (good) ;; QUESTION SECTION: ;d.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.9.0.e.1.4.9.4.6.2.e.d.f.ip6.arpa. IN PTR ;; ANSWER SECTION: D.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.9.0.E.1.4.9.4.6.2.E.D.F.ip6.arpa. 300 IN PTR serverd.backend.lab.example.com. ;; AUTHORITY SECTION: 2.0.0.0.9.0.E.1.4.9.4.6.2.E.D.F.ip6.arpa. 600 IN NS serverb.backend.lab.example.com. ;; ADDITIonAL SECTION: serverb.backend.lab.example.com. 300 IN AAAA fde2:6494:1e09:2::b serverb.backend.lab.example.com. 300 IN A 192.168.0.11 ;; Query time: 0 msec ;; SERVER: ::1#53(::1) ;; WHEN: Sun Jun 13 18:43:58 CST 2021 ;; MSG SIZE rcvd: 3048. 配置serverc为备用名称服务器。
[root@serverc ~]# yum -y install bind
[root@serverc ~]# scp serverb:/etc/named.conf /etc/named.conf
[root@serverc ~]# scp serverb:/etc/named.backend.conf /etc/named.backend.conf
[root@serverc ~]# vim /etc/named.backend.conf
zone "backend.lab.example.com" IN {
type slave;
file "slaves/backend.lab.example.com.zone";
masters { 192.168.0.11; };
};
zone "0.168.192.in-addr.arpa" IN {
type slave;
file "slaves/192.168.0.zone";
masters { 192.168.0.11; };
};
zone "2.0.0.0.9.0.E.1.4.9.4.6.2.E.D.F.ip6.arpa" IN {
type slave;
file "slaves/fde2.6494.1e09.2.zone";
masters { 192.168.0.11; };
};
[root@serverc ~]# chgrp named /etc/named.conf /etc/named.backend.conf
[root@serverc ~]# chmod 640 /etc/named.conf /etc/named.backend.conf
[root@serverc ~]# firewall-cmd --add-service=dns --permanent
success
[root@serverc ~]# firewall-cmd --reload
success
[root@serverc ~]# systemctl enable --now named
9. 测试应答。
[student@servera ~]$ dig servera.backend.lab.example.com @192.168.0.12 ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el8 <<>> servera.backend.lab.example.com @192.168.0.12 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62765 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 3 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; cookie: 374f7447c86b031156c08a3760c6021be0971c83e52d4e1b (good) ;; QUESTION SECTION: ;servera.backend.lab.example.com. IN A ;; ANSWER SECTION: servera.backend.lab.example.com. 300 IN A 192.168.0.10 ;; AUTHORITY SECTION: backend.lab.example.com. 600 IN NS serverb.backend.lab.example.com. ;; ADDITIonAL SECTION: serverb.backend.lab.example.com. 300 IN A 192.168.0.11 serverb.backend.lab.example.com. 300 IN AAAA fde2:6494:1e09:2::b ;; Query time: 1 msec ;; SERVER: 192.168.0.12#53(192.168.0.12) ;; WHEN: Sun Jun 13 21:03:23 CST 2021 ;; MSG SIZE rcvd: 170完成实验
[student@workstation ~]$ lab dns-bind finish
总结- 介绍权威名称服务器设计体系结构。
- 安装和配置BIND。
- 运行和验证所配置的DNS。
- 若喜欢金鱼哥的文章,顺手点个赞。也可点个关注,因为后续会不断上干货。



