RH254小结(一)unbound DNS服务器的搭建
rhce7版本带有老的bind DNS软件包,也带有新的unbound软件包,不过默认是unbound DNS ,在新版本的RHCE里考核的也是unbound DNS。Unbound 是一款验证(validating)、递归(recursive)及缓存(caching) DNS 解析器(resolver)。以 BSD 许可证发布,轻量级+模块(iterator、validator、cache,配置:module-config)化设计,充分考虑安全,拥有出色的性能。
一、DNS中的七大资源记录
在进行近一步的配置之前,我们先了解下DNS用于解析的七大资源记录信息。
1、A记录
A记录也称为主机记录,A记录的基本作用就是说明一个域名对应的IP是多少,在配置中我们也经常叫做正向解析。
2、PTR记录
PTR记录也被称为指针记录,PTR记录是A记录的逆向记录,作用是把IP地址解析为域名。一般我们也叫做反向解析记录。
3、NS记录
NS记录和SOA记录是任何一个DNS区域都不可或缺的两条记录,NS记录也叫名称服务器记录,用于说明这个区域有哪些DNS服务器负责解析。
4、SOA记录
SOA名叫起始授权机构记录,SOA记录说明负责解析的DNS服务器中哪一个是主服务器。
5、MX记录
全称是邮件交换记录,在使用邮件服务器的时候,MX记录是无可或缺的,比如A用户向B用户发送一封邮件,那么他需要向DNS查询B的MX记录,DNS在定位到了B的MX记录后反馈给A用户,然后A用户把邮件投递到B用户的MX记录服务器里!
6、cname记录
别名记录,举个简单的例子,比如王小明(大名),小名叫做钢蛋。其中钢蛋就是王小明的别名记录。
7、SRV记录
SRV记录的作用是说明一个服务器能够提供什么样的服务!SRV记录在微软的Active Directory中有着重要地位 。
二、unbound的安装配置
1、安装
1# yum -y install unbound
2、常见配置项
unbound的主配置文件为/etc/unbound/unbound.conf ,打开该配置文件主要修改如下几项。
监听接口,默认监听的接口为127.0.0.1,通过如下的配置,使其监听所有网络接口。
1interface: 0.0.0.0
访问控制,unbound的配置是相当安全的,可以通过access-control 可以指定给哪些网段提供DNS服务。如果对所有主机提供DNS服务,则后面的地址写为0.0.0.0/0 。当然,除了配置allow规则 ,也可以配置refuse (拒绝)网段。
1access-control: 127.0.0.0/8 allow
2access-control: 192.168.0.0/24 allow
区域配置,本地区域配置主要分为local-zone、local-data 和 local-data-ptr 。这里假设配置一个域名为rhce.com 的域名,其A记录、MX记录配置结果如下
1local-zone: "rhce.com" static
2local-data: "www.rhce.com. IN A 192.168.0.103"
3local-data-ptr: "192.168.0.103 www.rhce.com"
4local-data: "rhce.com. IN MX 5 mail.rhce.com"
5local-data: "mail.rhce.com. IN A 192.168.0.103"
注意local-data配置中域名最后的点符号,在ptr 配置中域名最后没有这个点符号。
转发配置,按上面的配置,我们可以指定rhce.com、361way.com这样类似的域名设置,不过互联网上的域名如此名,我们不可能一一都配置进去。这时候就需要指定上一级DNS转发如www.baidu.com、www.163.com这样的域名请求。这需要配置forward-zone,具体类似如下:
1forward-zone:
2 name: .
3 forward-addr: 114.114.114.114
4 forward-addr: 8.8.8.8
上面name后面用点表示根域,即转发除上面local -zone中配置的域名之外,所有的其他域名都是请求forward-addr地址 ,这里也可以指定非53端口的DNS主机,需要在主机IP后跟上端口。如果name后面跟的不是点,而是其他域名,如361way.com,则表示,只有在请求361way.com 域名时,转到114.114.114.114和8.8.8.8两个上级DNS 。
这样配置完成后,重启unbound服务就可以使用了。这里列下完整形的配置---除了上面提到的相关配置,其他都是默认配置。
1# grep -v '#' unbound.conf|grep -v ^$
2server:
3 verbosity: 1
4 statistics-interval: 0
5 statistics-cumulative: no
6 extended-statistics: yes
7 num-threads: 2
8 interface: 0.0.0.0
9 interface-automatic: no
10 access-control: 127.0.0.0/8 allow
11 access-control: 192.168.0.0/24 allow
12 chroot: ""
13 username: "unbound"
14 directory: "/etc/unbound"
15 log-time-ascii: yes
16 pidfile: "/var/run/unbound/unbound.pid"
17 harden-glue: yes
18 harden-dnssec-stripped: yes
19 harden-below-nxdomain: yes
20 harden-referral-path: yes
21 use-caps-for-id: no
22 unwanted-reply-threshold: 10000000
23 prefetch: yes
24 prefetch-key: yes
25 rrset-roundrobin: yes
26 minimal-responses: yes
27 dlv-anchor-file: "/etc/unbound/dlv.isc.org.key"
28 trusted-keys-file: /etc/unbound/keys.d/*.key
29 auto-trust-anchor-file: "/var/lib/unbound/root.key"
30 val-clean-additional: yes
31 val-permissive-mode: no
32 val-log-level: 1
33 local-zone: "rhce.com" static
34 local-data: "www.rhce.com. IN A 192.168.0.103"
35 local-data-ptr: "192.168.0.103 www.rhce.com"
36 local-data: "rhce.com. IN MX 5 mail.rhce.com"
37 local-data: "mail.rhce.com. IN A 192.168.0.103"
38 include: /etc/unbound/local.d/*.conf
39remote-control:
40 control-enable: yes
41 server-key-file: "/etc/unbound/unbound_server.key"
42 server-cert-file: "/etc/unbound/unbound_server.pem"
43 control-key-file: "/etc/unbound/unbound_control.key"
44 control-cert-file: "/etc/unbound/unbound_control.pem"
45include: /etc/unbound/conf.d/*.conf
46forward-zone:
47 name: .
48 forward-addr: 114.114.114.114
通过unbound-check工具检测配置文件中是否存在语法错误:
1# unbound-checkconf
2unbound-checkconf: no errors in /etc/unbound/unbound.conf
3、防火墙配置
1重启unbound服务,加载上面的配置
2# systemctl restart unbound.service
3防火墙配置
4# firewall-cmd --permanent --add-service=dns
5# firewall-cmd --reload
6查看本地DNS cache记录,可以通过unbound-control flush清空
7# unbound-control dump_cache
4、DNS测试
在同网段的其他主机的/etc/resolv.conf文件中增加如下配置(这里的0.110地址,是上面配置的DNS服务器的地址: nameserver 192.168.0.110
或者在ifcfg-ethX网络接口配置文件中增加如下行:
1DNS1="192.168.0.110"
配置完后,在本地通过nslookup、dig、ping 等进行测试,如下:
1nslookup www.rhce.com
2dig www.rhce.com
3nslookup -type=mx rhce.com
4dig -t mx rhce.com
5ping www.rhce.com
6ping www.baidu.com
在测试时,有时需要清空本地DNS cache,在windows下可以通过ipconfig /flushdns ,在linux下可以通安装nscd服务,并通过nscd -i hosts ,或都通过 dig @dns_server example.com 的方法更新DNS 。
三、unbound的其他相关项
Unbound 有一些统计相关的参数:statistics-interval,统计信息打印到纪录文件的时间间隔;statistics-cumulative 则是用于决定统计信息是否累计;extended-statistics,是否纪录一些扩展的统计信息。这些可以配合发行包 contrib/ 下的 Munin 和 Cacti 扩展来进行统计绘图。
num-threads、so-*buf、*-cache-slabs、*-cache-size,outgoing-range 和 Unbound 的性能优化相关。其中 outgoing-range 是每个线程打开的文件描述符的数量,实际打开的总数为 num-threads * outgoing-range,在没有 libevent 的情况下最大 1024。Unbound 可以运行在几种“模式”下:普通线程模式(num-threads 设置为 1 时可以停用线程,即单进程单线程)、libevent/线程模式(需要提供 –with-libevent) 、fork(据文档,因为没有线程锁开销,性能会有所提高;需要提供 –without-pthreads、–without-solaris-threads)。
关于 interface 配置,interface 用于应答,而 outgoing-interface 则是配置对权威 DNS 服务器查询从哪个 interface 走。对返回的 DNS 查询结果,Unbound 会过滤掉不合理的纪录——如果某上级 DNS 服务器返回私有 IP 地址,则该应答无效。对于需要返回这类地址的情况,可以将域加入 private-domain,同时 local-data 允许私有 IP 地址的出现。prefetch 用于配置缓存内容预取来保证缓存的新鲜。
Unbound 有一系列命令行工具,unbound-checkconf(8) 和 named-checkconf(8) 类似,用于检查配置文件。unbound-host(1) 和 host(1) 类似,用于查询,并返回一些额外的安全信息。unbound-control(8) 是一个用于控制远程 Unbound 服务器的工具。还有 LibUnbound 库用于将 Unbound 嵌入程序。
参考文档:[https://unbound.net/documentation/index.html](https://calomel.org/unbound_dns.html https://unbound.net/documentation/index.html)
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/rh254-unbound/4672.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.