Linux、DNS服务器
项目十七、DNS 服务器一、简介在Internet 中,对主机进行标识的方式是使用IP 地址,源主机只有知道目的主机的IP 地址才有可能进行通信。但是Internet 当中的IP 地址的数量非常大,我
项目十七、DNS 服务器
一、简介
在Internet 中,对主机进行标识的方式是使用IP 地址,源主机只有知道目的主机的IP 地址才有可能进行通信。但是Internet 当中的IP 地址的数量非常大,我们记住所有要访问的主机的IP 地址是很困难的,那么如何解决这个问题呢?我们可以给计算机起个“名字”,这就好比是记一个人的名字要比记住他的身份证号码要容易得多,如果名字还遵循一定的规律那就更好记了。Internet 中对主机名有一套进行统一命名的方式,称为“域名”系统,因此需要计算机域名和它的IP 地址之间建立一定的映射关系,让这个映射的解析过程由计算机系统自动完成。我们把在Internet 中对计算机进行标识的“名字”称为计算机“域名”,负责解析计算机域名的系统称为“域名系统DNS ”(domain name system)。
由于Internet 当中主机数量巨大,全世界采用一台域名服务器进行解析是不现实的。因此,Internet 中的域名系统采用一种层次结构,域名就是“唯一的层次结构的名字”。这里所说的“域”,是指层次化名字空间中的一个可被管理的区域,例如,“新浪网”的域名就是www.sina.com.cn
1)“.”表示“根域”,它负责解析顶级域名“org”、“com”、“edu”、“cn”等。
2)“com”是顶级域名,它负责解析在它之下的二级域名,例如“microsoft”等。
3)“microsoft”是二级域名,它负责解析在它之下的子域名称,例如“training”等。
4)“training”是最底层的域名,它负责解析具体主机名与IP 地址的对应关系,例如“Webserver1”。
二、 DNS 服务器安装
首先确定系统是否已经安装了DNS ,输出如下命令:
# rpm -qa | grep bind
如果结果显示为“bind-9.2.1-9”,则说明系统已经安装DNS 服务器。 如果没有安装DNS 服务器或者重新安装,可用rpm 来安装

如果在命令行界面下,可以直接插入Red Hat Linux安装光盘,定位到/RedHat/RPMS下,有关命令及操作如下:
# mount /dev/cdrom /mnt/cdrom //加载光驱
# cd /mnt/cdrom/RedHat/RPMS //进入光盘的RedHat/RPMS目录
DNS 服务器的软件包包括bind 和caching-nameserver ,可以使用下面的命令安装到本机: # rpm –Uhv bind* //在第1张光盘
# rpm –Uhv caching-nameserver* //在第2张光盘
三、启动DNS 服务器
启动/重新启动/停止DNS 服务
# service named start //启动DNS 服务器
# pstree | grep named //验证是否启动
# service named restart //重新启动DNS 服务
# service named stop //关闭DNS 服务
# service named status //查看运行状态
四、配置DNS 服务器
配置文件:
/etc/named.conf: 主配置文件(重要)
/var/named/named.ca:缓存文件,指向根域名服务器的指示文件
/var/named/named.local:本地反向解析文件
/var/named/localhost.zone:本地正向解析文件
以下为用户创建:
/var/named/named.host:主正向解析文件,用于映射主机名到IP 地址,由管理员创建 /var/named/named.rev:反向解析文件,用于将IP 地址映射到主机名,由管理员创建
配置文件分析:
1、主配置文件named.conf
通过以下语句可以查看DNS 服务器的主配置文件named.conf 的内容:
[root@localhost root]#vi /etc/named.conf
以下就对文件中的部分内容进行说明:
options{
directory "/var/named";
};
options 中的内容为服务器的通用配置,这里表示named 的资源记录保存在/var/named目录中,也就是说,所有DNS 日志记录都集中在这个目录下。
controls{
inet 127.0.0.1 allow{localhost;}keys{rndckey;};
};
在controls 中,“inet ”表示利用TCP/IP Socket 访问Internet 资源,它由指定的IP 地址和IP 连接产生,此处表示允许本机(localhost )利用rndckey 进行访问。
zone ". "IN{
type hint;
file "named.ca ";
,};
上述语句用来定义一个DNS 区域以及DNS 服务器管理信息的方法。zone 后面的“. ”表示此处用来定义根网域的内容,“IN ”表示根网域属于IN (Internet )区域类型,并使用“type ”定义了此区域的类型为hint 。
zone "localhost "IN{
type master;
file "localhost.zone ";
allow update{none;};
};
上述语句表示此区域用来定义本机域的正解内容,它属于IN 类型,区域中的服务器类型是master ,使用localhost.zone 文件来记录区域的资源记录,最后一句表示不允许客户端或服务器自动更新此DNS 记录。
zone "0.0.127.in addr.arpa "IN{
type master;
file "named.local ";
allow update{none;};
};
include "/etc/rndc.key";
上面“0.0.127.in addr.arpa ”表示此区域是用来定义本机网域的反向解析内容,“IN ”表示也属于IN 类型,使用文件named.local 记录区域的资源记录,不允许客户端或者服务器自动更新DNS 记录。最后一句“include ”/etc/rndc.key“”表示将参照这个文件的内容进行区域转移,并且这个文件也可以用于DNS 更新的加密处理。
2、正向解析数据库文件localhost.zone
可以通过vi 命令查看localhost.zone 文件的内容,例如:
[root@localhost root]#vi /var/named/localhost.zone
$TTL86400
$ORIGIN localhost.
@ 1D IN SOA @ root (
42; serial (d.adams)
3H; refresh
15M; retry
1W; expiry
1D ); minimum
1D IN NS @
1D IN A 127.0.0.1
3. 逆向解析数据库文件named.local
下面介绍逆向解析数据库文件/var/named/named.local,其内容如下:
$TTL86400
@ IN SOA localhost.root. localhost.(
1997022700 ; serial //版本号
28800; refresh //刷新时间
14400; retry //重试等待时间
,3600000; expire //过期时间
86400 ); minimum //最小值存活时间
IN NS localhost.
1 IN PTR localhost.
五、DNS 配置实例
如:配置一个www.tea.com 域名,实现如下:
1、修改主配置文件named.conf ,添加如下内容:
zone "tea.com "{
type master;
file "tt.zone ";
};
表示master 告诉named 这是tea.com 域的主服务器,该域的数据需要从tt.zone 文件中加载。
在添加如下内容:
zone "1.168.192.in-addr.arpa "IN {
type master;
file "tt.rev ";
};
表示将反向解析的设置存放在tt.rev 文件中。注意1.168.192(表示先去掉ip 地址最后一位,再倒写)
2. 建立域名文件
已经配置了named.conf 文件,并在里面建立了一个tea.com 域,要让这个域发挥作用,还必须在/var/named目录中创建正向解析文件tt.zone 和创建反向解析文件tt.rev ,通过在这个文件中添加资源记录来进行域名解析。
建立正向解析文件:tt.zone
[root@localhost root]# vi /var/named/tt.zone
在该文件中添加如下内容:
@ IN SOA tea.com. root.tea.com.( //主要服务器名称 管理员E-MAIL 地址 1997022700;serial //区域版本编号
28800;refresh //同步更新时间
14400;retry //同步重试时间`
3600000;expire //同步到期时间
86400 ;tt1 //TTL默认值
)
IN NS localhost.
www IN A 192.168.1.120
建立反向解析文件:tt.rev
[root@localhost root]# vi /var/named/tt.rev
在该文件中添加如下内容:
@ IN SOA tea.com. root.tea.com.( //主要服务器名称 管理员E-MAIL 地址 1997022700;serial //区域版本编号
,28800;refresh //同步更新时间
14400;retry //同步重试时间`
3600000;expire //同步到期时间
86400 ;tt1 //TTL默认值
)
IN NS localhost.
120 IN PTR www.tea.com
3、更改/etc/resolv.conf文件(本机使用DNS 服务器地址和域名后缀)
search tea.com
nameserver 192.168.1.120
4、测试(客户端的配置):
若客户端是windows 系统:
对于运行Windows 操作系统的客户机,在Windows 客户端中打开“Internet 协议(TCP/IP)属性”对话框,将DNS 服务器的IP 地址分别输入到“首选DNS 服务器”和“备用DNS 服务器”文本框中,单击“确定”按钮即可。
如下图:
若客户端是Linux 系统:
[root@localhost root] #netconfig
进入“Configure TCP/IP”窗口,进行相应设置。其中,在“Primary nameserver”文本框中输入的是DNS 服务器的IP 地址(或用图形界面网络设置项中,把DNS 域改为DNS 服务器的IP 地址即可) 。
然后,要对/etc/resolv.conf文件进行修改
search tea.com //DNS搜寻路径,即解析不完整名称时默认的附加域名后缀 nameserver 192.168.1.120 //设置DNS 服务器的IP 地址
如下图所示结果:

