RH254小结(一)unbound DNS服务器的搭建

2015年8月15日 发表评论 阅读评论

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、安装

# yum -y install unbound

2、常见配置项

unbound的主配置文件为/etc/unbound/unbound.conf ,打开该配置文件主要修改如下几项。

监听接口,默认监听的接口为127.0.0.1,通过如下的配置,使其监听所有网络接口。

interface: 0.0.0.0

访问控制,unbound的配置是相当安全的,可以通过access-control 可以指定给哪些网段提供DNS服务。如果对所有主机提供DNS服务,则后面的地址写为0.0.0.0/0 。当然,除了配置allow规则 ,也可以配置refuse (拒绝)网段。

access-control: 127.0.0.0/8 allow
access-control: 192.168.0.0/24 allow

区域配置,本地区域配置主要分为local-zone、local-data 和 local-data-ptr 。这里假设配置一个域名为rhce.com 的域名,其A记录、MX记录配置结果如下

local-zone: "rhce.com" static
local-data: "www.rhce.com. IN A 192.168.0.103"
local-data-ptr: "192.168.0.103 www.rhce.com"
local-data: "rhce.com. IN MX 5 mail.rhce.com"
local-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,具体类似如下:

forward-zone:
        name: .
        forward-addr: 114.114.114.114
        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服务就可以使用了。这里列下完整形的配置---除了上面提到的相关配置,其他都是默认配置。

# grep -v '#' unbound.conf|grep -v ^$
server:
        verbosity: 1
        statistics-interval: 0
        statistics-cumulative: no
        extended-statistics: yes
        num-threads: 2
        interface: 0.0.0.0
        interface-automatic: no
        access-control: 127.0.0.0/8 allow
        access-control: 192.168.0.0/24 allow
        chroot: ""
        username: "unbound"
        directory: "/etc/unbound"
        log-time-ascii: yes
        pidfile: "/var/run/unbound/unbound.pid"
        harden-glue: yes
        harden-dnssec-stripped: yes
        harden-below-nxdomain: yes
        harden-referral-path: yes
        use-caps-for-id: no
        unwanted-reply-threshold: 10000000
        prefetch: yes
        prefetch-key: yes
        rrset-roundrobin: yes
        minimal-responses: yes
        dlv-anchor-file: "/etc/unbound/dlv.isc.org.key"
        trusted-keys-file: /etc/unbound/keys.d/*.key
        auto-trust-anchor-file: "/var/lib/unbound/root.key"
        val-clean-additional: yes
        val-permissive-mode: no
        val-log-level: 1
        local-zone: "rhce.com" static
        local-data: "www.rhce.com. IN A 192.168.0.103"
        local-data-ptr: "192.168.0.103 www.rhce.com"
        local-data: "rhce.com. IN MX 5 mail.rhce.com"
        local-data: "mail.rhce.com. IN A 192.168.0.103"
        include: /etc/unbound/local.d/*.conf
remote-control:
        control-enable: yes
        server-key-file: "/etc/unbound/unbound_server.key"
        server-cert-file: "/etc/unbound/unbound_server.pem"
        control-key-file: "/etc/unbound/unbound_control.key"
        control-cert-file: "/etc/unbound/unbound_control.pem"
include: /etc/unbound/conf.d/*.conf
forward-zone:
        name: .
        forward-addr: 114.114.114.114

通过unbound-check工具检测配置文件中是否存在语法错误:

# unbound-checkconf
unbound-checkconf: no errors in /etc/unbound/unbound.conf

3、防火墙配置

重启unbound服务,加载上面的配置
# systemctl restart unbound.service
防火墙配置
# firewall-cmd --permanent --add-service=dns
# firewall-cmd --reload
查看本地DNS cache记录,可以通过unbound-control flush清空
# unbound-control dump_cache

4、DNS测试

在同网段的其他主机的/etc/resolv.conf文件中增加如下配置(这里的0.110地址,是上面配置的DNS服务器的地址)

nameserver 192.168.0.110

或者在ifcfg-ethX网络接口配置文件中增加如下行:

DNS1=“192.168.0.110”

配置完后,在本地通过nslookup、dig、ping 等进行测试,如下:

nslookup www.rhce.com
dig www.rhce.com
nslookup -type=mx rhce.com
dig -t mx rhce.com
ping www.rhce.com
ping 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




本站的发展离不开您的资助,金额随意,欢迎来赏!

You can donate through PayPal.
My paypal id: itybku@139.com
Paypal page: https://www.paypal.me/361way