RH358管理DNS和DNS服务器--使用Unbound配置缓存名称服务器

简介: RH358管理DNS和DNS服务器--使用Unbound配置缓存名称服务器

RH358管理DNS和DNS服务器–使用Unbound配置缓存名称服务器

本章节介绍使用unbound软件配置缓存DNS。虽说配置DNS方面还是在windows server上部署更加方便,但难免出现日后需要使用的场景,还是需要学习。

专栏地址:https://blog.csdn.net/qq_41765918/category_11532281.html


DNS服务器软件:bind,powerdns,dnsmasq,unbound,coredns

1. 安装和配置Unbound

缓存名称服务器将DNS查询结果存储在本地缓存中,并在它们的ttl过期时从缓存中删除资源记录。通常设置缓存名称服务器以代表本地网络上的客户端执行查询。这大大提高了DNS名称解析的效率,减少DNS流量在互联网上。随着缓存的增长,DNS性能会随着缓存名称服务器从其本地缓存响应越来越多的客户端查询而提高。有几个包可用于配置缓存名称服务器,包括bind、dnsmasq和unbound。在本节中,将学习如何安装、配置和管理Unbound,这是一个启用了DNSSEC验证的更安全的缓存名称服务器。

安装unbound

要将unbound配置为缓存名称服务器,请确保已安装unbound包:

[root@host ~]# yum install unbound

编辑unbound配置文件

以root用户编辑/etc/unbound/unbound.conf文件,如下所示:

  • 在server子句中,定义Unbound将侦听的网络接口。
interface: 192.0.2.100
interface: 2001:db8:1001::f0

默认情况下,Unbound只侦听本地主机网络接口。要允许远程客户端使用Unbound作为缓存名称服务器,请使用/etc/unbound/unbound.conf中server子句中的interface选项来指定要侦听的网络接口。您可以指定多个接口指令。

重要:

如果将interface设置为0.0.0.0或::0(侦听所有网络接口),则必须将interface-automatic设置为yes。否则,将interface-automatic设置为no。

如果libvirtd服务与Unbound运行在同一台机器上,并且试图绑定到所有接口,Unbound可能不会启动。这是因为,默认情况下,Libvirtd在连接到其虚拟网络的本地接口的53端口(UDP和TCP的DNS服务器端口)上运行dnsmasq

  • 允许或阻止客户端访问。

默认情况下,unbound拒绝来自除localhost以外的所有客户机的递归查询。在/etc/unbound/unbound .conf的server子句中,使用access-control选项来指定哪些客户端可以进行递归查询。可以指定网络地址或IP地址,匹配最多的将获胜。最有用的三种设置是allow,,允许访问,refuse,阻止访问并向客户端发送DNS拒绝错误,deny,阻止访问并根本不发送响应,

access-control: 172.25.0.0/24 allow
access-control: 2001:db8:1001::/32 allow
access-control: 10.0.0.0/8 refuse

重要:

配置一个access-control来禁止除您的目标客户端以外的主机使用缓存名称服务器的递归。如果你允许互联网上的任何主机使用你的服务器进行递归查询,它可以被攻击者用来对第三方执行DNS放大分布式拒绝服务攻击(DDOS)。

  • 将查询转发到另一个缓存名称服务器(可选)。

如果此名称服务器不能访问internet,但可以访问能够访问internet的名称服务器,则可能需要这样做。也可以这样做,将内部域的查询直接发送到该域的权威名称服务器。

在/etc/unbound/unbound.conf中,创建forward-zone子句来指定要转发的域和要转发查询的DNS服务器。设置name值为“.”转发所有查询。使用forward-host选项通过主机名指定转发区域的DNS服务器,或使用forward-addr选项通过IP地址指定转发区域的DNS服务器。

forward-zone:
  name: "."
  forward-addr: 172.25.254.254
  • 禁用特定未签名区域的DNSSEC****验证(可选)。

默认情况下,unbound对接收到的所有DNS响应进行DNSSEC验证。通常希望它这样做,但有时会有一个未正确签名的内部域,因此无法通过DNSSEC验证。

/etc/unbound/unbound.conf的server子句中的domain-insecure选项指定了需要跳过DNSSEC验证的域。

domain-insecure: example.com

警告:不要仅仅为了解决DNS解析中未解释的问题而禁用DNSSEC验证。DNSSEC失败可能表明正在接收被正确拒绝的欺骗响应。

  • 保存配置文件/etc/unbound/unbound.conf。

生成私钥和服务器证书。

