DNS缓存服务器(Caching DNS Server)是一种不负责域名数据维护的DNS服务器。简单来说,缓存服务器就是把用户经常使用到的域名与IP地址的解析记录保存在主机本地,从而提升下次解析的效率。DNS缓存服务器一般用于经常访问某些固定站点而且对这些网站的访问速度有较高要求的企业内网中,但实际的应用并不广泛。而且,缓存服务器是否可以成功解析还与指定的上级DNS服务器的允许策略有关,因此当前仅需了解即可。
第1步:配置系统的双网卡参数。前面讲到,缓存服务器一般用于企业内网,旨在降低内网用户查询DNS的时间消耗。因此,为了更加贴近真实的网络环境,实现外网查询功能,我们需要在缓存服务器中再添加一块网卡,并按照表13-4所示的信息来配置出两台Linux虚拟机系统。而且,还需要在虚拟机软件中将新添加的网卡设置为“桥接模式”,然后设置成与物理设备相同的网络参数(此处需要大家按照物理设备真实的网络参数来配置,图13-6所示为以DHCP方式获取IP地址与网关等信息,重启网络服务后的效果如图13-7所示)。
表13-4 用于配置Linux虚拟机系统所需的参数信息
主机名称 操作系统 IP地址 缓存服务器 RHEL 7 网卡(外网):根据物理设备的网络参数进行配置(通过DHCP或手动方式指定IP地址与网关等信息) 网卡(内网):192.168.10.10 客户端 RHEL 7 192.168.10.20
图13-6 以DHCP方式获取网络参数
图13-7 查看网卡的工作状态
第2步:在bind服务程序的主配置文件中添加缓存转发参数。在大约第17行处添加一行参数“forwarders { 上级DNS服务器地址; };”,上级DNS服务器地址指的是获取数据配置文件的服务器。考虑到查询速度、稳定性、安全性等因素,刘遄老师在这里使用的是北京市公共DNS服务器的地址210.73.64.1。如果大家也使用该地址,请先测试是否可以ping通,以免导致DNS域名解析失败。
[root@linuxprobe ~]# vim /etc/named.conf 1 // 2 // named.conf 3 // 4 // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS 5 // server as a caching only nameserver (as a localhost DNS resolver only). 6 // 7 // See /usr/share/doc/bind*/sample/ for example named configuration files. 8 // 9 options { 10 listen-on port 53 { any; }; 11 listen-on-v6 port 53 { ::1; }; 12 directory "/var/named"; 13 dump-file "/var/named/data/cache_dump.db"; 14 statistics-file "/var/named/data/named_stats.txt"; 15 memstatistics-file "/var/named/data/named_mem_stats.txt"; 16 allow-query { any; }; 17 forwarders { 210.73.64.1; }; ………………省略部分输出信息……………… [root@linuxprobe ~]# systemctl restart named 第3步:重启DNS服务,验证成果。把客户端主机的DNS服务器地址参数修改为DNS缓存服务器的IP地址192.168.10.10,如图13-8所示。这样即可让客户端使用本地DNS缓存服务器提供的域名查询解析服务。
图13-8 设置客户端主机的DNS服务器地址参数
在将客户端主机的网络参数设置妥当后重启网络服务,即可使用nslookup命令来验证实验结果(如果解析失败,请读者留意是否是上级DNS服务器选择的问题)。其中,Server参数为域名解析记录提供的服务器地址,因此可见是由本地DNS缓存服务器提供的解析内容。
[root@linuxprobe ~]# nslookup > www.linuxprobe.com Server: 192.168.10.10 Address: 192.168.10.10#53
Non-authoritative answer: Name: www.linuxprobe.com Address: 113.207.76.73 Name: www.linuxprobe.com Address: 116.211.121.154 > 8.8.8.8 Server: 192.168.10.10 Address: 192.168.10.10#53
Non-authoritative answer: 8.8.8.8.in-addr.arpa name = google-public-dns-a.google.com. Authoritative answers can be found from: in-addr.arpa nameserver = f.in-addr-servers.arpa. in-addr.arpa nameserver = b.in-addr-servers.arpa. in-addr.arpa nameserver = a.in-addr-servers.arpa. in-addr.arpa nameserver = e.in-addr-servers.arpa. in-addr.arpa nameserver = d.in-addr-servers.arpa. in-addr.arpa nameserver = c.in-addr-servers.arpa. a.in-addr-servers.arpa internet address = 199.212.0.73 a.in-addr-servers.arpa has AAAA address 2001:500:13::73 b.in-addr-servers.arpa internet address = 199.253.183.183 b.in-addr-servers.arpa has AAAA address 2001:500:87::87 c.in-addr-servers.arpa internet address = 196.216.169.10 c.in-addr-servers.arpa has AAAA address 2001:43f8:110::10 d.in-addr-servers.arpa internet address = 200.10.60.53 d.in-addr-servers.arpa has AAAA address 2001:13c7:7010::53 e.in-addr-servers.arpa internet address = 203.119.86.101 e.in-addr-servers.arpa has AAAA address 2001:dd8:6::