完成这一章,你将能够做一下事情:
比较三种主机名解析方式:
/etc/hosts
NIS
DNS/">BIND
使用hosts_to_named命令来配置主DNS服务器
配置辅DNS服务器
配置主机名解析器
配置/etc/nsswitch.conf文件
使用hosts_to_named命令增加/删除DNS数据库中的一个主机。
使用nslookup命令进行DNS服务查错
描述以下配置文件的作用和文件格式:
/etc/rc.config.d/namesvrs
/etc/named.boot
/etc/resolv.conf
1.将主机名解析成为IP地址
IP网络中的系统进行通讯必须依靠Internet地址。用户和应用程序可以通过主机名来查找一个主机,这就要求在数据包发送之前,IP协议层必须将这个主机名翻译成为一个IP地址(例如16.30.0.99)。这个主机名到IP地址之间的转换是在这个网络连接建立之前通过一个gethostbyname()的库函数来实现的。这个库函数也被称为解析器,因为它的作用是将主机名解析为一个IP地址。
同样,反向的解析有时也是必须的;因为有时候,必须将IP地址解析成为一个主机名,例如主机想要验证哪些主机连接到本机就必须通过将连接进来的IP地址映射成为一个名字,通常这个过程被用作鉴权:例如,文件/etc/hosts.equiv,$HOME/.rhosts,或者/etc/exports的使用就是具体例子。将IP地址解析成为主机名是通过调用一个名为gethostbyaddr()库函数而实现的。
维护一个小规模网络中的各个主机中包含有网络中的系统的名字和IP地址的/etc/hosts文件是一件很容易的的事情,而当网络变得很大同时地理上分布更广的时候,维护工作会变得十分困难。这时候就需要用其它的方法来实现域名和IP地址之间的互相解析。
与每一台机器都存储和维护所有主机名和IP地址信息的方式不同,一种称为域名服务器的服务,域名服务器可以由网络中的一个(或者多个)系统组成,其作用是存储并且提供信息,域名系统提供了另外一种与/etc/hosts文件不同的主机名与IP地址转换的方式,DNS常用在大型的网络中提供主机名解析的服务。
当前最常用的名称服务有Network Information Services(包括NIS和NIS+),和Berkeley Internet Name Domain(BIND)服务。
在这一章,我们将学习Berkeley Internet Name Domain 服务。
2.DNS概述
Berkeley Internet Name Domain(BIND)是一种基于RFC 1034/1035"域名"规范的域名系统(DNS)。BIND是由以下三部分组成:
分层的名称空间: 与单层的的名称空间相对应,/etc/hosts文件的域名解析方式就是一种单层的方式。
名称服务器中保存有域的树型结构的信息,这个服务器程序是在系统中是一个叫做named的进程。而提供这个网络服务的主机被叫做域名服务器。
解析器是一种负责将域名解析成为IP地址的程序,各种网络服务都可以调用这种程序,例如telnet,ftp,rcp,rlogin,和其它的网络服务。解析器能判断首先使用哪个名称服务(/etc/hosts,NIS,或者DNS),然后使用指定的服务来将主机名翻译为IP地址。如果使用的是DNS(BIND),解析器就会从域名服务器提取信息,解析器并不是一个特别的进程,解析器只是名称服务器的一个可编程的界面,这些流程被编译进gethostbyname()和gethostbyaddr()流程中。任何执行这些调用的程序会自动调用BIND(如果系统中配置了这个服务).否则会使用NIS或者/etc/hosts文件。在有的系统中,有一个名称服务的开关(一个文件),其作用是指定系统解析域名时使用的方式的先后顺序和组合。
3.DNS层次化的名称空间
域名空间是一种对基于树型结构的网络中的节点进行分层命名的方法,树型结构可以粗略代表一个网络边界分支。
每一个名称空间中的子空间被称为一个域,每一个域都有一个标记,这个标记由一系列的由左到右的圆点分隔的字母组成,如:在sanfran.ca.hp.com这个域名中节点"sanfran"属于域"ca";域"ca"属于域"hp";而域"hp"属于域"com",而域"com"属于“根域”。
最后一个圆点,域名的结尾部分,指出的是绝对域名,这和相对域名相对立,如"sanfran.ca"。
解析器会将相对域名翻译为绝对域名,转换的原则我们会在以后的章节中学到。
4.公共和私有的域名空间
公共的域名空间
如果要将本地网络和一个公众网络相连接,如INTERNET ,就要求要有官方的IP地址和域名。你可以与InterNIC联系,或者通过http://rs.internic.net来进行域名登记。
如果你已经注册了一个域,那么在这个域中,你可以独立地管理你这个域中的计算机,例如你可以在这个域中增加主机,可以自由分配一个属于这个网络地址的主机IP地址给这个主机,而不需要向管理机构注册,同样你也可以在这个域中分配子域,也不需要向管理机构注册,只有你域中的顶级域中的授权的服务器才需要注册。
私有域名空间
在这种情况下,客户的网络和公众网是相互分离的,这样你就可以任意选择域名和IP地址。但是如果将来会有可能连接到INTERNET,最好是去寻求一个正式的IP地址并且遵循命名的惯例。
5.名称服务器
域名服务器可以:
响应客户机的请求,然后将主机名解析为IP地址
划分名称空间
能够将域名解析的请求转发到其它的域名服务器
应该有辅域名服务器来作为备份
举例说明:
ca.hp.com域名服务器
sanfran.ca.hp.com <--->128.1.1.1
oakland.ca.hp.com <--->128.1.1.2
la.ca.hp.com <--->128.1.1.3
有许多不同类型的DNS服务器
主域名服务器
主服务器对它所包含的数据来说是最有权威的(简而言之,由上一级的域赋予它的权利)。它可以,依次,创建子域,并且分配权限。与副服务器相比较而言,主服务器上的信息是最新的信息。
副域名服务器
副域名服务器是一个备份服务器。它包含有主服务器上基本相同的信息。在一个可以设置的时间间隔,它会从主服务器上更新数据。副域名服务器可以选择是否在本地磁盘上保留原始记录。这可以在named.boot中进行配置。
缓存服务器
缓存服务器不在本地的磁盘上存储数据。所有的数据都是放在系统的缓存中。在多用户系统中使用缓存服务器可以加速域名查询的速度。缓存服务器提供一个非正式的备份方式,与在本地存储数据的副域名服务器相比较,这种方式最大的优点是:在一个新的子域加入到一个主域名服务器中时,它不需要更新本地DNS数据库中的数据。