[root@host ~]# unbound-control-setup
setup in directory /etc/unbound
generating unbound_server.key
Generating RSA private key, 3072 bit long modulus (2 primes)
..........................................................++++
.....++++
e is 65537 (0x010001)
generating unbound_control.key
Generating RSA private key, 3072 bit long modulus (2 primes)
....................................++++
......................................++++
e is 65537 (0x010001)
create unbound_server.pem (self signed certificate)
create unbound_control.pem (signed client certificate)
Signature ok
subject=CN = unbound-control
Getting CA Private Key
Setup success. Certificates created. Enable in unbound.conf file to use

# 检查/etc/unbound/unbound.conf配置文件的语法错误。
[root@host ~]# unbound-checkconf
unbound-checkconf: no errors in /etc/unbound/unbound.conf

启用缓存名称服务器

配置防火墙允许DNS流量。如果使用firewalld,可以配置它以允许dns服务。

[root@host ~]# firewall-cmd --permanent --add-service=dns
success
[root@host ~]# firewall-cmd --reload
success

# 启动并开机启用Unbound。
[root@host ~]# systemctl enable --now unbound

2. 管理Unbound

安装了Unbound DNS服务器后,管理员有时需要操作它的缓存。unbound-control实用程序管理unbound服务器的缓存。

转储和加载unbound缓存

缓存名称服务器的管理员在解决DNS问题时可能需要转储缓存数据,比如那些由过时的资源记录引起的问题。转储Unbound DNS服务器的缓存,请使用unbound-control实用程序配合dump_cache子命令。

[root@host ~]# unbound-control dump_cache
START_RRSET_CACHE
;rrset 86395 1 0 3 3
classroom.example.com. 86395 IN A 172.25.254.254
;rrset 86395 1 0 7 3
example.com. 86395 IN NS classroom.example.com.
;rrset 86395 1 0 8 3
example.com. 86395 IN A 172.25.254.254
END_RRSET_CACHE
START_MSG_CACHE
msg example.com. IN A 33152 1 86395 3 1 1 1
example.com. IN A 0
example.com. IN NS 0
classroom.example.com. IN A 0
END_MSG_CACHE
EOF

使用dump_cache执行unbinding -control命令将缓存以文本格式转储到stdout。这个输出可以被定向到一个文件中进行存储,如果需要的话,可以使用unbound-control load_cache加载回缓存中。unbound-control load_cache命令从stdin读取数据来填充缓存。

[root@host ~]# unbound-control load_cache < dump.out
ok

刷新unbound缓存

缓存名称服务器的管理员可能还需要定期从缓存中清除过时的资源记录。缓存中的错误和过时的资源记录会阻止已改正的对应记录对客户端可用,直到资源记录上的TTL过期。与等待TTL过期不同,您可以通过对记录执行unbound-control flush来清除缓存中的过时记录:

[root@host ~]# unbound-control flush www.example.com
ok

# 使用flush_zone子命令执行unbound-control以清除Unbound DNS服务器上属于某个域的所有资源记录。
[root@host ~]# unbound-control flush_zone example.com
ok removed 3 rrsets, 1 messages and 0 key entries

3. 课本练习

[student@workstation ~]$ lab dns-unbound start

1. 安装unbound。

[root@servera ~]# yum install unbound

2. 按要求编辑server子句。

在172.25.250.10接口上监听。
允许来自172.25.250.0/24子网进行查询。
免example.com区域的DNSSEC验证。
将所有查询转发到172.25.250.254。
[root@servera ~]# vim /etc/unbound/unbound.conf
interface: 172.25.250.10
access-control: 172.25.250.0/24 allow
domain-insecure: "example.com"
forward-zone:
       name: .      
       forward-addr: 172.25.250.254

3. 生成私钥和服务器证书。

[root@servera ~]# unbound-control-setup
setup in directory /etc/unbound
generating unbound_server.key
Generating RSA private key, 3072 bit long modulus (2 primes)
...........++++
.......++++
e is 65537 (0x010001)
generating unbound_control.key
Generating RSA private key, 3072 bit long modulus (2 primes)
...........................................................................................................................++++
..............++++
e is 65537 (0x010001)
create unbound_server.pem (self signed certificate)
create unbound_control.pem (signed client certificate)
Signature ok
subject=CN = unbound-control
Getting CA Private Key
Setup success. Certificates created. Enable in unbound.conf file to use

4. 检查unbound配置文件的语法。

[root@servera ~]# unbound-checkconf
unbound-checkconf: no errors in /etc/unbound/unbound.conf

5. 配置防火墙允许DNS流量。

[root@servera ~]# firewall-cmd --permanent --add-service=dns
success
[root@servera ~]# firewall-cmd --reload
success

6. 启用并启动unbound服务。

[root@servera ~]# systemctl enable --now unbound
Created symlink /etc/systemd/system/multi-user.target.wants/unbound.service → /usr/lib/systemd/system/unbound.service.

7. 通过执行查询和检查缓存的内容来验证缓存名称服务。

