unbound域名解析
DNS (Domain Name Server)域名解析服务, 使用TCP&UDP的53号端口(主从服务器使用TCP53号端口,客户端查询使用UDP)。它可以完成域名与IP地址的互换,可以通过IP地址解析到域名,也可以通过域名解析到IP地址。 FQDN(Fully Qualified Domain Name)完全合格域名,层次化树形结构。通常表现为:主机名.子域.二级域.顶级域.根域. 。
DNS的查询方式分两种,一种是迭代查询,服务器与服务器之间的查询。本地域名服务器向根域名服务器的查询通常是采用迭代查询(反复查询)。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器下一步应向那个域名服务器进行查询。然后让本地域名服务器进行后续的查询;另一种是递归查询:客户端与服务器之间的查询。主机向本地域名服务器的查询一般都是采用递归查询。如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文。最后会给客户端一个准确的返回结果。解析方式又分为正向解析和反向解析。正向解析是由域名解析到IP地址,反向解析是由IP地址解析到域名。
RHEL7自带了Bind和Unbound两种DNS服务包,Unbound是红帽公司推荐使用的DNS服务器。随着网络的迅速发展,Bind系统已经越来越不适应在如今复杂的大规模网络环境下提供DNS服务了。Unbound是类Unix操作系统下的默认DNS服务器软件,功能强大、安全性高、跨平台(类Unix、Linux、Windows)、易于配置,以及支持验证、递归(转发)、缓存等功能的DNS服务软件。(本次实验主要验证unbound)
实验环境介绍
实验Linux主机如下:
主服务器,主机名 Red-node-3 IP 192.168.43.152(桥接模式)
缓存及转发服务器,主机名 Red-node-4 IP 192.168.175.134 (nat模式下)
客户机主机名,主机名 Red-node-1 IP 192.168.175.131 (nat模式下)
实验步骤
1、安装unbound,安装之前需要先配置yum仓库。
[root@mylinux01 ~]# yum install unbound -y
2、修改配置文件,相关配置文件及目录如下。
位置及名称 | 作用 |
/etc/unbound/unbound.conf | 主(全局)配置文件 |
/etc/unbound/local.d/ | 子配置文件所在目录。其中的*.conf文件用于定义正向解析记录和反向解析记录以及设置转发 |
/etc/hosts | 用于指定IP地址与主机名的映射关系 |
/etc/resolv.conf | 为Linux客户端指定DNS服务器的IP地址的配置文件 |
/etc/nsswitch.conf | /etc/nsswitch.conf文件的第39行“hosts: files dns”规定了一台主机解析的顺序,首先找的是本地文件/etc/hosts,然后再是DNS。 |
我们先修改主配置文件,修改下列参数,部分参数默认被注释,需要取消注释。
[root@Redhat-node-3 ~]# vim /etc/unbound/unbound.conf
(第48行) interface: 0.0.0.0 #取消注释,监听所有接口,所有IP
(第253行)access-control: 0.0.0.0/0 allow #取消注释,并修改参数为allow以允许所有主机来进行访问。
(第305行)username: "" #默认为username: "unbound",目前不需要做认证,修改为空。
3、修改子配置文件,子配置文件保存在/etc/unbound/local.d/目录中,文件名没有特殊的要求,但必须以.conf结尾。---文件名称和其中一个域名一致。
[root@mylinux01 ~]# vim /etc/unbound/local.d/Redhat-node-3.conf
local-zone: "Redhat-node-3." static #区域,管理Redhat-node-3域的主机,static表示静态解析,域名、主机名 都必须以 . 结束
local-data: "Redhat-node-3. 86400 SOA Redhat-node-3. root 1 1D 1H 1W 1H"
#第一个86400表示放在缓存的过期时间SOA表示从它的下一行开始做解析,下一个Redhat-node-3是DNS的主机名,root表示邮箱, 不以 . 结束会用域名自动补齐,111表示更新的序列号,从服务器根据序列号判断自己是否要执行更新操作。2000是备用服务器请求更新的间隔时间,主服务器没有回应就间隔1000秒再请求一次, 请求4000秒后过期(连续4次),不再请求,认为主机已经故障,自己开始对外提供服务,最后一个也是缓存失效时间,时间单位都是秒。
local-data: "Redhat-node-3. NS Redhat-node-3." #指定Reahat-node-3域DNS服务器的主机名。
local-data: "Redhat-node-3. MX 5 Redhat-node-3." #邮件服务器
local-data: "www.zhangsenxi.com. A 192.168.175.131"
local-data: "bbb.mylinux.com. A 192.168.175.30"
local-data: "bbb.mylinux.com. IN CNAME ccc.mylinux.com." #CNAME解析
local-data-ptr: "192.168.175.30 bbb.mylinux.com." # 返向解析
local-data-ptr: "192.168.175.131 www.zhangsenxi.com."
4、客户端:修改/etc/resolv.conf将 nameserver 192.168.43.152添加到该文件的内容中。 并使用命令:nmcli networking off 。接着nmcli networking on
服务器:重启服务: systemctl restart unbound
关闭防火墙 : systemctl stop firewall
关闭selinux : setenforce 0
测试
客户端使用nslookup命令进行测试