八、构建缓存域名服务器

缓存域名服务器通常架设在公司的局域网内,主要目的是提高域名解析的速度,减少对互联网访问的出口流量。

 

①. 建立主配置文件named.conf

若使用范本文件创建named.conf,应注意修改或删除默认的监听设置、查询控制,以便能够为局域网段的客户机提供服务。另外,logging、view配置部分一般用不到,可以先注释以避免其干扰。

[root@localhost ~]# vim /etc/named.conf

options {

   listen-on port 53 { 192.168.200.111; };   //监听地址和端口

   directory       "/var/named";      //区域数据文件的默认存放位置

   dump-file       "/var/named/data/cache_dump.db"; //设置域名缓存数据库文件位置

   statistics-file "/var/named/data/named_stats.txt";     //设置状态统计文件位置

   memstatistics-file "/var/named/data/named_mem_stats.txt";

   allow-query     { 192.168.200.0/24; }; //允许使用本DNS服务的网段

   recursion yes;

};

zone "." IN {                    //正向“.”根区域

        type hint;               //类型为根区域

        file "named.ca";          //区域数据文件为named.ca

};

 上述配置内容中,dump-file、statistics-file、memstatistics-file等配置项用于指定缓存数据库文件、状态统计文件的位置。添加了“zone "." IN{ ……};”部分的根区域设置,尽管缓存服务器并没有自主控制的区域数据,但可以向根服务器进行迭代查询,并将最终获得的解析结果反馈给客户。

有时候为了提高解析效率,也可以不向根区域查询,而是将来自客户端的查询请求转发给国内电信运营商的DNS服务器(如北京的202.106.0.20、 202.106.148.1),缓存服务器收到返回的查询结果后再传递给客户端。只要去掉“zone "." IN{ ……};”的设置,并在全局配置中正确设置forwarders参数即可实现该功能

[root@localhost etc]# vim named.conf

options {

   ……                                      //省略部分内容

   forwarders{202.106.0.20;   202.106.148.1;};

};

 ②. 确认根域的区域数据文件named.ca

根区域的区域数据文件默认位于文件/var/named/named.ca中,该文件记录了Internet中13台根域服务器的域名和IP地址等相关信息。

[root@localhost ~]# ls /var/named/

data  dynamic  named.ca  named.empty  named.localhost named.loopback  slaves

 

③. 启动named服务

执行“systemctl start named”命令,启动named服务,并通过netstat命令确认named服务的端口监听状态。若服务启动失败或发现没有正常监听UDP53端口,可以根据错误提示信息(或者/var/log/messages文件中的日志记录)排除错误,然后再重启服务即可。

[root@localhost ~]# systemctl start named

[root@localhost ~]# systemctl enable named

Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.

[root@localhost ~]# netstat -anpu | grep named

udp        0      0 192.168.200.111:53      0.0.0.0:*                           63751/named

 

④. 验证缓存域名服务器

在局域网内的客户机中,将首选DNS服务器的地址设为192.168.200.111.生效后,执行“nslookup

www.baidu.com”命令对其进行解析,验证其是否能够获得该域名对应的IP地址信息

九、构建主域名服务器

 

下面首先讲解使用BIND构建主域名服务器的基本步骤。

①. 确认本机的网络地址、主机映射、默认DNS服务器地址。

主域名服务器的IP地址设为192.168.200.111、主机名设为ns1.crushlinux.com,通过修改网络配置文件的方式进行。另外,为了提高域名解析效率,建议将两个DNS服务器的地址映射直接写入到/etc/hosts文件中,并在/etc/resolv.conf文件中指定两个DNS服务器的地址。

[root@localhost ~]# tail -2 /etc/hosts

192.168.200.111     nsl.crushlinux.com   nsl

192.168.200.112     ns2.crushlinux.com   ns2

[root@localhost ~]# tail -2 /etc/resolv.conf

nameserver    192.168.200.111

nameserver    192.168.200.112

②. 建立主配置文件named.conf

新创建的named.conf主配置文件,由于只需要提供crushlinux.com域的正向解析和192.168.200.0/24网段的反向解析,因此相应地添加这两个区域即可。根区域、回环域等其他配置内容可以省略。

