一、DNS服务简介
DNS服务器,也称为域名解析服务器,是用来将互联网上的域名解析为IP地址的一类服务器,在世界上有成百上千台DNS服务器。对于有些公司来说,对于同一个域名可能有多个DNS服务器,这样可以降低主域名服务器的负载。例如www.baidu.com,可能会存在多个DNS服务器,因为在同一时刻可能有成百上千台主机同时请求www.baidu.com这个域名,如果只有一台DNS服务器,可能在某一时刻会拒绝服务。因此会建多个DNS服务器,分布于世界各地,这样也可以避免由于自然灾害而对域名服务器造成损坏。
二、搭建前准备
本次实验需要三台Linux主机(kylinv10-gfb-x86),一台作为主DNS服务器,一台作为从属DNS服务器,还要一台作为DNS客户端。
三、环境搭建
1、配置ip地址
(1):修改/etc/sysconfig/network-scripts/ifcfg-ens33文件
修改内容如下
将主DNS服务器的IP地址设为192.168.15.11,从属DNS服务器的IP地址设为192.168.15.12,客户端的IP地址设为192.168.15.10。
2.配置主域名服务器
(1):安装bind包(系统中自带kylinv10-gfb-x86)
# yum install bind -y
(2):修改主配置文件
# vim /etc/named.conf
- :检测修改后的主配置文件是否正确
没有报错,说明修改后的配置文件并没有错误。
(4):新建一个正向区域配置文件demo.com.zone(注意改配置文件的名字与上面第二步指定的正向配置文件要一致)
# vim /var/named/test.com.zone
(5):检测修改后的正向区域配置文件是否正确
# cd /var/named
# named-checkzone demo.com demo.com.zone
zone demo.com/IN: loaded serial 0
OK
OK表明正向区域配置文件没有错误
(6):新建反向区域配置文件191.168.15.zone 为了方便,可以将正向区域配置文件拷贝然后进行修改
(7):检测修改后的反向配置文件是否正确
Ok表明文件并没有错误
(8)重启DNS服务,使刚才的配置文件生效
# systemctl restart named
3.配置DNS客户端
(1):修改ens33配置文件(修改DNS1和DNS2的值)
DNS1的IP地址为主域名服务器的IP地址(192.168.15.11)
DNS2的IP地址为从属域名服务器的IP地址(192.168.15.12)
(2):重启网络服务,使刚才的修改生效
# systemctl restart network
(3):查看DNS的IP地址
# cat /etc/resolv.conf
(4):在客户机上查看主DNS服务器的解析是否正确
[root@localhost ~]# nslookup www.test.com
上图表明DNS服务器的解析是正确的
4.配置从属DNS服务器
(1):安装bind
# yum install bind -y
(2)修改配置文件
上图是全局配置部分,53为默认端口,192.168.191.12为从属DNS域名服务器,allow-query { 0.0.0.0/0; };表明允许所有的IP查询
上图是正向区域配置部分,demo.com 为域名后缀,type slave表明这是从属服务器,file指定文件存储目录,masters{ 192.168.15.11 } 指明了主DNS服务器的IP地址。( file “slaves/test.com.zone”;)
上图是反向区域配置部分,其含义与正向区域配置部分含义相同。(15.168.192.in-addr.arpa; file “slaves/192.168.15.zone”
(3):检测配置文件是否正确
没有输出结果,说明配置文件没有错误
(4):重启DNS服务
# systemctl restart named
(5)查看主域名服务器传送过来的数据
此时,已经有文件传送过来了,分别是正向区域解析的文件和反向区域解析的文件,但是文件加密无法查看。
5.验证
由于之前测试主域名服务器解析时已经配好了客户端,现在可以直接测试。
(1):正向解析(若不指定DNS域名服务器,则默认向主域名服务器发起解析)
可以看见,第二行的Server默认使用的是主域名服务器
(2):正向解析(指定DNS域名服务器)与反向解析
这次解析使用的是从属DNS域名服务器
通过IP地址解析出来域名,说明反向解析也配置成功了。
至此,DNS域名服务器的配置就成功了!
(3):外部中转
这里服务器 是本来不会解析到baidu.com ,所以想要解析外部域名,就需要上级dns求助,这里向192.168.232.2(互联网网关)递归。
所以在客户端可以解析到baidu.com
- 案例分析
某客户应用内部dns服务器,用于访问存储。客户网络监控软件发现,该服务器有外网访问请求。
- 分析
在dns服务器上通过netstat命令查看是哪里发的请求,发现网络中都有大量终端有访问互联网的请求,并通过本地dns服务器请求解析,dns服务器向上请求,导致监控软件发现有访问互联网请求
- 解决办法
设置dns服务器只做本地转发,禁止向上解析。
转发器的配置格式是:
options {
forwarders { 192.168.232.2; };(这里我们设置dns服务器本身ip地址,只解析到本地即可)
};
测试
dns服务器配置(有向上解析)
客户端查询,可以解析到外网,可以解析到本地
服务器设置后
客户端解析发现无法解析外网,本地正常解析
3、关于转发具体解释
在DNS服务器的配置中,如果采用默认的配置,其实效率是较低的,因为默认情况下,我们所有的非权威解析都会被发送到根服务器进行迭代查询。如果采用转发,如将我们的DNS解析请求转发到一些公共DNS服务器上,由于公共DNS服务器上缓存了大量的解析,因此能较原始的迭代查询快。
说明:实现对非权威解析(已缓存的除外)都转发到特定DNS服务器
配置:
在主配置文件/etc/named.conf的全局选项中添加如下内容:
options {
# 指明转发器是谁
forwarders { ip; };
# only表示仅转发
# first表示先进行转发,如果没查询到结果,那么它自己还会根据根提示向外迭代查询
forward only|first;
};
举例:
options {
……
forwarders { 202.96.134.133;8.8.8.8; };
};
- 如果仅设置“forwarders”,则在无法联系转发器时,就会尝试自己解析,即转发到根服务器迭代查询实现解析(如果配置有根zone)。
- 如果想服务器在联系不到转发器时不进行多余操作,则可以加上“forward only; ”(如下:);这样如果联系不上转发器是,服务器将只查询权威解析和本地缓存的解析。
options {
……
forwarders { 202.96.134.133;8.8.8.8; };
forward only;
};