Linux -- 配置DNS服务器


在Linux中,DNS服务器(Domain Name Server)就是域名服务器。是由柏克莱网际域名BIND(Berkeley Internet Name Domain)软件实现的。BIND是一个客户/服务系统,其客户方面称为转换程序(resolver),用于产生域名信息的查询,将这类信息发送给服务器,DNS软件回答转换程序的查询。BIND的服务方面是一个称为named的守护进程。
DNS的作用是把IP地址转化为代表主机、网络和邮件别名的助记名。它把整个IP地址和命名空间分解为不同的逻辑组来做这项工作。每个组对它所拥有的计算机和其他信息具有控制权。


 一、DNS服务器的基本概念
在一个TCP/IP架构的网络(例如Internet)环境中,DNS是一个非常重要而且常用的系统。其主要的功能就是将人易于记忆的域名与人不容易记忆的IP地址相互转换。而上面执行DNS服务的网络主机,就可以称为DNS服务器。通常认为DNS只是将域名转换成IP地址,然后再使用所查到的IP地址去连接(俗称“正向解析”)。事实上,将IP地址转换成域名的功能也是相当常用的,当登录到一台UNIX工作站时,工作站就会去进行反向检查,找出用户是从哪个地方登录进来的(俗称“逆向解析”)。
DNS服务器应用于TCP/IP网络(如一般的局域网或互联网等)中,用来通过用户友好的名称(如www.baidu.com)代替难记的IP地址(比如198.8.26.16),以定位计算机和服务。因此,如果需要用到如www.baidu.com等域名的地方,都得首先确保已为此名字在DNS服务器中作好了相应的与IP地址的映射工作。

1.DNS服务器的分类
BIND可以配置成以几种不同的方法运行的DNS,常见的BIND配置是唯转换程序系统、唯高速缓存系统、主服务器和辅助服务器。
唯转换程序系统
转换程序是一段要求域名服务器提供域信息的程序,在Linux系统中,是作为一个库程序来实现的,不是一个单独的客户程序。在唯转换程序系统中,仅使用转换程序,并不运行域名服务器。这种系统比较容易配置,只需要设置/etc/resolv.conf文件。而其他3个BIND配置选项都是用于named服务软件的。
唯高速缓存服务器
唯高速缓存服务器(Caching-only Server)可运行域名服务器软件,但是没有域名数据库软件。它从某个远程服务器取得每次域名服务器查询的回答,一旦取得一个答案,就会放在高速缓存中,以后查询相同的信息时予以回答。所有的域名服务器都按这种方式使用高速缓存中的信息,但唯高速缓存服务器则依赖于这一技术提供所有的域名服务器信息。唯高速缓存服务器不是权威性服务器,因为它提供的所有信息都是间接信息。
唯高速缓存服务器只需要配置一个高速缓存文件,但最常见的配置还包括一个回送文件,这是最常见的域名服务器配置。接着才是唯转换程序配置,它是最容易配置的。
主服务器
主服务器(Primary Name Server)是特定域内所有信息的权威性信息源。它从域管理员构造的本地磁盘文件中加载域信息,该文件包含着该服务器具有管理权的一部分域结构的最精确信息。主服务器是一种权威性服务器,因为它以绝对的权威去回答对其他域的任何查询。
配置主服务器需要一整套配置文件,包括正规域的区文件(named.hosts)和反向域的区文件(named.rev)、引导文件(named.conf)、高速缓存(named.ca)和回送文件(named.local),别的服务器的配置都不需要这样一整套文件。
辅助域名服务器
辅助域名服务器(Secondary Name Server)可从主服务器中转移一整套域信息。域文件是从主服务器中转移出来的,并作为本地磁盘文件存储在辅助服务器中。这种转移称为“域文件转移”。在辅助域名服务器中有一个所有域信息的完整复制,可以有权威地回答对该域的查询,因此,辅助域名服务器也称作权威性服务器。
配置辅助域名服务器不需要生成本地域文件,因为可以从主服务器中下载该域文件。然而其他的文件是确实需要的,包括引导文件、高速缓存文件和回送文件。
一个域名服务器可以是这类配置中的任何一种,但经常是将多种配置类型的元素组合在一起。然而所有的系统都要运行转换程序。
2.DNS的组成
在概念上可以把DNS分为3个部分。
域名空间
这是标识一组主机并提供它们的有关信息的树结构的详细说明。树上的每一个节点都有它控制下的主机的有关信息的数据库。查询命令试图从这个数据库中提取适当的信息。简单地说,这只是所有不同类型信息的列表,这些信息是域名、IP地址、邮件别名和那些在DNS系统中能查到的内容。
域名服务器
这是保持并维护域名空间中数据的程序。每个域名服务器含有一个域名空间子集的完整信息,并保存其他有关部分的信息。一个域名服务器拥有它控制范围的完整信息。控制的信息按区进行划分,区可以分布在不同的域名服务器上,以便为每个区提供服务。每个域名服务器都知道每个负责其他区的域名服务器。如果来了一个请求,它请求给定域名服务器负责的区的信息,那么这个域名服务器只是简单地返回信息。但是,如果请求是不同区的信息,那么这个域名服务器就要与控制该区的相应服务器联系。
解析器
解析器是简单的程序或子程序库,它从服务器中提取信息以响应对域名空间中主机的查询。


3. DNS 查询过程


二、建立DNS服务器

BIND是为BSD操作系统开发的一套网络域名服务系统。BIND软件一直在不断地更新,以适应新的安全性和管理的需要。本书讲解的BIND是9.3.1的版本,支持IPv6等新的网络技术。另外还增加了新的功能:
 提供DNS动态更新功能。
 提供DNS更新通知功能。
 可以进行IP地址查询控制、域间传送和修改权限控制。
 改进了域间传送效率。
