八、构建缓存域名服务器
缓存域名服务器通常架设在公司的局域网内,主要目的是提高域名解析的速度,减少对互联网访问的出口流量。
①. 建立主配置文件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:UsersAdministrator> nslookup study.crushlinux.com //验证正向域名解析
服务器: nsl.crushlinux.com
Address: 192.168.200.111
名称: Study.crushlinux.com
Address: 192.168.200.113
C:UsersAdministrator>nslookup www.crushlinux.com
服务器: ns1.crushlinux.com
Address: 192.168.200.111
名称: www.crushlinux.com
Address: 192.168.200.111
C: UsersAdministrator> nslookup xxyyzz.crushlinux.com //验证泛域名解析
服务器: nsl.crushlinux.com
Address: 192.168.200.111.
名称: xxyyzz.crushlinux.com
Address: 192.168.200.111
C:UsersAdministrator> 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/hosts和DNS解析文件/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