??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
q个世界真繁华,Program的世界也是五彩缤UP语言层出不穷Q各U语a库也是前赴后l,非不把前推在沙滩上不可Q所?span lang="EN-US">Program遇到的技术问题是来少了,但业务需求变更问题还是此起彼伏,没有看到丝毫有消退的可能,真希望这个世界在q个领域也能癑֮争鸣、百安放,需求不定问题减少到尽量低的程度。目前编E首先要考虑已经不是技术问题了Q而是代码l织问题了,量保证代码的维护性好、重用性高?/font>
对出现的一些新语言很是不适,对他们捣鼓的一些概念觉得很烦;没有最好的语言Q只有对自己有钱途的语言才是好语a。下一步要q旉捣鼓?span lang="EN-US">ATL8相关新技术,q旉研究groovy?/font>
未来属于ITQ?span lang="EN-US">IT的未来在互联|!
摘录 “Redhat linux9下安装DNS配置文中国IT实验?htm”中的内?br />
1、所需pȝ资源 安装bind-
2?配置文gQ文件名?qing)来?span lang="EN-US"> /etc/named.conf ?span lang="EN-US">/var/named/named.local
愿各位兄弟姐妹自强、自立、自信,你们是最的Q?span lang="EN-US">
IN -----IN是提供IP地址的域名类当,与AQPTR或CNAME记录一起用时可将域名映射为IP地址Q反之一?
NS -----域名服务器指定的区域DNS服务器的域名或IP地址
MX ----MX记录定义何种机器来ؓ(f)域或单个L传送电(sh)子邮Ӟ为域定义是告诉每个人将邮g发送给该域中要与之通信的h或机?
SOA-----Start Of Authority 指明其后的域名定义了d名服务器?qing)该域的联系点的电(sh)子邮g地址?
PTR---IP地址映射Z机名QPTR记录执行与A?qing)记录相反的q程
A----主机名映射为其IP地址
DNS?/p>
在Linux 中,域名服务QDNSQ是由柏克莱|间名域QBerkeley Internet Name Domain——BINDQY件实现的。BIND是一个客?服务pȝQ它的客h面称{换程序(resolverQ,它生域名信息的查询Q将q类信息发送给服务器,DNS软g回答转换E序的查询。BIND的服务方面是一个称为namedQ读作“name”“d”)的守护进E?/p>
我们讨ZU基本BIND配置dQ?/p>
配置BIND转换E序?/p>
配置BIND域名服务?/p>
建立服务器数据库文gQ称为“区文gQzone fileQ?/p>
术语“区QzoneQ”往往可以与单词“域QdomainQ”互换用,但这里却有一些区别,“区”是指域数据库文Ӟ而“域”则比较通用。在本书中,域是用域名定义的域结构中的一部分Q而区则是域数据库文g中包含域信息的集合,包含域信息的文gUCؓ(f)“区文g”?/p>
DNS的作用是把IP地址转化Z表主机、网l和邮g别名的助记名。它把整个Internet IP地址和名字空间分解ؓ(f)不同的逻辑l来做这工作。每个组对它所拥有的计机和其他信息具有控制权?br />DNS服务器的cd
BIND可以配置成以几种不同的方法运行的DNSQ常见的BIND配置是唯转换E序pȝ、唯高速缓存系l、主服务器和辅助服务器?/p>
转换E序是一D要求域名服务器提供域信息的E序Q在Linuxpȝ中,它是作ؓ(f)一个库E序来实现的Q不是一个单独的客户E序。在唯{换程序系l中Q仅使用转换E序Qƈ不运行域名服务器。这U系l是很容易配|的Q最多只需要设|?etc/resolv.conf文g。其它三个BIND配置选项都是用于 named服务软g的?/p>
唯高速缓存服务器 唯高速缓存服务器Qcaching-only serverQ可q行域名服务器Y件但是没有域名数据库软g。它从某个远E服务器取得每次域名服务器查询的回答Q一旦取得一个答案,将它放在高速缓存中Q以后查询相同的信息时就用它予以回答。所有的域名服务器都按这U方式用高速缓存中的信息,但唯高速缓存服务器则依赖于q一技术提供所有的域名服务器信息。唯高速缓存服务器不是权威性服务器Q因为它提供的所有信息都是间接信息?/p>
对于唯高速缓存服务器只需要配|一个高速缓存文Ӟ但最常见的配|还包括一个回送文Ӟq或许是最常见的域名服务器配置。接着才是唯{换程序配|,它是最Ҏ(gu)配置的?/p>
L务器 L务器Qprimary name serverQ是特定域所有信息的权威性信息源。它从域理员构造的本地盘文g中加载域信息Q该文gQ区文gQ包含着该服务器h理权的一部分域结构的最_信息。主服务器是一U权威性服务器Q因为它以绝对的权威d{对它域的Q何查询?/p>
配置L务器需要一整套配置文gQ包括正规域的区文gQnamed.hostsQ和反向域的区文Ӟnamed.revQ、引导文Ӟnamed.confQ、高速缓存(named.caQ和回送文Ӟnamed.localQ,其它的配|都不需要这样一整套文g?/p>
辅助域名服务?辅助域名服务器(secondary name serverQ可从主服务器中转移一整套域信息。区文g是从L务器中{Ud来的Qƈ作ؓ(f)本地盘文g存储在辅助服务器中。这U{Uȝ为“区文g转移”。在辅助域名服务器中有一个所有域信息的完整拷贝,可以有权威地回答对该域的查询Q因此,辅助域名服务器也UC权威性服务器?/p>
配置辅助域名服务器不需要生成本地区文gQ因为可以从L务器中下载该区文件。然而其它的文g是确是需要的Q包括引导文件、高速缓存文件和回送文件?/p>
一个域名服务器可以是这c配|中的Q何一U,但经常是多U配|类型的元素l合在一赗然而所有的pȝ都要q行转换E序?br />
DNS常用术语
DNS是一个很复杂的概念,?列出了常用的DNS术语?/p>
? 常用DNS术语
术语
说明
?/p>
代表|络一部分的逻辑实体或组l?/p>
域名
L名的一部分Q它代表包含q个L的域。它可以和域交换使用
L
|络上的一台计机
节点
|络上的一台计机
域名服务?/p>
提供DNS服务的计机Q它?yu)DNS名字转化为IP地址
解析
把一个DNS服务器{化ؓ(f)与其相映的IP地址的过E?/p>
解析?/p>
从域名服务器中提取DNS信息的程序或库子E序
反向解析
给出的IP地址转化为其相映的DNS名字
ƺ骗
使网l看上去好象h不同的IP地址或域名的行ؓ(f)
在概念上可以把DNS分ؓ(f)三个部分Q?/p>
域名I间q是标识一l主机ƈ提供他们的有关信息的?wi)结构的详细说明。树(wi)上的每一个节炚w有它控制下的L的有关信息的数据库。查询命令试图从q个数据库中提取适当的信息。简单地_(d)q只是所有不同类型信息的列表Q这些信息是域名、IP地址、邮件别名和那些在DNSpȝ中能查到的内宏V?/p>
域名服务器它们是保持q维护域名空间中的数据的E序。每个域名服务器含有一个域名空间子集的完整信息Qƈ保存其它有关部分的信息。一个域名服务器拥有它控制范围的完整信息。控制的信息按区q行划分Q区可以分布在不同的域名服务器上Q以便ؓ(f)每个区提供服务。每个域名服务器都知道每个负责其他区的域名服务器。如果来了一个请求,它请求给定域名服务器负责的那个区的信息,那么q个域名服务器只是简单地q回信息。但是,如果h是不同区的信息,那么q个域名服务器就要与控制该区的相映服务器联系?/p>
解析?解析器是单的E序或子E序库,它从服务器中提取信息以响应对域名I间中主机的查询?br />配置转换E序
使用DNS的第一步是在用L(fng)计算Z配置转换E序Q即让机器能够能够从DNS服务器中获取域名解析/反解析服务。{换程序不是一个单独而明的处理q程Q而是|络q程调用的一个标准CE序库。如果本地系l不q行namedQ就必须配置本地转换E序?br />转换E序控制文g/etc/host.conf
/etc/host.conf是用来控制本地{换程序的文g的设|。该文g告诉转换E序使用哪些服务、按照什么顺序进行。该文g的字D可以用I格或制表符分隔。字W?”表C注释行。表2是可在host.conf中指定的选项?/p>
? /etc/host.conf文g的配|选项
选项
说明
order
指定按照哪种序来尝试不同的名字解析机制。按列出的顺序来q行指定的解析服务。支持下面的名字解析机制Q?/p>
hosts 试图通过查找本地/etc/hosts文g来解析名?/p>
bind 使用DNS域名服务器来解析名字
nis 使用|络信息服务QNISQ协议来解析L名字
multi
以off和on为参数。与host查询一起用,用来定一C机是否在/etc/hosts文g中指定了多个IP地址
nospoof
如果用逆向解析扑և与指定的地址匚w的主机名Q对q回的地址q行解析以确认它实与?zhn)查询的地址盔R。ؓ(f)了防止“骗取”IP地址Q通过指定nospoof on来允许这U功?/p>
alert
以off和on为参数。如果打开QQ何试N取IP地址的行为都通过syslog工具q行记录
trim
以域名ؓ(f)参数。在/etc/hosts中查扑字前Qtrim删除q个域名。着使你只把基本L名放?etc/host.conf中而不指定域名
下面q个例子是主机vlager上的/etc/host.conf文gQ?/p>
# /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.
q个例子l出了域vbrew.com的通用解析E序配置。该解析E序首先使用DNS然后使用/etc/hosts文g查找L名。在解析查找中指定本?/etc/hosts文g是一个好L。如果由于某U原因不能用域名服务器了,我们q可以用主机文件中列出的那些主机名。该机器上允怋用多个IP地址Q主机通过重新解析L名字Q从IP地址逆向查找q回的主机名字)来检查IPƺ骗?br />转换E序/配置文g/etc/resolv.conf
当配|{换程序用BIND域名服务查询LӞ我们必须告诉转换E序使用哪一个域名服务器。用来完成这Q务的工具是/etc/resolv.conf 文g?etc/resolv.conf控制转换E序使用DNS解析L名用的方式Q它可以明确地定义系l的配置Q允许我们命名由于缺省服务器不响应而用的备䆾服务器。因此,管?x)增加系l负P但在某些场合使用resolv.conf是很受欢q的?/p>
/etc/resolv.conf是一个简单而易ȝ文g。在/etc/resov.conf中用的命o(h)Q具有系l专用的形式Q但一般都支持domain和nameserver两项命o(h)?/p>
nameserver 利用IP地址去识别让转换E序去识别查询域信息的那些服务器。我们可以多ơ用nameserver选项Q可以用多达三个域名服务器。这些名服务器是按照它们在文件中的顺序进行查询的Q如果没有接收到一个服务器的响应,去试表中的下一个服务器Q直到所有服务器试完为止Q如果在 /etc/resolv.conf文g中设|了三个以上的域名服务器Q那么,即前三个服务器都没有响应查询请求,Linux也不?x)去h后面的服务器Q。我们应该将最可靠的域名服务器列在最前面Q以便在查询时不?x)超时。如果resolv.conf文g中不包含nameserver,或者不存在 resolv.conf文gQ就所有名服务器查询发送给本地L。然而,如果有一个resolv.conf文gQ它包含nameserver,除非有一Ҏ(gu)向本C机,否则׃查询本地L。在配置唯{换程序的L中,resolv.conf文g包含nameserver,但没有一个项指向本地L?/p>
domain用来定义缺省域名(L的本地域名)。{换程序会(x)缺省域名挂在Q何不含点的主机名后面。例如,转换E序接收C机名 valeQ它不含点)Q就其~省域名挂接在vale后面Q构成对它的查询。如果domian域中的name值是vbrew.comQ那么{换程序就查询vale.vbrew.com。如果没有出它,则{换程序就试图通过getdomainname()pȝ调用来获得本地域名?/p>
如果听v来让惑不解的话,我们可以看看下面q个例子Q这是Virtual Brewery中的resolv.conf文gQ?/p>
# /etc/resolv.conf
# Our domain
domain vbrew.com
#
# We use vlager as central nameserver:
nameserver 191.72.1.1
在该例中Q通过domain指定~省域名Qƈ列出一个用于解析主机名的域名服务器。在q个例子中没有指定查寻顺序(使用search选项Q,因此如果要查询一台机器的地址Q如valeQ,解析器则首先试图查找valeQ如果没扑ֈQ则查找vale.vbrew.comQ然后再查找vbrew.com?br />唯{换程序配|?/p>
配置唯{换程序是非常单的Q下面是一个唯转换E序?etc/resolv.conf文g的例子:(x)
# /etc/resolv.conf
# Our domain
domain vbrew.com
#
# We use vlager as central nameserver:
nameserver 191.72.1.1
# netx try vale
namesever 191.72.1.3
该配|文件告诉{换程序将所有的查询发送给d名服务器vlagerQ如果失败,pvale。这些查询是永远不能在本地{换的。这一个简单的resolv.conf文g可以满_转换E序配置的全部要求?br />讄域名服务?/p>
在Linux 上的域名服务是由named守护q程来执行的Qnamed最早是为BSD向客h提供域名服务而开发的。named守护q程通常在系l启动时开始工作,q一直工作到pȝ关闭。该q程从被UC/etc/named.boot的配|文件中获取有关信息和将L名映ؓ(f)IP地址的各U文件?/p>
Zq行namedQ只要在命o(h)行中输入Q?/p>
# /etc/rc.d/init.d/named start
named׃(x)开始运行,dnamed.boot文g?qing)其定义的Q何区文gq将它的q程ID以ASCII码的形式写入/var/run/named.pid中,下蝲M来自L务器的区文gQ如果有必要的话在端?3{待DNSh?/p>
虽然转换E序的配|只需要一个配|文?但是在配|named时却要用多个文?一整套named配置文g如表3所C?/p>
? named配置文g
配置文g
说明
named.conf
讄一般的named参数Q指向该服务器用的域数据库信息的源,q类源可以是本地盘文g或远E服务器
named.ca
指向根域名服务器
named.local
用于在本地{换回送地址
named.hosts
主机名映射为IP地址
named.rev
用于反向域的、将IP地址映射C机名的区文g
在下面各节中我们探讨如何利用其中的每一个文件去配置named?br />/etc/named.conf文g
named.conf文g通常很小Q只包括一些指向DNS信息源的信息。其中某些源是本地文Ӟ其他则是q程服务器。下面我们将看到一个需要生成的每种文gcd的例子?/p>
?概括了named.conf文g中用的各种配置语句Q它提供的信息能帮助我们了解q一些例子:(x)
? named.boot文g的配|选项
选项
说明
Directory
指定DNS文g所在的目录。?zhn)可以重复此选项以指定几个不同的目录。可以给些目录相关的文g路径?/p>
Master
以一个域名和一个文件名为参数。此选项声明namedҎ(gu)定的域具有控制权Qƈ使named从指定的区域加蝲信息
Hint
为named建立高速缓存信息。以一个域名和一个文件名为参数。域名通常用?”指定。指定的文g包括一l称为服务器提示的记录,q些记录列出了根域名服务器的信息
Forwarders
以一个域名服务器的列表作为参数。告诉本地域名服务器Q如果它不能从它的本C息中解析出地址Q那么就与该列表中的服务器联p?/p>
Slave
把本地域名服务器变成一个从属服务器。如果给Z此选项Q那么本地服务器p着通过递归查询来解析DNS名字。它只把h传递给forwarders选项行列出的服务器中的一?/p>
配置named.conf文g所使用的方法,是用来控制将域名服务器作Z服务器、辅助服务器q是唯高速缓存服务器的。理解不同配|的最x法是讨论各种named.conf的示例文件?br />1.唯高速缓存服务器
配置唯高速缓存域名服务器是很单的。必Lnamed.conf和named.ca文gQ通常也要用到named.local文g。下面是用于唯高速缓存服务器的named.conf文g的例子,其中以?/”开头的是注释:(x)
// generated by named-bootconf.pl
options {
directory "/var/named";
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
};
//
// a caching only nameserver config
//
//
// a caching only nameserver config
//
zone "." {
type hint;
file "named.ca";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
directory q一行告诉named到哪里去扑֯文g。所有其后命名的文g都将是相对于此目录的。该文g告诉namedȝ持一个域名服务器响应的高速缓存,q利?named.ca文g的内容去初始化该高速缓存。该高速缓存初始化文g的名字可以是M名字Q但一般?var/named/named.ca。ƈ不是在该文g中用一个hint语句p使它成ؓ(f)唯高速缓存配|,几乎每一U服务器的配|都要用到cache语句Q而是因ؓ(f)没有master和slave语句才它成Z个唯高速缓存配|?/p>
但是Q在我们q个例子中却有一个master语句。事实上Q几乎在每一个唯高速缓存的配置文g中都有这一个语句,它将本地服务器定义ؓ(f)它自q回送域的主服务器,q假定该域的信息存储在named.local文g中。这个回送域是一个in- addr.arpa域(in-addr.arpa域用于指定逆向解析Q或IP地址到DNS名字解析Q,它将地址127.0.0.1映射为名?localhost。{换自q回送地址对于大多Ch都是有意义的Q因为大多数的named.conf文g都包含这一V?/p>
在大多数唯高速缓存服务器的配|文件中Q这Udirectory、master和hint语句是唯一使用的语句,但也可以增加其他的语句,forwarders和slave{语句都可以使用?br />2.L务器和辅助服务器的配|?/p>
我们虚构的vbrew.com是D例说明主服务器和辅助服务器的基础Q下面是vlager定义为vbrew.com域的L务器的named.conf文gQ?/p>
// generated by named-bootconf.pl
options {
directory "/var/named";
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
};
//
// a caching only nameserver config
//
zone "." {
type hint;
file "named.ca";
};
zone "vbrew.com"{
type master;
file "named.hosts";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
};
zone "72.191.in-addr.arpa"{
type master;
file "named.rev";
};
上例中第一个master告诉我们q是vbrew.com域的L务器。该域的数据是从named.hosts文g中加载的。在我们q个例子中,我们文件名named.hosts作ؓ(f)区文件名Q但也可以用更有说明性的文字Q例如,vbrew.com区文件的名字使用vbrew.com.hosts则较好?/p>
W三个master语句指向能将IP地址191.72.0.0映射Z机名的文件。它假定本地服务器是反向?2.191.in-addr.arpa的主服务器,该域的数据从文gnamed.rev中加载?/p>
在上例配|中的hint语句和第二个用于回送域的primary语句我们前面在唯高速缓存配|中已经讨论q。在q些配置中,它们的作用是相同的,而且几乎在Q何配|中都要使用它们?/p>
辅助服务器的配置与主服务器的配置不同Q它使用slave语句代替master语句。slave语句指向用作域信息源的远E服务器Q以替代本地盘文g。下面的named.conf文g可以vale配置成ؓ(f)vbrew.com域的辅助服务器:(x)
// generated by named-bootconf.pl
options {
directory "/var/named";
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
};
//
// a caching only nameserver config
//
zone "." {
type hint;
file "named.ca";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
};
zone "vbrew.com"{
type slave;
file "named.hosts";
masters { 191.72.1.3; };
};
zone "72.191.in-addr.arpa"{
type slave;
file "named.rev";
masters {191.72.1.3;};
};
cache . named.ca
secondary vbrew.com 191.72.1.3 named.hosts
secondary 72.191.in-addr.arpa 191.72.1.3 named.rev
primary 0.0.127.in-addr.arpa named.local
W一个slave语句是ɘq个服务器成为vbrew.com的辅助服务器。它告诉named从IP地址?91.72.1.3的服务器中下?vbrew.com的信息,q将其数据保存在/var/named/named.hosts文g中。如果该文g不存在,named创造一个,q从q程服务器中取得区数据,然后这些数据写入新创徏的文件中。如果存在该文gQnamedp查远E服务器Q以了解该远E服务器的数据是否不同于该文件中的数据,如果数据有变化,它就下蝲更新后的数据Q用新数据覆盖该文g的内容;如果数据没有变化Qnamed加载磁盘文件的内容Q不必做ȝ的区转移工作?/p>
一个数据库拯到本地磁盘文件中Q就不必每次引导L旉要{Ud文gQ只有当数据修改Ӟ才进行这U区文g的{Ud作?/p>
该配|文件中的下一行表C本地服务器也是反向域72.191.in-addr.arpa的一个辅助服务器Q而且该域的数据也?91.72.1.3中下载。该反向域的数据存储在named.rev中?br />DNS数据库文件和资源记录
配置named所需的所有文Ӟnamed.hosts、named.rev、named.local和named.caQ中的信息是以称源记录的形式存在的。每个资源记录都有一个类型,q个cd说明记录的功能。这些记录都是标准资源记录,UCؓ(f)RRQresource recordsQ。表5列出了最常见的资源记录类型,其余的类型很用刎ͼ如果感兴的话。请参考相应的RFC和man page?/p>
? 常见标准资源记录
资源记录?/p>
记录cd
功能说明
地址
A
主机名转换为地址。这个字D保存以点分隔的十进制Ş式的IP地址。Q何给定的L都只能有一个A记录Q因个记录被认ؓ(f)是授权信息。这个主机的M附加地址名或地址映射必须用CNAMEcdl出
规范?/p>
CNAME
l定一个主机的别名Q主机的规范名字是在q个L的A记录中指定的
L信息
HINFO
描述L的硬件和操作pȝ
邮g交换
MX
建立邮g交换器记录。MX记录告诉邮g传送进E把邮g送到另一个系l,q个pȝ知道如何它递送到它的最l目的地
名服务器
NS
标识一个域的域名服务器。NS资源记录的数据字D包括这个域名服务器的DNS名。我们还需要指定这个名字名字服务器的地址与主机名相匹配的A记录
指针
PTR
地址变换成主机名。主机名必须是规范主机名
理开?/p>
SOA
告诉域名服务器它后面跟着的所有所有资源记录是控制q个域的QSOAQ表C授与控制权Q。其数据字段用(Q括hq且通常是多行字Dc(din)SOA记录的数据字D包含下面的:(x)
origin
q个域的d名服务器的规范主机名。用点??l尾的绝对主机名Q因此,它不能被named守护q程修改
contact
负责l护q个域的人的?sh)子邮g联系地址。因为@在资源记录中有特D的意义Q所以用点?”代替这个符受如果负责维护vbrew.com的h是clflsQ那么联pd址是clfls.vbrew.com
serial
q个Z息文件的版本P它是一个整数。辅助域名服务器用它来确定这个区信息的文件是何时改变的。每ơ改变信息文件时都应该ɘq个数加一
refresh
辅助域名服务器在试图查主域名服务器的SOA记录之前应等待的U数。SOA记录不经常改变,因此可以把这个D|ؓ(f)一?/p>
retry
辅助服务器在L务器不能使用Ӟ重试对主服务器的h应等待的U数。通常Q它应该按分q行讄
expire
q是辅助服务器在不能与主服务器取得联pȝ情况下丢掉区信息之前应等待的U数Q一般应该设|成30天左?/p>
minimum
当没有指定ttl资源记录旉认的ttl倹{如果网l没有太大的变化Q那么这个数可以讑־很大。可以在资源记录中指定一个ttl值来代替?/p>
Z能看懂本章中使用的配|示例文Ӟ有必要稍微介l以下资源记录的l构。DNS资源记录的格式是Q?/p>
[domain] [ttl] [class] type rdate
各个字段之间有空格或指标W分隔。表6讨论了这些字D늚含义?/p>
? 资源记录格式中的字段
字段
说明
domain
资源记录引用的域对象名。它可以是单C机,也可以是整个域。作为domain输入的字串除非不是以一个点l束Q否则就与当前域有关pR如果该domain字段是空的,那么该记录适用于最后一个带名字的域对象
ttl
生存旉记录字段。它以秒为单位定义该资源记录中的信息存放在高速缓存中的时间长度。通常该字D|I字D,q表CZ用SOA记录中ؓ(f)整个区域讄的缺省ttl
class
指定|络的地址cR对于TCP/IP|络使用IN。如果没有给出类Q就使用前一个资源记录的c?/p>
type
标识q是哪一c资源记?/p>
rdata
指定与这个资源记录有关的数据。这个值是必要的。数据字D늚格式取决于类型字D늚内容
named.ca文g
named.boot 文g中的cache语句指向一个高速缓存初始化文gQ具有高速缓存的服务器都有这样一个文件。它包含着域名服务器启动时开始创造一个域数据高速缓存所需的信息。在cache语句中,用一个指点其根域Q在named.ca文g中至包含根服务器的名字和地址。named的高速缓存操作是很重要的。幸q的是,建立高速缓存的named.ca文g通常是最单的named配置文g?/p>
基本的named.ca文g包含Ҏ(gu)务器的NS记录和提供根服务器地址的A记录。下面就是基本的named.ca文gQ?/p>
; named.ca file
; servers for the root domain
. 99999999 IN NS NS.NIC.DDN.MIL.
99999999 IN NS NS.NASA.GOV.
99999999 IN NS KAVA.NISC.SRI.COM.
99999999 IN NS TERP.UMD.EDU.
99999999 IN NS C.NYSER.NET.
99999999 IN NS NS.INTERNIC.NET.
;
; root servers by address
;
NS.NIC.DDN.MIL. 99999999 IN A 199.112.36.4
NS.NASA.GOV. 99999999 IN A 128.102.16.10
KAVA.NISC.SRI.COM. 99999999 IN A 192.33.33.24
TERP.UMD.EDU. 99999999 IN A 128.8.10.90
C.NYSER.NET. 99999999 IN A 192.33.4.12
NS.INTERNIC.NET. 99999999 IN A 198.41.0.4
该记录只包含各服务器记录和地址记录。首先是一l标识根Q?Q域的各服务器的NS记录Q在NS记录之后Q是一lؓ(f)每个Ҏ(gu)务器提供地址的A记录。虽然不需要ttlQ但?fn)惯上每个记录的ttl?9999999Q可能的最大|。因为根服务器是永远不会(x)从高速缓存中删除的?br />named.local文g
named.local 文g可以回送地址127.0.0.1转换成本C机名Q它是反向域0.0.127.IN-ADDR.ARPA使用的区文g.׃所有系l都?127.0.0.1作ؓ(f)回送地址Q该文g实际上对于每一个系l都是相同的。下面是从vlager上获取的一个典型的named.local文gQ?/p>
;
; /var/named/named.local Reverse mapping of 127.0.0
; Origin is 0.0.127.in-addr.arpa.
;
@ IN SOA vlager.vbrew.com. (
joe.vbrew.com.
1 ; serial
360000 ; refresh: 100 hrs
3600 ; retry: one hour
3600000 ; expire: 42 days
360000 ; minimum: 100 hrs
)
IN NS vlager.vbrew.com.
1 IN PTR localhost.
其中的SOA记录的数据字D和包含L名的NS记录是随pȝ不同而不同的。本例中SOA记录vlager.vbrew.com标识为开创该区的服务器,电(sh)子邮件地址joe.vbrew.com标识册区问题的联系地点Q在SOA记录中,通常电(sh)子邮件地址中用来分隔接收者名字和L名的@修改成一个点Q其它字D则保持不变Q。很多系l甚至不包含NS记录Q若要用它,包含计机的主机名。修改这三个字段我们可以在ML中用这个文件?/p>
到目前ؓ(f)止我们讨论的文gnamed.boot、named.ca和named.local都是配置唯高速缓存服务器和辅助服务器时所需要的文g。大多数服务器将只需要这些文Ӟ而且使用的这些文件在Q每一个服务器上几乎都包含相同的信息?/p>
其它的named配置文g比较复杂Q但是用这些文件的服务器数量比较少Q只有主服务器需要所有的配置文gQ而每个域只有一个主服务器?br />反向域文件named.rev
named.rev与named.host文g非常cMQ都包含有PTR记录Q只是named.rev地址映射Z机名。下面是named.rev的一个例子?/p>
;
; /var/named/named.rev Reverse mapping of our IP addresses
; Origin is 72.191.in-addr.arpa.
;
@ IN SOA vlager.vbrew.com. (
joe.vbrew.com.
16 ; serial
86400 ; refresh: once per day
3600 ; retry: one hour
3600000 ; expire: 42 days
604800 ; minimum: 1 week
)
IN NS vlager.vbrew.com.
; brewery
1.1 IN PTR vlager.vbrew.com.
2.1 IN PTR vstout.vbrew.com.
3.1 IN PTR vale.vbrew.com.
; winery
1.2 IN PTR vlager-if1.vbrew.com.
2.2 IN PTR vbardolino.vbrew.com.
3.2 IN PTR vchianti.vbrew.com.
4.2 IN PTR vbeaujolais.vbrew.com.
在这个例子中Q包含了在named.hosts文g中见到的相同的SOA记录。它只是为域建立控制信息。该SOA记录的名字字D中的@是指向当前域Q本例是由named.bootCZ文g中的primary定义的:(x)
primary 72.191.in-addr.arpa named.rev
该SOA 记录中的@允许primary语句d义区文g域,vlager中每个区文g都用相同一个SOA记录Q它L引用正确的域名,因ؓ(f)所引用的都?named.boot为特定区文g定义的域。几乎在每个区文件的开_(d)我们都可以看到相同的SOA格式。请修改L名vlager.vbrew.com和管理员?sh)子邮g地址joe.vbrew.comQƈ在我们Q何一个区文g中用该SOA记录?/p>
在SOA记录后面的NS记录可以该域的服务器Q一般在其它M记录有机?x)去修改域名之前Q将立即在SOA之后列出各域名服务器。请注意Q一个空的名字字D|味着上一个域名仍然v作用QSOA的域应用仍然有效Q因为后面的NS记录中的名字D|I的?/p>
PTR 记录在named.rev文g中占有重要地位,因ؓ(f)它们可以地址转换Z机名。在我们的例子中QPTR记录为网l?91.72中的L1.1?.2?1.3?.1?.2?.3?.4提供地址到名字的转换Q由于它们不是以点结束,所以这些PTR记录中名字字D늚值都与当前域有关。例如,?.1 可以看作?.1.72.191.in-addr.arpa。PTR记录的数据数据字D中的主机名是全部限定的Q以防止它和当前域名相关。利用PTR中的信息Qnamed将3.1.72.191.in-addr.arpa转换成vale.vbrew.com?br />named.hosts文g
在named.boot 文g中,把named.hosts文g作ؓ(f)包含本地域信息的文g列出。可以在named.boot中的primary行上个文件v用户惌的名字?named.hosts文g包含大部分的域信息,它可以将L名{换成IP地址Q因而A记录占有重要的地位,而且它还包含MX、CNAME和其它的记录。该named.hosts文g和named.rev文g一P只有L务器才有Q其它所有的服务器可从主服务器取得信息。下面给Z一个用多资源记录cd的named.hosts文g的例子:(x)
;
; /var/named/named.hosts Local hosts at the brewery
; Origin is vbrew.com
;
@ IN SOA vlager.vbrew.com. (
janet.vbrew.com.
16 ; serial
86400 ; refresh: once per day
3600 ; retry: one hour
3600000 ; expire: 42 days
604800 ; minimum: 1 week
)
IN NS vlager.vbrew.com.
;
; local mail is distributed on vlager
IN MX 10 vlager
;
; loopback address
localhost. IN A 127.0.0.1
; brewery Ethernet
vlager IN A 191.72.1.1
vlager-if1 IN CNAME vlager
; vlager is also news server
news IN CNAME vlager
vstout IN A 191.72.1.2
vale IN A 191.72.1.3
; winery Ethernet
vlager-if2 IN A 191.72.2.1
vbardolino IN A 191.72.2.2
vchianti IN A 191.72.2.3
vbeaujolais IN A 191.72.2.4
和named.rev文g一P该文件以一个SOA记录和定义域?qing)服务器的NS记录开头。但named.hosts文g包括的资源记录品U多于named.rev。我们根据这些记录在CZ文g中的序来讨论每一U记录?/p>
该文件的W一个记录是域的SOAQ授予控制权Q记录。该记录的第一行以@字符开始,@字符表示q是当前原点或域。原点由 named.boot文g中相应的primary行上列出的域定义l出。此后是代码IN和SOAQ它告诉namedq个资源记录使用Internet QTCP/IPQ编址q且是授予控制权记录?/p>
q行接下来的两项是这个域的主域名服务器的规范名字Q和用点代替@的电(sh)子邮件联pMh的地址。然后列出SOA记录要求的各U数据段Q一行一个?/p>
在SOA记录后,下一行是域名服务器资源记录。它列出vlager.vbrew.com作ؓ(f)q个域的域名服务器。因为在域字D中没有列出M域,所以假设是最后一个指定的域,也就是在SOA记录中列出的@。而且@字符实是本地域。这是比较容易理解的?/p>
MX 记录为整个域定义一个邮件服务器Q该记录假定vlager是vbrew.com域的邮g服务器,其优先值是10。送给user@vbrew.com的邮件被重定向到vlagerQ以便进行传送。当ӞZ使vlager能够成功C送邮Ӟ必d它配|成邮g服务器。MX记录只是整个事g中的一部分Q我们将在第十一章中研究如何使用sendmail配置邮g服务器?/p>
该例中第一个A记录定义本地L地址Q这恰好和named.rev文g中的PTR记录相反Q它允许vbrew.com域中的用戯入本C机名QlocalhostQƈ由本地服务器它转换为地址127.0.0.1?/p>
接下来是定义子网brewery中的L。第一个A记录为网关vlager定义了IP地址Q然后用CNAME定义了vlager 的别名vlager-if1Q接下来又说明vlagerq是新闻服务器(newsQ。之后ؓ(f)q个域的另外两台LQvstout和vale建立地址记录?/p>
然后四个A记录定义了子|winery中的四台L的IP地址Qvlager-if2、vbardolino、vchianti和vbeaujilias?br />错误查找
在配|好named.boot文g和所需的区文g之后Q我们就可以启动named了。Named通常是在pȝ引导时启动的Q但是也可以使用下面命o(h)启动Q?/p>
# /etc/rc.d/init.d/named/restart
或:(x)
# ndc restart
在第一ơ运行这些命令时Q请留意出错信息。DNS是一个很复杂的系l。用户可能会(x)做错很多事,q且?x)ɾpȝ不能正常q行。伴随DNS建立出现的许多问题都?x)引L(fng)同的l果Q但起因却不同。但大多数问题是׃配置文g中的语法错误而导致的?/p>
保用户的DNS配置文g中正地指定了主机名。如果它是一个绝对主机名Q要保它以一个原点结。对在SOA和CNAME记录中用的名字要尤其小心。如果在q里弄错了,q些资源记录?x)把L名查询重定向C存在的计机。要保在改变配|文件后增加配置文g中的版本受如果忘了,那么DNS不能再dq些文g。确保ؓ(f)A记录输入了正的IP地址Qƈ查这个地址是否与?zhn)?etc/hosts文g匚w。另外,保DNS名字和IP地址与named.rev中的相应的逆向解析信息匚w?/p>
查找错误的最好工hnslookup命o(h)。用该命o(h)d查用L(fng)DNS服务器。对用户的DNS数据库中的每个地址都进行定期逆向解析Q以保所有的地址和名字都正确?br />nslookup命o(h)的?/p>
nslookup是检查我们的域名服务器配|的最好工P它是由BIND软g包提供的。它允许M人直接查询域名服务器Q对于确定服务器是否正确地运行和是否配置得和合适是很有帮助的?/p>
nslookup命o(h)可以交互式的从命令行q行查询Q在命o(h)行中它可以用来查询IP地址Q例如:(x)
$ nslookup hostname
q条命o(h)要求定义在resolv.conf中的域名服务器查询给定主机名的IP地址Q如果有不止一个服务器Qnslookup按列在 /etc/resolv.conf文g中的序选取一个作为查询对象)。当不带M参数Ӟnslookup显C所使用的域名服务器的信息。在 ?gt;”提C符下,我们可以输入所要请求的查询的域名;在提C符下输入exit命o(h)会(x)l止一ơ查询会(x)话。默认情况下Qnslookup查询A记录。例如:(x)
$ nslookup
Default Name Server: rs10.hrz.th-darmstadt.de
Address: 130.83.56.60
> sunsite.unc.edu
Name Server: rs10.hrz.th-darmstadt.de
Address: 130.83.56.60
Non-authoritative answer:
Name: sunsite.unc.edu
Address: 152.2.22.81
>exit
但我们可以用set type命o(h)修改L询另一U资源记录类型,下面的例子将?x)可查SOA记录。请注意Q如果将查询cd讄成SOA。它?yu)保持SOA不变Q不?x)返回默认的A型查询。如果我们需要查询A记录Q则q需要用一ơset type命o(h)?/p>
$ nslookup
Default Name Server: rs10.hrz.th-darmstadt.de
Address: 130.83.56.60
> unc.edu
*** No address (A) records available for unc.edu
Name Server: rs10.hrz.th-darmstadt.de
Address: 130.83.56.60
> set type=SOA
> unc.edu
Name Server: rs10.hrz.th-darmstadt.de
Address: 130.83.56.60
Non-authoritative answer:
unc.edu
origin = ns.unc.edu
mail addr = shava.ns.unc.edu
serial = 930408
refresh = 28800 (8 hours)
retry = 3600 (1 hour)
expire = 1209600 (14 days)
minimum ttl = 86400 (1 day)
Authoritative answers can be found from:
UNC.EDU nameserver = SAMBA.ACS.UNC.EDU
SAMBA.ACS.UNC.EDU internet address = 128.109.157.30
>exit
同样Q可以用set type查询MX记录Q或修改成专用查询类型ANYQANY可以用来取得指定L的所有可用资源记录?/p>
> set type=MX
> unc.edu
Non-authoritative answer:
unc.edu preference = 10, mail exchanger = lambada.oit.unc.edu
lambada.oit.unc.edu internet address = 152.2.22.80
Authoritative answers can be found from:
UNC.EDU nameserver = SAMBA.ACS.UNC.EDU
SAMBA.ACS.UNC.EDU internet address = 128.109.157.30
>exit
nslookup命o(h)的另一个应用ؓ(f)named.ca文g是获取当前根服务器的列表。我们可以用set type=NS来查询所有的根域名服务器Q?/p>
$ nslookup
Default Name Server: rs10.hrz.th-darmstadt.de
Address: 130.83.56.60
> set typ=NS
> .
Name Server: fb0430.mathematik.th-darmstadt.de
Address: 130.83.2.30
Non-authoritative answer:
(root) nameserver = NS.INTERNIC.NET
(root) nameserver = AOS.ARL.ARMY.MIL
(root) nameserver = C.NYSER.NET
(root) nameserver = TERP.UMD.EDU
(root) nameserver = NS.NASA.GOV
(root) nameserver = NIC.NORDU.NET
(root) nameserver = NS.NIC.DDN.MIL
Authoritative answers can be found from:
(root) nameserver = NS.INTERNIC.NET
(root) nameserver = AOS.ARL.ARMY.MIL
(root) nameserver = C.NYSER.NET
(root) nameserver = TERP.UMD.EDU
(root) nameserver = NS.NASA.GOV
(root) nameserver = NIC.NORDU.NET
(root) nameserver = NS.NIC.DDN.MIL
NS.INTERNIC.NET internet address = 198.41.0.4
AOS.ARL.ARMY.MIL internet address = 128.63.4.82
AOS.ARL.ARMY.MIL internet address = 192.5.25.82
AOS.ARL.ARMY.MIL internet address = 26.3.0.29
C.NYSER.NET internet address = 192.33.4.12
TERP.UMD.EDU internet address = 128.8.10.90
NS.NASA.GOV internet address = 128.102.16.10
NS.NASA.GOV internet address = 192.52.195.10
NS.NASA.GOV internet address = 45.13.10.121
NIC.NORDU.NET internet address = 192.36.148.17
NS.NIC.DDN.MIL internet address = 192.112.36.4
>exit
利用nslookup的help命o(h)或?Q我们可以得到nslookup的完整命令列表。例如:(x)
>help
Commands: (identifiers are shown in uppercase, [ ] means optional)
NAME - print info about the host/domain NAME using default server
NAME1 NAME2 - as above, but use NAME2 as server
help or ? - print info on common commands; see nslookup(1) for details
set OPTION - set an option
all - print options, current server and host
[no]debug - print debugging information
[no]d2 - print exhaustive debugging information
[no]defname - append domain name to each query
[no]recurse - ask for recursive answer to query
[no]vc - always use a virtual circuit
domain=NAME - set default domain name to NAME
srchlist=N1[/N2/.../N6] - set domain to N1 and search list to N1,N2,etc.
root=NAME - set root server to NAME
retry=X - set number of retries to X
timeout=X - set initial time-out interval to X seconds
querytype=X - set query type, e.g., A, ANY, CNAME, HINFO, MX, PX, NS, PTR, SOA, TXT, WKS, SRV, NAPTR
port=X - set port number to send query on
type=X - synonym for querytype
class=X - set query class to one of IN(Internet), CHAOS, HESIOD or ANY
[no]recurse - ask for recursive answer to query
[no]vc - always use a virtual circuit
domain=NAME - set default domain name to NAME
srchlist=N1[/N2/.../N6] - set domain to N1 and search list to N1,N2,etc.
root=NAME - set root server to NAME
retry=X - set number of retries to X
timeout=X - set initial time-out interval to X seconds
querytype=X - set query type, e.g., A, ANY, CNAME, HINFO, MX, PX, NS, PTR, SOA, TXT, WKS, SRV, NAPTR
port=X - set port number to send query on
type=X - synonym for querytype
class=X - set query class to one of IN(Internet), CHAOS, HESIOD or ANY
server NAME - set default server to NAME, using current default server
lserver NAME - set default server to NAME, using initial server
finger [USER] - finger the optional USER at the current default host
root - set current default server to the root
ls [opt] DOMAIN [> FILE] - list addresses in DOMAIN (optional: output to FILE)
-a - list canonical names and aliases
-h - list HINFO (CPU type and operating system)
-s - list well-known services
-d - list all records
-t TYPE - list records of the given type(e.g.,A,CNAME,MX,etc.)
view FILE - sort an 'ls' output file and view it with more
exit - exit the program, ^D also exits
当我们用nslookupq一工具Ӟ我们会(x)发现很多有帮助的功能?
q次的工作重Ҏ(gu)解决数据q移?/span> LDAP 服务器部|Ӏ单点登陆?/span> Domino 全文索库集成{问题?/span>
我负责的漛_地区的办公自动化pȝ的推q就要开始了Q从今天开始记录实施这目的体?x)、心得、经验和教训Q记录项目每天的计划和执行情c(din)?/span>
目实施是个相当J琐、复杂的dQ在q过E中?x)必然出现很多事情,且有些事情?x)出自己的思想范围Q所以一定要有好的思想准备Q要保持良好、乐观的心态,要有一颗^常、忍耐的心,要作怀不ؕ?/span>
明天p开始制定项目实施计划了Q联pȝh相关负责人沟通项目实施事宜了Q今天谈谈自己对目实施计划的认识及(qing)寚w目风险的看法?/span>
目实施q程中风险无处不再,Ҏ(gu)要保持极度的警觉Q要时时d从项目的l极目标“验收”ؓ(f)标准考虑问题Q不可敷衍客P也不能娇惯客P一定要控制得体。项目的最大风险之一是用户单位开始就寚w目不重视Q把目作ؓ(f)形象工程或只是单位向财政甌资金的一U手D,而不是想利用目来解决问题;到q种单位Q就一定要努力说服单位的负责hQ让他认识到上这个项目的利益关系Q如果自p决不了这个问题,需要向公司甌更多的资源来解决q个问题Q如动员公司领导q来q行说服工作{,反正要解册个问题,否则q个目没办法做;如果最l说服不了,那就要一定要利用合同条款来保护自己,一句话Q保护自己,利用各种Ҏ(gu)来“独善其w”。项目风险之二:(x)制定的项目实施计划不W合实际目情况Q一个现实的、具体的目计划是相当重要的Q因代表了项目负责hҎ(gu)目的认识程度,代表了实施单位对用户方的U诺Q代表了实施组的信誉度Q所以编刉目实施计划一定要认真、}慎,要仔l认真与用户商讨每个l节Q落实好每个阶段的安排计划。不得体的项目计划必然会(x)造成目的执行出现差错,规定的事情没有完成,必然?x)用户方对实施单位、实施h员生怀疑,最l不信QQ以至不配合。项目风险之三:(x)需求范围控制不力,现在市场竞争是相当激烈,要求合同?qing)方案内容很C是不现实的,实施人员必然会(x)面对q个问题Q我想一个负责的、合格的目负责人是不会(x)L天h的,最多大骂几?/span> fuck Q解册个问题要一定要“知彼”,弄清楚用L(fng)cd?qing)项目对用户负责人的重要清楚Q一般都可分q几U类型的用户Q“重要又_明型”(此单位对此项目很重视且负责h又很认真Q、“不重要但精明型”(此项目对单位来说不是很重要但负责人很计较Q、“糊涂型”;如果是“重要又_明型”的用户Q就要直接、坦诚与用户沟通所有问题,要引导用戯识到问题的轻重缓急,首先解决重要的又紧急的问题、然后解决重要的问题Q依ơ类推,M面对q种cd的用P一定要分阶D实施这个项目,否则够呛。对于属于第二种cd的用P要坦诚沟通相关问题,要充分的重他们Q要让他们认识到目内容的多对他们?qing)单位不会(x)有多大的媄响,要通过一些方法说服相关的负责人,量减少有难度的内容。对于第三种用户Q自q着办。项目的风险之四Q需求变更频J,q个问题是项目实施中l常?x)遇到的敌hQ对付这个敌人最有效的手D|目开始初Q就要让双方认识到需求变更频J对目的媄响,开始初p制定好变更控制的{略Q比如用h指定某个人来承担需求变更的理员,所有的变更h先提交到理员处Q安排某个时间双方一h讨需求变更问题的合理性,定那是合理的是必须修改的,那些是操作习(fn)惯等{原因而不需修改的。如果用h无法指定某个人来承担需求变更的理员的角色Q那目l内p指定好某个h来承担这个角Ԍ变更问题一定要集中控制?/span>
好的战略如果没有好的战术׃C出其非凡的思想
好的战术没有好的执行如IZ楼阁
好的执行需要好的h?/span>
没有行动的思想好比没有花_的EȝQ结不出L(fng)Q?/span>