[root@servera ~]# unbound-control dump_cache
START_RRSET_CACHE
END_RRSET_CACHE
START_MSG_CACHE
END_MSG_CACHE
EOF

[student@workstation ~]$ dig @servera.lab.example.com A workstation.lab.example.com
...........
workstation.lab.example.com. 600 IN A 172.25.250.9

[student@workstation ~]$ dig @servera.lab.example.com A servera.lab.example.com
............
servera.lab.example.com. 600 IN A 172.25.250.10

# 在服务器上,再次转储缓存。您应该在缓存中看到查询的记录。
[root@servera ~]# unbound-control dump_cache
............
msg workstation.lab.example.com. IN A 33152 1 587 3 1 1 1
workstation.lab.example.com. IN A 0
lab.example.com. IN NS 0
bastion.lab.example.com. IN A 0
msg net. IN DNSKEY 33152 1 78675 0 1 0 0
net. IN DNSKEY 0
END_MSG_CACHE
EOF

[root@servera ~]# unbound-control flush workstation.lab.example.com
ok

[root@servera ~]# unbound-control dump_cache | grep workstation

完成实验

[student@workstation ~]$ lab dns-unbound finish

总结

  • 介绍如何安装和配置Unbound。
  • 管理Unbound。
  • 若喜欢金鱼哥的文章,顺手点个赞。也可点个关注,因为后续会不断上干货。

目录
相关文章
|
1天前
|
开发框架 前端开发 开发者
【Uniapp 专栏】Uniapp 的状态管理功能深度解析
【5月更文挑战第13天】Uniapp 的状态管理对于构建复杂跨平台应用至关重要,它包括全局变量、Vuex 风格管理。核心概念有 State、Actions 和 Mutations。通过状态定义、动作设计和突变管理,提高开发效率和代码可维护性。实际案例和与其他框架比较显示了 Uniapp 的优势。理解并有效利用状态管理,能提升应用质量和开发效率。
【Uniapp 专栏】Uniapp 的状态管理功能深度解析
|
7天前
|
运维 安全 API
Elasticsearch 悬挂索引解析与管理指南
Elasticsearch 悬挂索引解析与管理指南
22 7
|
8天前
|
域名解析 存储 缓存
Linux中搭建DNS 域名解析服务器(详细版)
Linux中搭建DNS 域名解析服务器(详细版)
|
15天前
|
网络协议 Windows
Windows Server 各版本搭建 DNS 服务器实现域名正反向解析
Windows Server 各版本搭建 DNS 服务器实现域名正反向解析
|
16天前
|
存储 缓存 网络协议
【专栏】理解并优化DNS设置对于提高网络速度至关重要
【4月更文挑战第28天】本文探讨了DNS服务器是否能加快网络访问速度。DNS负责将域名转换为IP地址,其查询时间、缓存机制和地理位置都影响网络速度。优化DNS配置,如选择快速的公共DNS服务、使用附近的服务器、确保设备正确配置和利用DNS缓存,都能有效提升网络体验。理解并优化DNS设置对于提高网络速度至关重要。
|
16天前
|
JavaScript 前端开发 UED
AngularJS路由管理:深度解析$routeProvider的应用与实践
【4月更文挑战第28天】本文深入解析AngularJS的$routeProvider,它是AngularJS路由系统的关键,用于定义应用的视图和路径。通过routeProvider,开发者能根据URL变化动态加载内容,实现单页应用效果。配置$routeProvider涉及导入angular-route.js,注入&quot;ngRoute&quot;依赖,并使用when方法定义路由规则。ng-view指令用于显示路由打开的页面,而otherwise方法处理未定义路由,提供默认响应。$routeProvider使导航体验优化,助力构建高效Web应用。
|
18天前
|
移动开发 数据可视化 Linux
Linux 中的文件与目录管理解析
当谈到Linux系统,文件与目录管理是其中最基本和重要的部分之一。Linux提供了一种强大而灵活的方式来组织和管理文件和目录,让用户能够轻松地访问和操作系统中的各种数据。上一节我们说到文件的属性,本文将详细介绍Linux中的文件与目录管理的各个方面。
|
18天前
|
缓存 NoSQL Redis
深度解析Redis的缓存双写一致性
【4月更文挑战第20天】
37 1
|
19天前
|
XML 人工智能 Java
Spring Bean名称生成规则(含源码解析、自定义Spring Bean名称方式)
Spring Bean名称生成规则(含源码解析、自定义Spring Bean名称方式)
|
22天前
|
XML Java 数据格式
Javaweb之SpringBootWeb案例之 Bean管理的第三方Bean的详细解析
Javaweb之SpringBootWeb案例之 Bean管理的第三方Bean的详细解析
7 0

相关产品

  • 云解析DNS
  • 推荐镜像

    更多