六、DNS 服务器测试工具和错误检测
用于测试DNS 服务器的工具包括dig 、host 和nslookup 等,其中比较常用的是nslookup 。使用BIND 时,可以通过named checkconf 命令和named checkzone 命令检查BIND 配置。
nslookup 工具
nslookup 是一个命令行工具,可以使用交互模式以及命令模式进行域名查询。执行nslookup 命令,可以看到当前使用的DNS 服务器的名称与地址,并出现提示符“>”,在其后可以输入相应的命令进行查询,比较常用的命令有如下几个:
(1)help :用于显示nslookup 命令的帮助信息。
(2)set :设置工作参数。
(3)exit :退出nslookup 命令。
(4)lserver :指定要使用的域名服务器。
(5)server :使用当前默认的域名服务器查找指定的目标。
bind 配置检查工具
使用bind 时,一点小错误都可能导致named 不能正常运行,这些错误一般发生在主配置文件named.conf 或者数据库文件中,查找起来比较困难,此时,可以使用BIND 提供的文件检查工具进行排错。
可以使用named-checkconf 工具检查named.conf 文件。
[root@localhost root] #named-checkconf
还可以使用named-checkzone 检查数据库文件
[root@localhost root] #named-checkzone tea.com /var/named/tt.zone
[root@localhost root] #named-checkzone tea.com /var/named/tt.rev
在运行named-checkconf 命令检查name.conf 文件时,如果检测到错误,则给出提示(有时需要检查所提示行数的附近两行),如果没有错误,就不会显示任何信息。需要注意的是,不是所有语法错误都可以被该程序检查到。
七、域名解析应用(简介):
实例:访问某个域名站点。(本例结合Apache 和DNS 服务器配置)
1、完成Apache 服务器的安装和配置;
2、完成DNS 服务器的安装和实现所要求域名解析配置。
3、修改Apache 服务器中的httpd.conf 配置文件(/etc/httpd/conf/httpd.conf)

在末尾添加如下内容:
NameVirtualHost 192.168.1.120
DocumentRoot /var/www
ServerName www.tea.com
完成后重新启动Apache 和DNS 服务器,然后在本机或其他连网主机的地址栏里分别输入http://192.168.1.120 和 http://www.tea.com测试,是否都可以。
如下图(客户端结果):