可以从http://www.isc.org/index.pl?/sw/bind/下载bind-9.3.1.tar.gz的安装软件包,或者下载bind的源代码包,包括:bind-utils-version、bind-version、caching-nameserverversion,这3个是rpm版本。
对于DNS服务器的配置需要涉及5个主要文件,另外还有4个文件也与DNS有关。
1./etc/named.conf
定义了域数据库信息的基本参数和源点,该文件可以存放在本地或远程的服务器上。
举例:

options {
directory "/var/named"; #定义了named要读写文件的路径
};
zone "." {
type hint; #表明在启动时被用来初始化域名服务器的文件
是一个线索文件,每一个服务器都有一个线
索区。
file "named.ca"; #指定所要读取的文件名
};
zone "0.0.127.in-addr.arpa"{
type master; #表明服务器是主域名服务器
file "named.local";
};
zone "mycompany.com" in {
type master;
file "name2ip.conf";
};
zone "10.168.192.in-addr.arpa" {
type master;
file "ip2name.conf";
};

2./var/named/name2ip.conf
正向解析文件。用来定义域信息,实现主机名和地址之间的镜像、识别mail服务器和提供各种域信息。
举例:

@ IN SOA thj.mycompany.com. root.thj.mycompany.com. 
#所有的区文件都以SOA开头,@指定当前的信息源,thj.mycompany.com
这个值可以将域名和named.conf连接起来。通常只有一个@符号。
( 2000062900 ;serial #序列号
28800 ; refresh #刷新周期,以秒为单位
14400 ; retry #循环周期
3600000; expire #中止时间
86400 );
minuum #time-to-live的时间
IN NS thj.mycompany.com. #定义域名服务器
IN MX 10 thj.mycompany.com. #定义邮件服务器,10表示优先级,越小越高
localhost IN A 127.0.0.1 #实现域到IP的映射
thj IN A 192.168.10.1
www CNAME thj #CNAME前后两者为等价名
mail CNAME thj

3./var/named/ip2name.conf
反向解析文件。实现IP地址跟域名的映射。
举例:


@ IN SOA thj.mycompany.com. root.thj.mycompany.com.
( 2000062900 ;serial 28800 ; refresh 14400 ;
retry  3600000;
expire  86400 );
minuum IN NS thj.mycompany.com.
IN MX 10 thj.mycompany.com.
1 IN PTR thj.mycompany.com. #定义逆向关系,
即192.168.10.1与thj.mycompany.com之间的映射,也可以用作定义一个反转域。


4./var/named/named.local
本地主机解析文件。解析回送地址localhost即127.0.0.1,回送地址是一种特殊的约定,即允许在处理本地机地址时与处理远程机地址的方法一样,这样可以简化处理过程,不必将数据发送到物理网络上。
举例:

@ IN SOA localhost. root.localhost. (
1997022700 ;
Serial 28800;
Refresh  ;
Retry 3600000;
Expire 86400 );
Minimum IN NS localhost.
1 IN PTR localhost.

5./var/named/named.ca
线索文件。初始化缓冲区的信息。该文件不需要管理员更改,而是系统自带。
举例:

. 3600000 IN NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4
. 3600000 NS B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107
. 3600000 NS C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12
. 3600000 NS D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90
. 3600000 NS E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10
. 3600000 NS F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241
. 3600000 NS G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4
. 3600000 NS H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53
. 3600000 NS I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17
. 3600000 NS J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET. 3600000 A 198.41.0.10
. 3600000 NS K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129
. 3600000 NS L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12
. 3600000 NS M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33

6./etc/hosts
实现与网上其他主要计算机的映射,它通常是当作DNS的备份出现的,即当DNS系统出现问题的时候才使用hosts表。
举例:

127.0.0.1 localhost localhost.localdomain localhost
192.168.10.1 thj.mycompany.com thj #由于每台服务器都会有
几个域名与IP的对应关系是永久的,所以hosts表中存放的应该是这些域名和IP地址

7./etc/resolv.conf
指定域名服务器的IP和搜索顺序。
举例:

domain #定义本地域名
search mycompany.com #简化用户输入的主机名,
即当用户输入thj时,使DNS可以把它成功地解析为
thj.mycompany.com。与domain是互斥的,无论哪个出现都是用来定义search列表的
nameserver 192.168.10.1 #定义域名服务器的IP,最多三个,建议一般使用两个

8./etc/hosts.conf
如何实现hosts表与DNS的关系和接口。
举例:

order hosts,bind #解析域名的顺序
multi on #允许一台计算机拥有多个IP

9./etc/nsswitch.conf
用于处理Hosts表和DNS的顺序。
举例:

passwd: files nisplus nis
shadow: files nisplus nis
group: files nisplus nis
hosts: files dns
bootparams: nisplus [NOTFOUND=return] files
ethers: files
netmasks: files
networks: files
protocols: files
rpc: files
services: files
netgroup: nisplus
publickey: nisplus
automount: files nisplus
aliases: files nisplus


专家指南:DNS服务器的测试及管理方法
1.管理员修改完DNS的配置文件,需要执行命令
/etc/rc.d/init.d/named restart
使前边对配置文件做的修改生效。
2.ndc工具:用来向named进程发送信号。
3.nslookup:测试正向、反向的解析是否正常。
DNS服务是许多服务的基础,所以配置一台Linux服务器应该从DNS开始,并要从一开始就对服务器配置成什么样子有一个整体的把握,这样才能保证配置之间能够相互协调,避免错误的发生。


参考:http://book.51cto.com/art/200707/50942.htm 

本文出自 “--” 博客,请务必保留此出处http://57388.blog.51cto.com/47388/1553304

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。