[root@localhost ~]# cd /etc/

[root@localhost etc]# vim named.conf

options {

   directory "/var/named";  //区域数据文件的默认存放位置

};

 

zone "crushlinux.com" IN {           //正向"crushlinux.com"区域

type master;                        //类型为主区域

file "crushlinux.zheng"; //区域数据文件为crushlinux. com. zone

allow-transfer { 192.168.200.112; };//允许下载的从服务器地址

};

 

zone "200.168.192.in-addr.arpa" IN {  //反向"192.168.200.0/24"区域

type master;

file "crushlinux.fan";

allow-transfer { 192.168.200.112; };//允许从服务器地址下载反向域数据

};

不需要建立从域名服务器时,上述配置内容中的“allow-transfer ……”部分可以不添加,当不需要提供反向解析时,“zone "200.168.192.in-addr.arpa" IN { …… }”部分也可以去掉。

 

③. 建立正向、反向区域数据文件。

根据named.conf中的zone区域设置,分别建立正向区域数据文件crushlinux.zheng.反向区域数据文件crushlinux.fan配置内容可以参考区域数据文件/var/named/named.localhost。

[root@localhost ~]# cd /var/named/

[root@localhost named]# vim crushlinux.zheng

$TTL  86400     ;有效解析记录的生存周期

@  IN SOA crushlinux.com. admin.crushlinux.com. ( ;SOA标记、域名、管理邮箱

   2011030501 ;更新序列号,可以是10位以内的整数

   3H        ;刷新时间,重新下载地址数据的间隔

   15M       ;重试延时,下载失败后的重试间隔

   1W        ;失效时间,超过该时间仍无法下载则放弃

   1D        ;无效解析记录的生存周期

)

@     IN NS    ns1.crushlinux.com.

      IN NS    ns2.crushlinux.com.

      IN MX 10 mail.crushlinux.com.

ns1   IN A     192.168.200.111

ns2   IN A     192.168.200.112

mail     IN A     192.168.200.112

www IN A     192.168.200.111

study  IN A     192.168.200.113

*     IN A     192.168.200.111

 

[root@localhost named]# vim crushlinux.fan

$TTL  86400

@  IN SOA crushlinux.com. admin.crushlinux.com. (

2011030501

   3H

   15M

   1W

   1D

)

@     IN NS    ns1.crushlinux.com.

      IN NS    ns2.crushlinux.com.

111   IN PTR    www.crushlinux.com.

112   IN PTR    mail.crushlinux.com.

113   IN PTR    study.crushlinux.com.

111   IN PTR    ns1.crushlinux.com.

112   IN PTR    ns2.crushlinux.com.

 

④. 启动named服务或重载配置。

启动named服务,如果之前named服务已经在运行,也可以重启服务或重载配置。

[root@localhost named]# chgrp named crushlinux.zhengcrushlinux.fan

[root@localhost ~]# named-checkconf /etc/named.conf

[root@localhost ~]# named-checkzone crushlinux.com /var/named/crushlinux.zheng

zone crushlinux.com/IN: loaded serial 2019010801

OK

[root@localhost ~]# named-checkzone crushlinux.com /var/named/crushlinux.fan

zone crushlinux.com/IN: NS 'ns1.crushlinux.com' has no address records (A or AAAA)

zone crushlinux.com/IN: NS 'ns2.crushlinux.com' has no address records (A or AAAA)

zone crushlinux.com/IN: not loaded due to errors.

 

[root@localhost named]# systemctl reload named

[root@localhost ~]# chown :named /var/named/crushlinux.*

[root@localhost ~]# named-checkconf -z /etc/named.conf

[root@localhost ~]# named-checkzone crushlinux.com /var/named/crushlinux.zheng

[root@localhost ~]# named-checkzone crushlinux.com /var/named/crushlinux.fan

[root@localhost ~]# systemctl restart named

iptables -F

systemctl stop firewalld

setenforce 0

⑤. 验证主域名服务器。

客户端将DNS服务器指向192.168.200.111 (主域名服务器的IP地址) ,使用nslookup命令验证DNS查询结果。例如,以下操作使用Windows 7客户机分别验证了正向解析、泛域名解析、反向解析的查询结果。

