VMware虚拟网络环境下使用Bind9模拟主DNS服务器,缓存DNS服务器

2008-05-28 20:59| 分类:tech ubuntu| 2,263 次点击

以下是对自己的网络管理课件的补充:

Bind8和Bind8之前所有的主要配置都是在named.conf中设置,而ubuntu下的Bind9把比较常修改的zone(一般是主DNS服务器所需设置)和options(里面包含了缓存DNS服务器常用的directory缓存保存目录、fowarderDNS转发器或者说上级权威DNS等的设置)独立出来为两个文件named.conf.local和named.conf.options。不常修改的仍然放在named.conf中,并用include包含了上述两个子文件。这样子修改起来更为简单。

配置DNS服务器之前,得先明白DNS的分类,这里以Bind对DNS的分类进行说明(参考DNS与BIND学习笔记 2

BIND中名字服务器的分类以及区别:

  • 权威--一个区的正式代表
    • 主服务器:每个区都有的一个主名字服务器,保存着本区数据的正式拷贝。SA通过编辑这上面的数据文件来更改区数据。
    • 从服务器:每个区可以有多个从服务器(至少一个),它通过“区传送”操作从主服务器上获取它的数据。
    • 存根:类似于从服务器,不过不是必须的,它仅装载主服务器上的NS记录。
  • 非权威--从缓存中读取记录来回答查询,可能数据已过期
    • 高速缓存名字服务器:从一个文件中加载一些根服务器的地址,然后通过缓存由它解析的各个查询的回答来积累它的其余数据。它本身没有数据。
  • 递归--名字服务器要么是递归要么是不递归的。递归的含义是如果它不能回答你的查询,它将自己替你向上级进行查询,知道有结果(真实的结果或者错误的消息)。
  • 非递归--如果对于你的查询它能回答的,那么它将提供正确的响应,否则它将返回它所推荐的可能知道正确答案的其他域的权威性服务器。客户机必须准备接受并对这些推荐服务器进行操作。

 

(一)、缓存DNS服务器(非权威DNS服务器)的配置:

见课件,或Ubuntu中文官方站上对Bind的wiki(Google:bind site:ubuntu.org.cn)

(二)、权威主DNS服务器的配置:

db.chenfangyi.com文件内容如下:

;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA ns.chenfangyi.com. mail.chenfangy1.com (
1  ; Serial
604800  ; Refresh
86400  ; Retry
2419200  ; Expire
604800 )  ; Negative Cache TTL
;
@ IN NS localhost. //(或者NS ns.chenfangyi.com.或者只写“NS ns”)
@ IN A 127.0.0.1

 

以上采用的是ubuntu.org.cn官方wiki上对bind的设置,即只改动了bind的db.local文件中的localhost为dns.chenfangyi.com,其他均未改动。

要理解这个文件中的这些内容,首先需要了解DNS数据库的概念,以下部分参考了DNS与BIND学习笔记4

什么是dns数据库?有什么用?一个域的dns数据库是由该域的主名字服务器的系统管理员维护的一个文本文件集合.这些文本文件成为区文件.就是你在”named.conf“中定义的file.他们包括2种类型的项:分析器命令(如$origin与$ttl)与资源记录(resource records).资源记录是数据库的真实的部分,而分析器命令只是提供输入记录的一些简便途径.资源记录的基本格式:

[name] [ttl] [class] type data 

name字段:表示一个主机或者一个域.我经常在配置文件中看到“@”,其实就是代表本域,可以写全.待会实验中作测试.
ttl字段:以秒为单位,与tcp/ip中的ttl差不多含义,就是存活时间,只是网络中ttl是指跳数(好像是这样).在bind9中,要用$ttl指令,而在8里面,则没有这个指令.一般将存活时间设为一周,这样,可以明显减少网络流量与dns的负载.
class字段:一般都使用“IN”,对应的是internet.(IN SOA,就说明这是一条SOA记录 SOA资源记录
type字段:soa,a,ns,ptr,mx,cname等,我待会会详细看这些类型.
data字段:根据type字段不同而不同.一般,一个区的资源记录写在最前面,然后是ns记录,其他顺序可以任意.下面我将列出来一些经常用到的记录.并且结合实例说明.

比如这里的:

@ IN SOA dns.chenfangyi.com. mail.chenfangy1.com

name字段是chenfangyi.com.
没有ttl字段
class字段是IN
type字段是SOA记录。

一、“@”是当前区名的简写。在这里可以用chenfangyi.com.代替。它的值是在named.conf文件中的zone语句中指定的名字;可以在这个区文件中使用$ORIGIN分析器指令进行更改。(可见DNS服务器完全解析手册:$ORIGIN localhost.指出下面的主机记录属于哪个域。在下面的@是它的替代符号。@ 是ORIGIN的替代符)

“@”是ORIGIN(来源)的意思,可以理解为一个变量而不是固定的某个常量,而且就是在此文件中都是个变量(在同个文件的不同位置意义也不同),这个变量的值是刚刚所定义的$ORIGIN 。以这个文件内容为例,文件开头时@表示zone定义出的那个部分,因为在/etc/named.conf.local中定义出chenfangyi.com为一个zone,因此在这个文件开始时,@就代表当前的域chenfangyi.com.。(注意,此时@=域chenfangyi.com<>localhost或127.0.0.1)

“@”表示当前起始点。起始点的含义是,数据文件是为哪个区域创建的,该区域就是当前的起始点。SOA资源记录

“@” 这个表示zone 定义出的那个部分!以这个文件内容为例,因为我们在 /etc/named.conf 当中就是定义出 localhost 为一个 zone 的,因此,在这里,这个符号就代表 localhost!Redhat linux9下安装DNS配置文档:

二、SOA:每个区仅有一个SOA记录,该区一直延伸到遇见另一个SOA记录为止。SOA记录包括区的名字,一个技术联系人和各种不同的超时值。

三、“ns.chenfangyi.com”,我见到以下几种解释(其实都一样):
1、微软上的解释是:“Source host – The host where the file was created 创建此文件的主机”。
2、SOA资源记录上的解释是:“表示该数据文件记录在哪一台主机中。(如果这台主机是本区域的,那么必须在该区域文件中定义这台主机)”。因为该数据文件是记录在本机上,而我的这个例子做的就是本区域的主DNS服务器,所以这台主机肯定是本区域的,就必须在这个区域文件中定义这台主机,所以必须这句来定义这台主机。既然是“定义”,当然这个名字就可以随便设了,前缀可任意设
3、ubuntu wiki上是指这里需要填入FQDN,而百度百科对FQDN的解释是:全域名(FQDN,Fully Qualified Domain Name)是指主机名加上全路径,全路径中列出了序列中所有域成员。全域名可以从逻辑上准确地表示出主机在什么地方,也可以说全域名是主机名的一种完全表示形式。从全域名中包含的信息可以看出主机在域名树中的位置。请教FQDN:FQDN(fully qualified domain name)即完全限定域名。用于标识网络(特定域)中一部特定主机的DNS名称(FQDN)。
其构成是:(主机名).(主机所处的域)例如:over.redhat.org.cn    (over是主机名,redhat.org.cn是主机所处的域名)
4、dns中soa和ns记录的作用:soa是指zone的权威设定,soa指定了权威主机的FQDN(“设定”和“指定”说明了这里的主机名就是要自己设定的,而不是已经存在的)
5、其实SOA后也可以不是写FQDN,只写主机名(没有后面的一点)也可以,这样子会自动加上当前的域(未测试过,可见Linux实践工程师学习笔记十五:DNS服务器

所以: “@ IN SOA ns.chenfangyi.com.” 的意思是“把这个在chenfangyi.com域上指定的权威主机的主机名设为ns”,因为ns.chenfangyi.com这个形式看起来很像是已经存在的域名,所以就有人问谁来解析DNS server的FQDN name怎样解决dns server自己的FQDN解析。但完全理解后就明白这里的FQDN就是为你设定一个DNS主机名,只是看起来很像是“使用一个已注册的DNS主机名”。 (等下也用不到,只是为了表示这是个域名服务器的名称,一般设为ns.domain.com)

附(不甚重要,请教FQDN):关于查看本机FQDN的问题个人认为在没有主域控件器的情况下难于实现,例如个人宽带接入。
这种情况下可以考虑结合本机IP及本地DNS缓存进行大致了解,方法或有不当,仅供参考:
Windows下打开命令提示符。输入命令:
C:\>ipconfig             (本机IP)
C:\>ipconfig /displaydns     (全局DNS缓存服务器例表。确定所处的域)

四、“@ IN NS localhost.”的意思是:“告诉这个@(即chenfangyi.com.域名服务器):本机(localhost)就是这个域(@=chenfangyi.com.)的域名服务器”。所以所有要做主DNS服务器的主机中bind的解析资源文件中都需要有这句。也可以用前面soa中设置的域名服务器的名称代替localhost,如这里的dns.chenfangyi.com.

“@ IN A 127.0.0.1”只有这句算的上是对chenfangyi.com的“域名解析规则”,这个域名规则设定了域chenfangyi.com做A记录到127.0.0.1。所以等下可以在“使用这台主机做解析的客户机”上访问chenfangyi.com,

如果chenfangyi.com是在ICANN注册的(确实是注册过的,­ :mrgreen: ),那么这里可以解决“如何将域名直接解析为www服务器的地址”这个问题,在域的数据文件里面增加一个这样的地址记录:
“@  IN A 200.100.100.10”
这样的主机记录就可以实现chenfangyi.com的直接解析,200.100.100.10为www服务器所在的ip地址。见bind9详解

这样主DNS服务器就配置好了,必须重启DNS服务器,否则不能生效(怪不得在时代互联设置DNS都需要重启),似乎有个办法可以通过刷新某个东西而不用重启Bind,不过命令忘了,意义也不大。

安装好主DNS服务器后最好先测试一下,可见下文《测试DNS服务器》。

 

 

参考资料:
服务器配置:dns服务的建立(ubuntu
Ubuntu的DNS服务器设置的一个小BUG (ubuntu论坛
Linux下dns配置详细解析 (linuxidc)把bind中的配置分为唯转换程序系统、唯高速缓存系统、主服务器和辅助服务器,非常好理解
Windows下如何用自己的服务器做 DNS 域名解析,如何创建域名服务器?(access911

相关文章

  • 没有相关文章
  1. 5条评论

  2. tsenfine 2008-09-18 16:12

    这里加上课件里的《配置缓存服务器(在192.168.203.133的主机上配置)》和《配置主域名服务器(在192.168.203.134的主机上配置)》这两页,就可以很容易的重新建一个环境。再用上《测试主DNS服务器(在192.168.203.135的windows server 2000上)》即可测试是否成功,所以无需保留原本的两台ubuntu的环境,占用的空间太大了,于是删了!

    [回复]

    tsenfine reply on 九月 18th, 2008 16:14:

    还有,原来的虚拟机中的那个ubuntu 7.04其实也没装什么东西,只是配置了一下bind,连vmware tools都没法装上,所以删了没什么可惜的

    [回复]

    tsenfine reply on 九月 18th, 2008 16:16:

    先是在vmware中“从磁盘中删除”,可是没删除干净,大的文件都还在,于是直接都删除了,现在只剩一个win2003

    [回复]

  1. 2 Trackback(s)

  2. 2008-05-28: Ubuntu 8.04安装好后需要进行的设置(vmware虚拟机中) | fangyi's blog
  3. 2008-08-01: VMware主机访问虚拟机调试网站 | fangyi's blog

发表您的评论

您的昵称:
您的邮箱:(可选,不会被公布)
您的网站: