在局域网内部通过构建DNS服务器,可以使用户使用域名访问局域网中的每一台计算机。在互联网中,通过DNS服务器,可以使全世界的网络用户使用域名访问各种类型的主机,如WEB服务器、邮件服务器等
 
而我们使用Linux搭建DNS服务器,不仅在安全方面值得放心,并且在处理客户机请求较windows快。再加上功能较windows强大,所以世界上大多数的DNS服务器主机也都是使用Linux系统搭建的。
 
我们今天就来研究与学习Linux环境下搭建DNS服务器。搭建DNS服务器之前,我们需要介绍一款软件BIND,它是著名的DNS服务器软件,可运行在大多数unix/linux版本中。
linux服务之DNS  _DNS
 
 
一:安装和启动bind
 
·安装bind
 
安装DNS服务跟安装samba、dhcp服务步骤相同,首先检查系统中是否已安装bind包,我们看到了已安装两个。DNS服务需要4个组件 bind-utils-9.2.11-16、gpbind-1.11-4、bind-9.2.1-16、caching-nameserver-7.2-7,而系统默认已经安装了前两个,所以我们只需要安装bind-9.2.1-16(位于第一张光盘)和caching-nameserver-7.2-7(位于第二张光盘)。
linux服务之DNS  _DNS_02
 
linux服务之DNS  _休闲_03
 
·启动服务
使用service named start 命令启动DNS服务,若想让DNS服务开机自动运行,使用ntsysv命令运行启动项管理器,选中named,这样在以后启动系统的同时会启动DNS服务。
 
·关闭防火墙
 
 
二:配置BIND
 
·主配置文件
 
BIND的主配置文件是/etc/named.conf。用VI编辑器打开/etc/named.conf文件,然后来对参数依依作说明
1>全局参数(options开头)
directory          用于指定数据文件存在的路径,默认情况下为/var/named目录。区域
                          文件是指存放正向解析、反向解析内容的文件。
forwards{} 用于定义DNS转发器,关于转发器的原理和windows下原理相同。
                             {}内为转发器的IP地址,用“;”隔开.格式千万别看错
forward                用于定义DNS转发器转发方式,若设置为first,DNS服务器会将用户  的请求先转发给设置的转发器进行解析,若指定转发器无法解析,则由DNS自身的转发器进行解析;若设置为only,DNS服务器同样首先将用户的请求转发给指定的转发器进行解析,若指定的转发器无法解析,DNS自身也不会试着对其进行解析。
linux服务之DNS  _服务_04
 
2>区域声明参数(zone开头)
zone“” IN  {                             区域名称,若为“.”表示根区域;“localhost” 表示
                                                        正向区域,“0.0.127-in-addr.arpa”表示反向区域
 
type                                                设置为“master”表示区域的类型为主服务器,设置为
                                                      “slavc”表示区域类型为从域名服务器,以“;” 结
                                                        束。关于区域类型我们会在后面介绍到
 
file   “”                                      定义区域文件名,由于在全局参数中我们设置了区
                                                       域 文件位于/var/named,所以我们查找区域文件只要
                                                       在/var/named目录下查找指定的文件名。以“;”结束
 
allow-update { none; }           定义DHCP与DNS不同步更新 ,以“;”结束
linux服务之DNS  _DNS_05
 
·区域文件
 
由于在全局参数中我们设置了区域文件位于/var/named目录,所以此时我们切换到/var/named目录,查看到有刚刚设置的根区域文件named.cn、正向区域文件localhost.zone、反向区域文件named.local。 根区域文件采用默认设置,我们主要说明正向区域文件的参数
$ORIGIN        设置本地域的域名
SOA                设置DNS权威服务器名称 
@ root            设置管理员右键地址
NS                   设置服务器的名称
A                     设置A记录,即域名到IP的记录
linux服务之DNS  _休闲_06
 
反向区域文件格式跟正向区域文件格式基本相同,只不过采用PTR记录,即IP地址转换为域名的记录。
linux服务之DNS  _休闲_07
 
 
三:构建域名服务器
 
以上只是对BIND的配置文件以及区域文件进行了说明,并没有任何意义。但它为介绍域名服务器的构建打下了基础,构建域名服务器就是在以上的配置文件以及区域文件中添加具体的设置。
 
域名服务器包含三种缓存域名服务器、主域名服务器和从域名服务器。缓存域名服务器对用户查询或的域名解析记录进行了缓存,这样用户或着其他用户再此访问此域名时,DNS服务器从缓存中调用此域名的IP地址发回给用户,这样便节省了时间。由于在安装了caching包后服务器便成为了缓存服务器,所以不再对缓存服务器进行介绍。从域名服务器是对主域名服务器的完全copy。当主域名服务器DOWN掉时,从域名服务器才发挥作用。对于主域名服务器,大家应该都明白,下面来详细讲解主域名服务器的构建。
 
·编辑配置文件
 
用VI打开etc/named.conf文件,按照“区域声明参数”,敲入正向区域声明参数和反向区域声明参数。
linux服务之DNS  _服务_08
 
·编辑区域文件
编辑完区域声明参数后,并没有直接在/var/named目录下产生51cto.com.zone区域文件,而需要我们去创建。不过我们可以通过copy正向区域文件localhost.zone,然后对其进行更改。 命令: copy  localhost.zone   51cto.com.zone,然后用VI编辑51cto.com.zone文件,并更改相关参数
linux服务之DNS  _休闲_09
 
·完成后的设置
区域文件编辑完成后,要记得重启服务。 service named  restart,使DNS服务生效。在redhat9系统中是无法重启DNS服务器,此时我们只有重启系统,等进入系统后再输入命令service  named start命令来开启DNS服务。
 
 
 
四:测试
通过以上设置,我们已完成了服务器的设置,最后就是要进行测试了。我们在服务器和客户机分别进行测试
 
·服务器测试
 
使用nslookup 命令来测试服务器是否可以对域名进行解析。
>set type=mx    表示当前对邮件记录测试
>set type=ns    表示当前对名称记录测试
linux服务之DNS  _DNS_10
 
·客户机测试
 
客户段DNS设置为服务器IP。我们看到客户端可以通过域名访问到自身服务器、FTP服务器、以及互联网上的服务器。
linux服务之DNS  _linux_11
 
linux服务之DNS  _服务_12
 
 
linux服务之DNS  _DNS_13
 
linux服务之DNS  _服务_14
 
 
注:如果发现无法转发,请在服务器检查命令是否设置正确。如果确认无误,再查看是否可以上网。如果服务器都无法上网,当然也就无法解析互联网的域名了。对于虚拟机,如果不能上网则检查物理机上是否开启防火墙,关闭所有防火墙后虚拟机可正常上网。