第六章 DNS服务配置 本章主要内容: • 基于bind的DNS服务器配置
4.4 DNS域名解析服务器 1.什么是DNS DNS(domain name server)是域名解析服务器,提供域名和IP地址之间一种相互转换的机 制,目的是为了方便人们的记忆和管理。 根域 . 顶级域1 域1 域2 域 n 顶级域2 顶级域n 域名服务器DNS组织结构
4.4 DNS域名解析服务器 Com 商业组织 au 澳大利亚 Edu 教育机构 ca 加拿大 Gov 政论组织 cn 中国 Mil 军事部门 tw 中国台湾 Net 网络机构 hk 中国香港 Org 非盈利性组织 in 印度 Int 国际组织 jp 日本 Uk 英国 su 前苏联 Fr 法国 顶级域名
4.4 DNS域名解析服务器 2. DNS的求解过程 3.本地DNS服务器的结构 (1)客户向本地DNS服务器发布请求,请求www.xydt.net主机的IP地址。 (2)如果目标主机是本域的,则DNS服务器直接返回客户要求的IP地址。 (3)否则DNS服务器在缓存DNS中分别查找www.xydt.net、xydt.net、net。 (4)如查没有就向根域名服务器发出请求,根域名服务器会返回net的IP。 (5)本地域服务器保存此IP后再向net服务器发出请求,得到xydt.net的IP。 (6)本地域名服务器再向xydt.net发求请求,得到www.xydt.net的IP。 3.本地DNS服务器的结构 系统有两个与DNS有关的文件resolv.conf和hosts.conf。使用netconfig 设置IP地址时,可以设置 DNS的IP地址,(这个地址是用户机的指向),设置DNS的IP地址后,会产生一个文/etc/resolv.conf 。 /etc/hosts.conf 是hosts的配置文件,其定义了域名解析的次序 。 域名解析时先在/etc/hosts文件中搜索,然后再在域名服务器中查询,这有利于提高搜索速度。 DNS服务器的进程named,可以通过ntsysv程序设置开机启动,在named[]处按空格出现named[*], 表示设置开机启动。也可以在开机后通过命令启动DNS服务
4.4 DNS域名解析服务器 4. 正反向解析文件分析 5.辅助DNS服务器 6.负载均衡 (1) SOA记录 (2) NS记录 (3) MX记录 (4) A记录 (5) PTR 5.辅助DNS服务器 后备DNS有时也叫次服务器,次服务器从主服务器复制网络区域内的域名解析数据,当主服 务器由于某种原因不能正常工作时,次服务器就可以向外界提供查询。 6.负载均衡 一个专业的网站,访问的数据量很大,如果只有一台服务器,当客户访问多时,等待的时 间就会长,影响访问效果,解决的办法是建立多台服务器同时提供服务
BIND简介 在Linux中,域名服务(DNS)是由柏克莱网间名域(Berkeley Internet Name Domain——BIND)软件实现的。BIND是一个客户/服务系统,它的客户方面称为转换程序(resolver),它产生域名信息的查询,将这类信息发送给服务器,DNS软件回答转换程序的查询。BIND的服务方面是一个称为named(读作“name”“d”)的守护进程。
在概念上可以把DNS分为三个部分: 域名空间 这是标识一组主机并提供他们的有关信息的树结构的详细说明。树上的每一个节点都有它控制下的主机的有关信息的数据库。查询命令试图从这个数据库中提取适当的信息。简单地说,这只是所有不同类型信息的列表,这些信息是域名、IP地址、邮件别名和那些在DNS系统中能查到的内容。 域名服务器 它们是保持并维护域名空间中的数据的程序。每个域名服务器含有一个域名空间子集的完整信息,并保存其它有关部分的信息。一个域名服务器拥有它控制范围的完整信息。控制的信息按区进行划分,区可以分布在不同的域名服务器上,以便为每个区提供服务。每个域名服务器都知道每个负责其他区的域名服务器。如果来了一个请求,它请求给定域名服务器负责的那个区的信息,那么这个域名服务器只是简单地返回信息。但是,如果请求是不同区的信息,那么这个域名服务器就要与控制该区的相映服务器联系。 解析器 解析器是简单的程序或子程序库,它从服务器中提取信息以响应对域名空间中主机的查询。 配置转换程序
使用DNS的第一步是在用户的计算机上配置转换程序,即让机器能够能够从DNS服务器中获取域名解析/反解析服务。转换程序不是一个单独而明确的处理进程,而是网络进程调用的一个标准C程序库。如果本地系统不运行named,就必须配置本地转换程序。转换程序控制文件/etc/host.conf
/etc/host.conf是用来控制本地转换程序的文件的设置。该文件告诉转换程序使用哪些服务、按照什么顺序进行。该文件的字段可以用空格或制表符分隔。字符“#”表示注释行。 下面这个例子是主机vlager上的/etc/host.conf文件:
# /etc/host.conf # We have named running, but no NIS (yet) order bind hosts # Allow multiple addrs multi on # Guard against spoof attempts nospoof on # Trim local domain (not really necessary). trim vbrew.com.
这个例子给出了域vbrew.com的通用解析程序配置。该解析程序首先使用DNS然后使用/etc/hosts文件查找主机名。在解析查找中指定本地/etc/hosts文件是一个好主意。如果由于某种原因不能使用域名服务器了,我们还可以使用主机文件中列出的那些主机名。该机器上允许使用多个IP地址,主机通过重新解析主机名字(从IP地址逆向查找返回的主机名字)来检查IP欺骗。
转换程序/配置文件/etc/resolv.conf 当配置转换程序使用BIND域名服务查询主机时,我们必须告诉转换程序使用哪一个域名服务器。用来完成这项任务的工具就是/etc/resolv.conf文件。/etc/resolv.conf控制转换程序使用DNS解析主机名使用的方式,它可以明确地定义系统的配置,允许我们命名由于缺省服务器不响应而使用的备份服务器。因此,尽管会增加系统负荷,但在某些场合使用resolv.conf是很受欢迎的。
/etc/resolv. conf是一个简单而易读的文件。在/etc/resov /etc/resolv.conf是一个简单而易读的文件。在/etc/resov.conf中使用的命令,具有系统专用的形式,但一般都支持domain和nameserver两项命令。 nameserver项利用IP地址去识别让转换程序去识别查询域信息的那些服务器。我们可以多次使用nameserver选项,可以使用多达三个域名服务器。这些名服务器是按照它们在文件中的顺序进行查询的,如果没有接收到一个服务器的响应,就去试表中的下一个服务器,直到所有服务器试完为止(如果在/etc/resolv.conf文件中设置了三个以上的域名服务器,那么,即使前三个服务器都没有响应查询请求,Linux也不会去请求后面的服务器)。我们应该将最可靠的域名服务器列在最前面,以便在查询时不会超时。如果resolv.conf文件中不包含nameserver项,或者不存在resolv.conf文件,就将所有名服务器查询发送给本地主机。然而,如果有一个resolv.conf文件,它包含nameserver项,除非有一项指向本地主机,否则就不查询本地主机。在配置唯转换程序的主机中,resolv.conf文件包含nameserver项,但没有一个项指向本地主机。
domain项用来定义缺省域名(主机的本地域名)。转换程序会将缺省域名挂在任何不含点的主机名后面。例如,转换程序接收到主机名vale(它不含点),就将其缺省域名挂接在vale后面,构成对它的查询。如果domian域中的name值是vbrew.com,那么转换程序就将查询vale.vbrew.com。如果没有出它,则转换程序就试图通过getdomainname()系统调用来获得本地域名。 如果听起来让人迷惑不解的话,我们可以看看下面这个例子,这是Virtual Brewery中的resolv.conf文件:
# /etc/resolv.conf # Our domain domain vbrew.com # # We use vlager as central nameserver: nameserver 191.72.1.1
在该例中,通过domain指定缺省域名,并列出一个用于解析主机名的域名服务器。在这个例子中没有指定查寻顺序(使用search选项),因此如果要查询一台机器的地址(如vale),解析器则首先试图查找vale,如果没找到,则查找vale.vbrew.com,然后再查找vbrew.com。
设置域名服务器 在Linux上的域名服务是由named守护进程来执行的,named最早是为BSD向客户机提供域名服务而开发的。named守护进程通常在系统启动时开始工作,并一直工作到系统关闭。该进程从被称作/etc/named. conf的配置文件中获取有关信息和将主机名映射为IP地址的各种文件。 为了运行named,只要在命令行中输入: # /etc/rc.d/init.d/named start