一、安装DNS服务器
DNS服务的安装包为bind,使用yum直接安装即可:
安装完成后,查看DNS服务相关的文件:
二、配置正向区域
1、在配置正向区域之前,先来看下主配置文件中的内容:
全局配置段
其中:
listen-on port 53:监听端口,默认是本机,即只允许本机进行DNS查询,可以使用any开放给所有用启。
direcoryt:指明正、反向解析区域的配置文件的存放路径。
dump-file、statistics-file、memstatistics-file:这三个文件为统计信息文件,可以不设置。
allow-query:定义哪些客户端可发送DNS查询请求。
recursion:开启递归查询。
logging表示定义的日志的相关信息。
zone表示区域设置,主配置文件中默认定义了根域。
include表示后面的文件是此配置文件的组成部分。
打开/etc/named.rfc1912.zone2文件,里面已经定义了许多默认的zone。
说明:我们手动添加正、反向区域时,可以直接在主配置文件(/etc/named.conf)中定义,也可以在/etc/named.rfc1912.conf文件中定义。
2、配置正向区域
1)修改主配置文件
2)添加区域记录
3)创建区域文件
格式说明: Name [TTL] IN RRType VALUE
Name:资源记录的名称。
TTL:缓存时间,可以在文件开头统一定义。
IN:固定格式。
RRType:资源记录的类型。
VALUE:资源记录所对应的值。
针对不同的资源记录,格式中各字段的内容也不尽相同:
(1)SOA
任何解析库文件的第一个库文件必须是SOA。
Name:当前区域名称,通常可以简写为@。
VALUE:通常是主DNS服务器的FQDN,也可以是当前区域的区域名称。
以上图为例,说明SOA各字段的含义:
@ IN SOA ns.test.com. admin.test.com. (
serial number ;解析库的版本号,最长不超过10位;
refresh time ;周期性同步时长;
expire time ;过期时长;从服务器放弃解析之前所用的时长;
negative answer ttl ;否定答案的统一缓存时长,对于没有解析到的记录的缓存时间;
)
注意:admin.test.com.是邮件地址,由于此文件中@已有特定的含义,所以使用.来代替@。
(2)NS:Name Server
Name:区域名称。
VALUE:DNS服务器的FQDN。
注意:
1、如果有多台NS服务器,每一台都必须有对应的NS记录;
2、对于正向解析文件来讲,每一个NS的FQDN都有一个A记录。
(3)MX:Mail Exchanger
Name:区域名称。
VALUE:邮件服务器的FQDN。
注意:
1、如果有多台MX服务器,每一台都必须有对应的MX记录;
2、对于正向解析文件来讲,每一MX的FQDN都有一个A记录。
(4)A:Address
Name:FQDN。
VALUE:IP。
(5)CNAME
Name:别名,新FQDN。
VALUE:原FQDN。
(6)PTR
Name:逆向的主机IP地址(不包含网络地址)加后缀.in-addr.arpa。
例如:172.16.100.7/16其name为7.100.in-addr.arpa
VALUE:FQDN。
3、启动服务
4、测试DNS服务器
下面分别使用三个工具来测试DNS服务器。
1)host
命令格式:host -t [A|NS|SOA|MX|PRT] NAME DNS服务器
2)nslookup
命令格式:
server [DNS服务器]
set type=[A|NS|SOA|MX]
<Name>
3)dig
命令格式:dig -t [A|NS|SOA|MX|AXFR] @DNS服务器
其它常用选项:
+trace:启动跟踪;
+notrace:关闭跟踪;
+recurse:启动递归;
+norecurse:关闭递归;
-x PTR:测试反向记录。
三.配置反向区域
1)添加反向区域记录
2、创建反向区域文件
3、重新加载DNS服务
4、测试DNS服务器
四、主从复制
1、网络拓扑
2、配置主、从DNS服务器
1)在主DNS服务器的配置文件中添加NS记录
2)在从DNS服务器上安装bind。(略)
3)修改从DNS服务器的区域定义配置文件。
4)重新启动服务
5)验证
由于CentOS不允许查看从服务器的区域配置文件,所以只能通过日志来了解同步情况。
上图为从服务器的日志信息,其信息表明区域传送成功。
在DNS主目录中已经可以看到自动同步过来的区域文件,此时就可以使用从DNS服务器进行域名解析了。
五、子域授权
1、网络拓扑
2、修改主配置文件/etc/named.conf
3、在父DNS服务器的区域中添加子服务顺的信息
4、配置子域的区域定义文件
5、创建区域配置文件
6、重新加载服务
两台DNS服务器都要重新加载服务配置。
7、测试
使用父域的DNS服务器可以解析到子域的域名记录。
六、转发器
在上面的实例中,可以能过父域解析到子域的记录,那么通过子域能否解析到父域上的记录?如下图所示:
结果是解析不到的,不过我们可以通过配置转发器把test.com域的请求发送到父域DNS服务器上。
转发器的配置有两种方式:
1)配置转发区域,指明将哪个区域的请求转发到指定的服务器进行解析,如下图所示:
2)在/etc/named.conf的全局配置中指定转发,这样会把所有本地无法解析的请求都发送给指定服务器,如下图所示:
解释:
forward {only|first}
only:表示只要对指定的服务器发起递归查询,如果依然查询不到就认为请求资源无效。
first:对指定服务发起查询无果后,会继续从根服务进行的迭代查询。
七、DNS视图
1、网络拓扑
2、定义视图并创建区域文件
上图中共定义了三个视图,分别为inter、outer、other。每个视图都为特定的客户端提供解析服务,inter专门为192.168.253.0/24网络内的主机提供解析;outer专门为192.168.2.0/24网络内的主机提供解析;其它的主机全部由other视图提供服务。
每个视图中定义的相同的正向区域test.com,但是它们的区域配置文件又各不相同,如下图所示:
这些不同的配置文件保证同样的域名能够解析出不同的IP地址。
3、重新启动服务
4、验证
分别使用3台客户端解析www.test.com,得到了不同的IP地址,如下图所示:
使用view的注意事项:
1、 通常只为内网客户端提供递归功能,提供根区域等,将所有的zone全都放到view中。
2、 通常只为外网客户端提供本机所负责的区域,在view中只定义本地的zone。
八、DNS访问控制和ACL
1、访问控制
allow-tranfer {}:允许向哪些服务器进行区域传送。
allow-query {}:接受哪些客户端发起的查询请求。
allow-update {}:是否允许动态更新A记录和PTR记录。
allow-recursion {}:允许哪些客户端进行递归查询。
recursion yes|no;:是否允许递归查询。
2、ACL
1)CentOS内置了一些ACL范围:
none:没有任何对象。
any:所有对象。
localhost:本机。
localnet:本机所在网络。
2)自定义acl:
格式:
acl ACL_NAME{
ip;
network;
};
例如:
acl test {
192.168.253.0/24;
10.0.0.0/16;
};
allow-recursion { test; }; 允许ACL中定义的主机可以递归。
注意:acl通常定义在主配置文件中的option的前面。