C:\Users\Administrator> nslookup study.crushlinux.com      //验证正向域名解析

服务器: nsl.crushlinux.com

Address: 192.168.200.111

名称: Study.crushlinux.com

Address: 192.168.200.113

C:\Users\Administrator>nslookup www.crushlinux.com

服务器:  ns1.crushlinux.com

Address:  192.168.200.111

 

名称:    www.crushlinux.com

Address:  192.168.200.111

 

C: \Users\Administrator> nslookup xxyyzz.crushlinux.com   //验证泛域名解析

服务器: nsl.crushlinux.com

Address: 192.168.200.111.

名称: xxyyzz.crushlinux.com

Address: 192.168.200.111

C:\Users\Administrator> nslookup192.168.200.112         //验证反向域名解析

服务器: nsl.crushlinux.com

Address: 192.168.200.111

名称: mai1.crushlinux.com

Address: 192.168.200.112

 

十、构建从域名服务器

①. 确认本机的网络地址、主机映射、默认DNS服务器地址

从域名服务器IP地址设为192.168.200.112,主机名设为ns2.crushlinux.com,通过修改网络配置文件的方式进行。另外,主机映射文件/etc/hostsDNS解析文件/etc/resolve.conf的内容与主服务器中的内容相同。

[root@localhost ~]# cat /etc/resolv.conf

# Generated by NetworkManager

nameserver 192.168.200.111

nameserver 192.168.200.112

[root@localhost ~]# cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.200.111 ns1.crushlinux.com

192.168.200.112 ns2.crushlinux.com

 

②. 建立主配置文件named.conf

在从域名服务器中,named.conf文件的内容与主服务器的内容大部分相同,只是不需要再设置“allow-transfer ……”,更关键的一点是, zone部分的区域类型应设置为“slave”,并添加“masters {  };”语句来指定主域名服务器的地址。

[root@localhost ~]# yum -y install bind

[root@localhost ~]# cd /etc/

[root@localhost etc]# vim named.conf

options {

   directory  "/var/named";

};

 

zone "crushlinux.com" IN {              //正向"crushlinux.com"区域

   type slave;                     //类型为从区域

   masters { 192.168.200.111; };        //指定主服务器的IP地址

file "slaves/crushlinux.zheng";   //下载的区域文件保存到slave/crushlinux. com.

};

 zone "200.168.192.in-addr.arpa" IN {       //反向"173.16.16.0/24"区域

   type slave;

   masters { 192.168.200.111; }; 

   file " slave/Crushlinux.fan";

};

但需要注意的是,named服务默认以名为“named”的用户身份运行,因此要确认named用户对存放目录有写入权限。

[root@localhost ~]# ls -l /var/named/slaves/

总用量 0

③. 启动named服务,查看区域数据文件是否下载成功

从域名服务器中启动named服务,若配置无误,则named将会从主域名服务器中自动下载指定的区域数据文件,并保存到“slaves/”目录下。另外,通过系统日志文件/var/log/messages也可以观察到下载区域数据文件的过程。

[root@localhost ~]# systemctl start named

[root@localhost ~]# ls -l /var/named/slaves/

总用量 8

-rw-r--r-- 1 named named 483 1月   8 23:03 crushlinux.fan

-rw-r--r-- 1 named named 538 1月   8 23:03 crushlinux.zheng

iptables -F

systemctl stop firewalld

setenforce 0

④. 验证从域名服务器

验证从域名服务器时,只需要将客户端的首选DNS服务器地址设为192.168.200.112(从域名服务器的IP地址),使用nslookup命令进行正常测试即可。例如,以下操作是使用Linux客户机的测试结果。

[root@localhost etc]# nslookup study.crushlinux.com

服务器:  mail.crushlinux.com

Address:  192.168.200.112

 

名称:    study.crushlinux.com

Address:  192.168.200.113

 

[root@localhost etc]# nslookup 192.168.200.112

服务器:  mail.crushlinux.com

Address:  192.168.200.112

 

名称:    mail.crushlinux.com

Address:  192.168.200.112