首页    新闻    下载    文档    论坛     最新漏洞    黑客教程    数据库    搜索    小榕软件实验室怀旧版    星际争霸WEB版    最新IP准确查询   
名称: 密码:      忘记密码  马上注册
网络知识 :: 网络管理

架? DNS(DNS终结篇)


http://www.gipsky.com/
架? DNS(DNS终结篇)



写在前面的话(阿龙补充):这次终于再次把RH8的DNS搞定,其实是很简单,很多地方都不要动,只要动三个地方,一是/etc/named.conf指明路径和zone,另一个是zone文件,要特别主意"("第一个括号不能单独放在一行的开头,其次是需要加一个@ IN A 192.168.2.2(好多地方我发现不需要也可以,但是我不知道为什么我就不可以,如果呢知道是怎么回事请告诉我),相关文件在这里下载(我的已经配置好的) mydnsRH8.rar



--------------------------------------------------------------------------------





前面所介?的伺服器服?大多是用在?部?路?境中的?不??以?代的情?和未?的???看?每??路或多或少都需要 Internet ??以及向 Internet 提供服?。??一章?始?我???大家??介?一些在 Internet ?境中常用到的伺服器之架?技巧。就算您目前??真的需要架? Internet 相?的伺服器?但?多企?的 Intranet ?境中?也需要相?似的伺服器??企??部?路提供服?。

前提?件

在?多 Internet 伺服器?中?有一?服?是所有服?的基??就是 DNS 服?。DNS 可以?是一?不容易弄清楚的概念?尤其是其?作原理。如果您看?“???路”中的“ DNS ?定”(我?烈建?您看看?篇文章?)?相信??有一定概念了?否??您在如下的??中可能?以理解?也浪?您的??。

??如何?在您?一步??下面文章之前??您先?定能正?回答如下的???



什?是 DNS 的授?模式?是怎??行的?

?解? zone 和 domain 的差?。

什?是 DNS 正解和反解?

什?是 DNS 的查?模式?查??程是怎??行的?

?解? DNS cache 的作用和它?查?流程的影?。

如果您未能?上面的????找到答案?那我再推?您多看一篇文章?



http://turtle.ee.ncku.edu.tw/~tung/dns/dnsintro.html

忠告??不必急著知道怎??定 DNS?花???? DNS 的原理弄明白非常重要?尤其是授?模式和查?模式的正?理解。在日後的 DNS 架?和管理中?是否能正?理解?些 DNS 原理?往往是成?的??所在?

如果您在 NT 或 Win2K 下面?定? DNS 伺服器?相信您??得在 Linux 下面?多了。除了概念上要比?清楚外?另外??案的??也要有清晰的追?能力???於?行 debug 尤?重要。因?在 Windows 系?上面?您的所有?定都透??形界面?行?方便是方便?但也因????形界面?限制了您的?定?活性?同?也阻隔了您? DNS 系?的深入了解。?您完成了?章的???而且成功在 Linux 架?出??的 DNS ?境之後??迎您再回到 Win2K 上??做同?的事情。或??您就??同我??的??了...

好了???休提?言?正???百遍不如做一遍?那就?我??始?手吧?



探索 NAMED

在 Linux 上面?提供 DNS 服?的套件是叫 bind? 但?行服?程式名??是 named 。?您?定系?上?有 bind?bind-utils?以及 caching-nameserver ???套件?同?用 ntsysv ?定 named 被?????服?。

首先??我??定一?最重要的 dns ?定??它就是 /etc/named.conf 。我?我自己的?定?案列出??然後逐部份?行解??

// 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;

};



先?我?了解???案上面用?做?解的符?是“ // ”?而不是一般 shell script 的“#”?另外?“ /* ”?“ */ ”之???解一整段文字。同??每一?完整的?定都以“ ?”?尾??不要少了它?(初?者?常?犯????)

上面的部份是在???案??的 options ?定?首先用 directory 指定了 named 的?源??( RR - Resource Record )?案目?所在位置??“/var/named”?也就是??它?到??目?下面?找 DNS ???案。所以?我?在???案後面部份所指定的?案?就?需使用??路?了?但它?一定要放在??目?下面。

接下??有一段文字?如果您仔???一下?它大致是??如果您要?定的 DNS 伺服器和 client 之?是隔著火?的??要?“// query-source address * port 53;”前面的?解符?“ // ”拿掉(?然?您也必?要?定好您的火?啦)。不???只?早期的版本有影??而在 bind 8.1 之後??需?心???定。

接下?再?我?看下一段句子?

//

// a caching only nameserver config

//

zone "." IN {

type hint;

file "named.ca";

};



透???行?我?? named 定?了 DNS 系?中的根?域“ . ”(root zone) 的?定?同?它是一? internet ( IN ) 的?域??( class )。???指定了root zone 的伺服器??( type ) ?“hint”(也只有?? zone ?使用??的??)。最後?用 file 指定???域?????“named.ca”?也就是“/var/named/named.ca”?案。?然 named.ca ???案中的‘ca’是 cache 的意思?但如果您了解 DNS 的?作?就??知道???存?的作用?同???什?我??把 root zone 放在??。(嗯?想想看?尤其是查?非本??域的?候?)

在 root zone 後面?您????看到如下??段?

zone "localhost" IN {

type master;

file "localhost.zone";

allow-update { none; };

};

zone "0.0.127.in-addr.arpa" IN {

type master;

file "named.local";

allow-update { none; };



??是定?出?於本?名?的 DNS 解??第一? zone 是 localhost 的正解 zone?其伺服器??是 master????名?是 localhost.zone (在 /var/named 目?下面)?但?? zone 不允?客?主?(或伺服器)自行更新 DNS 的??(?然?client 主?必?能支援 DNS submit 功能才行)。

而第二? zone ?是本??域的反解 zone ?不???部份的解?我想留到後面的真?例子中再作?明??您留意就是了。

上面的句子??您安?好 caching-nameserver 套件之後就被建立起?的?相信您不用?什?心力。在?案最後?您或??看到下面?段?定?

key "key" {

algorithm hmac-md5;

secret "coqJswFdBMdNAItnLOpkmGgmJtccFsoNZZciWqxlGZBMUTOUxb0geYMFRyTT";

};



?是 bind 9.x 版本的新功能?用??行?域?移或 DNS 更新所用的加密?理。??我???不必理??除非您有?趣?行??研究。

?在?我???不要修改 named.conf ?定???退出它?然後?到 /var/named 目??看看?面有些什????最起??您?看到如下三??案?



named.ca

localhost.zone

named.local

不知道您是否有?感了??????在 named.conf ?面?每一? zone 所指定的 file 都出?在???先?我?看看 root zone 的?案?容吧?

; This file holds the inFORMation on root name servers needed to

; initialize cache of Internet domain name servers

; (e.g. reference this file in the "cache . "

; configuration file of BIND domain name servers).

;

; This file is made available by InterNIC registration services

; under anonymous FTP as

; file /domain/named.root

; on server ftp.RS.INTERNIC.NET

; -OR- under Gopher at RS.INTERNIC.NET

; under menu InterNIC Registration Services (NSI)

; submenu InterNIC Registration Archives

; file named.root

;

; last update: Aug 22, 1997

; related version of root zone: 1997082200

;

;

; FORMerly NS.INTERNIC.NET

;

. 3600000 IN NS A.ROOT-SERVERS.NET.

A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4

;

; FORMerly NS1.ISI.EDU

;

. 3600000 NS B.ROOT-SERVERS.NET.

B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107

;

; FORMerly C.PSI.NET

;

. 3600000 NS C.ROOT-SERVERS.NET.

C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12

;

; FORMerly TERP.UMD.EDU

;

. 3600000 NS D.ROOT-SERVERS.NET.

D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90

;

; FORMerly NS.NASA.GOV

;

. 3600000 NS E.ROOT-SERVERS.NET.

E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10

;

; FORMerly NS.ISC.ORG

;

. 3600000 NS F.ROOT-SERVERS.NET.

F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241

;

; FORMerly NS.NIC.DDN.MIL

;

. 3600000 NS G.ROOT-SERVERS.NET.

G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4

;

; FORMerly AOS.ARL.ARMY.MIL

;

. 3600000 NS H.ROOT-SERVERS.NET.

H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53

;

; FORMerly NIC.NORDU.NET

;

. 3600000 NS I.ROOT-SERVERS.NET.

I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17

;

; temporarily housed at NSI (InterNIC)

;

. 3600000 NS J.ROOT-SERVERS.NET.

J.ROOT-SERVERS.NET. 3600000 A 198.41.0.10

;

; housed in LINX, operated by RIPE NCC

;

. 3600000 NS K.ROOT-SERVERS.NET.

K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129

;

; temporarily housed at ISI (IANA)

;

. 3600000 NS L.ROOT-SERVERS.NET.

L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12

;

; housed in Japan, operated by WIDE

;

. 3600000 NS M.ROOT-SERVERS.NET.

M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33

; End of File



在 /var/named 中的 RR ????面的?解符??和 /etc/named.conf 的?解符?不一?哦?在 named.conf 中是用?斜?“ // ”?而在???使用 “ ?”符?。??如何?您都不能用 “ # ”?做?解符?就是了。(好混?哦~~~ ?就是???^_^ )

在上面?? named.ca ?案?面?您如果?所有的?解行拿掉?您???一共有 13 行是以‘ . ’??的?那就是所?的 root zone 了?然後?第二?都是‘ 3600000 ’??是 TTL (Time To Live) ?定?也就是在 cache 中保留的???以秒??位(所以??是 100 小?)。其後的‘ NS ’是“Name Server”的意思?是 DNS ??名?之一?也就是??????的 name server 是哪一台主?(??一共由 13 台主?共同?? root zone 的 NS 服?)。

?然我???用 NS 指定了 name server 的主?名??但???系?????些名?必?能解?? IP 位址才有用(呵~~ ??正是 DNS 系?的功能)?所以???分?用 13 ?‘ A ’???也就是 Address 的意思?解? [A-M].ROOT-SERVER.NET. ?些主?各自的 IP 位址所在。

如果您了解 DNS 的查?模式?您?知道 DNS 伺服器在查?非自己管?的 zone 的?候?首先?向 root 查?下一?的 zone 在哪??然後逐?查?下去。但??是?? named ???的?候?在 cache ?面一片空白?它怎?知道 root zone 的 servers 在哪?呢??不是一?矛盾??所以?就必?靠???案告? named ?於 root zone 的 servers 有哪些?以及在哪?? --- 明白了??

因????是以??的方式??的?很?保????的?容永?都正??如果 root zone 的???生改?了怎??(?然???不大)?或??您已?在?案的???解那?得知?您可以在任何?候透? ftp 或 gopher 取得???案的最新版本。如果您????那些?解?那就??著字典?一下吧。如果您真的有需要更新?? named.ca ??那可以按如下步??行?

ftp ftp.RS.INTERNIC.NET

anonymous

your_account@your.mail.server

cd domain

get named.root

bye

cp /var/named/named.ca /var/named/named.ca.bak

cat named.root > /var/named/named.ca



除了?才的 named.ca 之外?第二? zone 的???是 localhost.zone ?? named.conf 中您??知道它是 zone "localhost" 的????它的?容如下?

$TTL 86400

$ORIGIN localhost.

@1D IN SOA @ root (

42 ; serial (d. adams)

3H ; refresh

15M ; retry

1W ; expiry

1D ) ; minimum

1D IN NS @

1D IN A 127.0.0.1



?容很???但您是否真的了解每一行的?定意思呢?如果不清楚或不?定?那就?我?一起探?探?吧。

首先?第一行是一? TTL ?定?目前是定?出??????面的各???的?? TTL 值? 86400 秒(?好是一天)。您的???或??有?行?事?上?什????您可以自己?上?否??在?? named 的?候?碰到一些警告???大雅的?但如果您的?在意那些警告?那就加上?行。您要知道?在???中宣告的所有?源??(RR - Resource Record)?都一定有一? TTL ?定?如果?有??使用????的值。

第二行是一? ORIGIN ?定??明下面的??源出何?(??是源出 localhost. 的??)。?您加倍留意最後的一?小??“ .”?少了它或多了它???名?完全不一??在 DNS ??中?我????以小???尾的名??“ 全域名? ”即 FQDN ( Fully Qualified Domain Name ) 。如果缺少了????怎?呢?就??所?的 ORIGIN ( @ ) 附加在??名?後面?而? ORIGIN 就是上一? $ORIGIN 宣告之後的名??如果在前面找不到 $ORIGIN 宣告?那就以 /etc/named.conf 中定?的 zone 名??基?。以目前的例子???如果?有??小??的??“localhost”??成“localhost.localhost”?但如果有小??的?“localhost.”就只能是“localhost.”。所以???小?“.”非常重要?在以後?定中一定要非常留神??(?也初?者最常犯的??之一)

然後?第三行?是一? SOA ??的?定?在??我?看到一?特殊字符“ @ ”?它就是 ORIGIN 的意思?也就是??所定?的 $ORIGIN localhost. ?容?您可以?成 localhost. 也可以用 @ ?代替。假如???前面?有定? $ORIGIN 的??那?? @ 的值就以 named.conf ?的 zone ??。既然????然是使用“@”啦?尤其?於像我??的?惰鬼???巴不得少打一串字?同??能避免因打字不?所造成的失??何?不??

在 @ 之後?是 TTL 的?定???是 1D?也就是一天的意思?如果您喜??可以用 86400 (秒) ??定?如果??的 TTL ?有?定???考前面的 $TTL 值?如果前面?有定? $TTL?那就?考其後介?的 minium ttl ?定。



Tips?事?上?您可以?每一? RR ???定其自己的 TTL ?只要??字?在第二??位?也就是‘IN’前面就可以了。

在 TTL 之後是一? IN?定?出目前的???型是?於 internet class 的 (奇怪?目前的 DNS ?有其它 class ??)。

在 IN 之後就是?行 RR 的????名????是 SOA ?也就是“Start Of Authority”的意思?表示目前?域的授????始。每一????只能有一? SOA ?不得重??而且必?是所??的 zone 中第一?“??”。

?接 SOA 後面?指定了???域的授?主?和管理者的信箱???分?是“ @ ”和“ root ”?也就是 localhost. 主?和 root 信箱。??要注意的是?SOA 的主?名?必?能?在 DNS 系?中找到一? A ?? (以後?提到)?另外?我?平?使用的信箱通常是“user@host”??的格式?但因?“@”在 DNS ??中是?保留字符(?才已?提?)?所以在 SOA 中就用“.”?代替了“ @ ”。目前??信箱是 root (??有主?位址)?也就是本??您可以?成 “root.localhost.”但不能?成“root@localhost.”。

接下?的 SOA ?定?是被括在“( )”之?的 5 ??字?主要作?和 slave 伺服器同步 DNS ?料所使用的???



Serial?其格式通常?是“年月日 修改次序”(但也不一定如此?您自己能??得就行)。? slave 要?行?料同步的?候??比?????。如果??在??的??比它那?的?值“大”?就?行更新?否?忽略。不?? serial 有一?地方您要留意?不能超? 10 位?字?

Refresh???是是告? slave 要隔多久要?行?料同步(是否同步要看 Serial 的比??果)。

Retry?如果 slave 在?行更新失?後?要隔多久再?行重?。

Expire??是??逾期???? slave 一直未能成功? master 取得???那到??就放? retry?同???的?料也?????期( expired )。

Minimum??是最小?? TTL 值?如果您在前面?有用“$TTL”?定??就?以此值?准。

以上的?字都是以秒??位?但您也可以用 H(小?)?D(天)?W(星期)?做?位?如?3H 和 259200 是一?的。但要值得一提的是?我在 RH6.2 版本中曾???使用 netconf ?工具??定 DNS ???只能使用“秒”??定。否? netconf ?自?的把英文字母?除掉?那就不是我所?期的?定值了。??您用什??位??定?都要遵守下面的???

expire >= refresh retry

expire >= 10 * retry



Tips??注意?SOA ??中?? “ ( ) ”符?之第一? “ (”括?一定要和 SOA ?在同一行?而不能用 Enter ?行到下一行去(有?候您在?本的?例中看到??符?排在下一行去了?那是因?版面的??而已)?而且其左?最好有一?空白?或 tab 建。而最後一? “ )”括?也不能?在?解符? “ ?”的右?。

?定 DNS 的 RR ????其格式要求非常?格?我??毫不能掉以?心。比方??如果句子不是以空白??Tab ?? 或?解符? ( ; )???也不在 SOA 的 “ ( ) ”之?? ?表示要定?一?“新??? (Entry) ”?如果句子是以空白?或 tab ??始的??其?定被??上一?“???”的?容。所以?如果您要?“同一????”定?多????定?而不想重?打字?您倒可以偷??在接著它的後面?行用空白或 Tab ??排就可以了。所以?最後??行?是?於 localhost. 的?定?因?上一?“?料?”? “ @ ”?也就是 localhost. 。?然?您如不喜????行句子也可以????

;; 修改前?

1D IN NS @

1D IN A 127.0.0.1

;; 修改後?

@1D IN NS @

@1D IN A 127.0.0.1

;; 或?

localhost.1D IN NS localhost.

localhost.1D IN A 127.0.0.1



??行的意思是???? localhost. ????的 name server ( NS ) 是 localhost. ?台?器?而 localhost. 的 IP Address ( A ) 是 127.0.0.1 。DNS ?面的 A ????是最常?的???型之一?如果在 IPv6 版本中?位址??名??改? AAAA 。



Tips??於更多的??名?????“???路”中的“DNS ?定”。

最後??我??查剩下的 named.local ?案吧。如果您??忘? /etc/named.conf 的?容的???知道???案是 zone "0.0.127.in-addr.arpa" 的‘反解’????它的?容也很???

$TTL 86400

@ IN SOA localhost. root.localhost. (

1997022700 ; Serial

28800 ; Refresh

14400 ; Retry

3600000 ; Expire

86400 ) ; Minimum

IN NS localhost.

1 IN PTR localhost.



前面的部份??不用多解?了(如果您?不清楚?那就必?重?前面的文章)。最後一行我?看到一?“ PTR ”???它是“Pointer”的意思。 PTR 通常用於反???中?? IP 指向主?名?(?好和 A ??相反)。您或??不是很清楚??句子?什?是???定的吧?或?您?????您不是? PTR 是? IP 反查?主?名?的???什???是 1 而不是 127.0.0.1 ?

哦?如果您有??的???那?明您? DNS 的查?模式?不是了解得很透??不?也不用???在後面的?作例子中?您??得更?一步的感性??。???我????解?上面?行就是了?

我?知道 127.0.0.1 所??的主?名?就是 localhost ?因???是反向查??所以 IP ?序是掉???的?於是??反查? IP 就是?“ 1.0.0.127.in-addr.arpa. ”?由於我???的 ORIGIN ( @ ) 是“ 0.0.127.in-addr.arpa." ”?因?在???中?如果名?不?小????被?上 $ORIGIN 或 zone 的名??所以?? “ 1 ”就成了 1.0.0.127.in-addr.arpa. ”。同?道理?後面的“ localhost. ”如果漏了最後的小?的????成?“ localhost.0.0.127.in-addr.arpa. ”???然是不?的。假如您喜??可以??行句子修改成?下面的?子?

??修改前?

1 IN PTR localhost.

??修改後?

1.0.0.127.in-addr.arpa. IN PTR localhost.



嗯~~ DNS 的?定看起?真的???筋的?或?您到??已?被搞得?七八糟了。假如真的如此?我建?您先休息一下?然後回?重?上面的?容?直到您能理解之後?才??下面的。否??越往後?您的??越像?雪球那?越?越大??更浪???啦~~~ Okay? Take it easy ...

前面所看到的?定?事?上已?足??您的 DNS 主?跑起?了?因?它能?透? root 查?其他 DNS 的?故?您??在再加?任何?定?您就可以利用?台主??大家提供 Internet 的 DNS 查?服?。只是???的 DNS 主??我??之? cache only name server 而已。如果您了解 DNS 的查?流程?您??知道 DNS 的 cache 作用和它的效益。所以?就算您不打算?定自己的 domain name 服? ?我也建?您至少可以? cache only NS 跑起?。

?定 NAMED

?您? /etc/named.conf ?案和 /var/named 目?的?定有初步了解之後?下面??我?用一???例子?看看如何?定自己的 domain name 服?吧。我?人的??是先??域和主?的?料整理出???列成一?表格?

Domain 名? IP 位址

rh71.siyongc.domain 192.168.100.23

acer.siyongc.domain 192.168.100.20

mdk.siyongc.domain 192.168.100.24

emilie.siyongc.domain 192.168.100.11

rh71.dmz.domain 10.0.1.131

lp64.dmz.domain 10.0.1.130



?所有的主?名?和 IP 整理出?之後?再看看我???需要?定哪些 domain ? ?上面的?料中?我?不???有??正解 zone 和??反解 zone 需要?定?分?是?

?域名? ???名?

siyongc.domain emilie?acer?rh71?mdk

dmz.domain lp64?rh71

100.168.192.in-addr.arpa 11?20?23?24

1.0.10.in-addr.arpa 130?131



因??些 IP 和 domain 都在?部?路使用?所以我?省?了?????同?也不必?心授?的??。但?些??也只能在?部?路使用???如何是不能?定在?外的 DNS 上面的 (?什??除了安全的考量之外?private IP 的使用本?就有??的?定?就算您真的?外散??些 DNS ???在 IP 的路由上?是有???所以??部的???只能?部使用)。

一般???我?先?定“反查??域(revers zone)”??然??是?人??而已。所以?我首先在 /etc/named.conf 上面?上??反解 zone 的?定?



zone "100.168.192.in-addr.arpa" IN {// 定?反解?域名?

type master;// 定?伺服器?型

file "192.168.100.rev";// 指定???名?

};// ?束?域?定

zone "1.0.10.in-addr.arpa" IN {

type master;

file "10.0.1.rev";

};

注意哦?如果您要?定外部 DNS 的反解?那就先?得 ISP 的授?才能自己?定?否?反解部份就不用自己?心了?但一定要? ISP ?忙。



Tips?假如您是 hinet 的固定制 ADSL 用??可以到 hinet 的?站填?表格??他??忙?定反解?



http://hidomain.hinet.net/rever.html

其它 ISP 的用???自行接洽 ISP 的客服部?。??如何?如果?有取得授??那就不要自己??



???我?再一次碰到反解?域的?????“ .in-addr.arpa ”?同??我?解?一下上次?於本?反解???明的地方?如果您了解 DNS 的授?和查??程(?章一?始的?候?我就已要求您一定要??的)?您?知道反解查?是先? root ?始(正解也是一?)?然後到 arpa ?到 in-addr ?到第一? IP ?到第二? IP ?...... ??查?下?的。所以?在?定反?域的?候?您一定要?您的 net ID 部份反????例如?我的?路? 192.168.100.0/24?它的反查??域名?是?“100.168.192.in-addr.arpa”?假如我? netmask 改? 16 bit ?即?成 192.168.0.0/16?它的反解?域名就??成?“168.192.in-addr.arpa”。如果您?搞不懂如何?分 Net ID 和 Host ID??立即去看一看“???路”中的“IP 基?”。

同??我??些 zone 都?定?“主 DNS 伺服器”(即?master?也有人?之? primary dns )。

在每? zone 的最後部份?我分?指定了它?各自的???名?。它?都存放在 /var/named ??目?下面(也就是前面 options 指定的 directory 啦)。?案的名??您喜??不致做成混??可。

完成上面的?定之後?我?就可以到 /var/named 目?去建立相?的???案了。??在?在 named.conf ?面如何定??案名??一定的???只要您能正?指定哪?????哪? zone 使用?而且?案名?能?一致就行。首先?根?第一? zone 的 file ?定?我要建立一? /var/named/192.168.100.rev ?案?其?容如下?

$TTL 86400

@ IN SOA rh71.siyongc.domain. root.rh71.siyongc.domain. (

2001111601 ; Serial

28800 ; Refresh

14400 ; Retry

3600000 ; Expire

86400 ) ; Minimum

@ IN NS rh71.siyongc.domain.

@ IN NS lp64.dmz.domain.

11 IN PTR emilie.siyongc.domain.

20 IN PTR acer.siyongc.domain.

23 IN PTR rh71.siyongc.domain.

24 IN PTR mdk.siyongc.domain.



而另外一?反解?定?是 /var/named/10.0.1.rev ?我?依??葫?就行了?

$TTL 86400

@ IN SOA rh71.siyongc.domain. root.rh71.siyongc.domain. (

2001111601 ; Serial

28800 ; Refresh

14400 ; Retry

3600000 ; Expire

86400 ) ; Minimum

@ IN NS rh71.siyongc.domain.

@ IN NS lp64.dmz.domain.

130 IN PTR lp64.dmz.domain.

131 IN PTR rh71.dmz.domain.



就???反解 DNS 就?定完成了?是否很??呢?如果您回答“ Yes ”的??那就?我???正解?域的?定吧。同?的?先在 /etc/named.conf ?面加上?? zone?

zone "siyongc.domain" IN {

type master;

file "siyongc.domain";

};

zone "dmz.domain" IN {

type master;

file "dmz.domain";

};



完成後?再建立 /var/named/siyongc.domain ???案?

$TTL 86400

$ORIGIN siyongc.domain.

@ IN SOA rh71.siyongc.domain. root.rh71.siyongc.domain. (

2001111601 28800 14400 3600000 86400 )

IN NS rh71.siyongc.domain.

IN NS lp64.dmz.domain.

IN MX 10 rh71.siyongc.domain.

IN MX 20 lp64.dmz.domain.

;; -- default address

@ IN A 192.168.100.23

;; -- linux servers --

rh71 IN A 192.168.100.23

IN MX 0 rh71.siyongc.domain.

IN MX 10 lp64.dmz.domain.

IN HINFO "Petium II 266""Redhat 7.1"

IN TXT "The internet gateway."

mdk IN A 192.168.100.24

IN MX 0 mdk.siyongc.domain.

IN MX 10 rh71.siyongc.domain.

IN HINFO "Petium II 266 dell""Mandrak 8.0"

;; -- Windows desktops --

acer IN A 192.168.100.20

IN MX 0 mdk.siyongc.domain.

IN HINFO "Petium III 800 acer""Windows ME"

emilie IN A 192.168.100.11

IN MX 0 mdk.siyongc.domain.

IN HINFO "Petium II 300""Windows 98"

;; -- cnames --

gw IN CNAME rh71

www IN CNAME rh71

ftp IN CNAME rh71

mail IN CNAME rh71



???我?在正解????面看到??新的?????或?需要?一步?解一下的?

因?我???域的??分?由?台主????所以我??指定了?? NS ??。???如果您?定上一? ORIGIN 是正?的??那也可以偷??正如我上面解???如果名?後面不是以“.”?尾的??它所?的 ORIGIN ( @ ) 就?自?的加在???名?後面?所以?您可以只?“ rh71 ”而不?小???尾?就??成“rh71.siyongc.domain.”了???名???就是我所要的。不??我建?您在?定 NS 的?候?是?量使用 FQDN ?好。

接下?的 ‘ MX ’ ??恐怕要花些??解析?



MX ??

MX 是‘Mail eXchange’的意思?它指定了??????(可以? domain 也可以是 host )的?件伺服器名?(最好使用 FQDN )?而且?名?必?是一? A ??(不建?使用 CNAME )。

在?件系?中?只要?件伺服器?方都知道?方的 IP 就可以?行?件交?了。我?用 /etc/hosts 也可以做到名?查?的目的?但正如我?可以想像的?ineternet 有那?多?件伺服器?我?不可能一一?它?建立好 IP ??。就算?我?可以??做?如果?方要更??件伺服器呢?要????一???殊非易事。既然?我?可以用 DNS ?查?主?和 IP??什?不使用??便利的系?呢??也是 DNS 系?的?用原因啊~~~ 但??是?各?域的?件伺服器名?都不一??我?不可能知道?方的?件伺服器主?名?是什??就算知道?如果?方以後更?名?呢?

您看?即使我?使用了 DNS 系???行?件路由?也不是????的事情。但是?使用 MX ??就大大??了 DNS 系?的功能了?我?只要?每一??域建立起 MX ???利用 DNS 查?得到的?件伺服器名?(?件路由查?中?DNS 只是其中一?方法)??????件伺服器要和?方的?域?行?件??的?候?就可以通? MX ??得到?方的?件伺服器名??而不需?先知道要和哪台?件主??通。在日後?就算?方更?名??? DNS ??改改就可以?完全?需知?其它?件主??而外面的?件伺服器也根本?需?知到??改?。

??的????疑是非常?活便利的?另外?使用 MX ?有一?功能?您可以用多? MX 同?指定好?台?件伺服器名???而提供?援或平行?理服?。在我??例子中?我就分??‘siyongc.domain’???域指定了?? MX ???‘rh71.siyongc.domain.’和‘lp64.dmz.domain.’。但您有?有??它?前面都有一??字呢???字有什?作用啊?

?得好??外面的?件伺服器通? DNS 查?到我?的?件伺服器?如果??超?一台主????件交?的???值越低的就越先被查?。但有?候?主??有回?呢?那?就由下一??值的主???了。??有一?好?就是?就算第一台?件伺服器出?故障?也不至於?致?件交?功能??掉。我?通常??各自的 MX 主??量分?在不同的位置上(例如?的城市或?家的分公司主?)?假如?一?生???甚至 ISP 的???我??能??件?往下一台 MX 主?。然而?在??上?由於??和 client 端的?定因素?我?的?件?非真的完全?到下一? MX 主?接收?而是先??件???列( queue ) 在那台?器上??原?的 MX 主?恢???之後??件?自?的??列主?那?送回????就能避免?件?失或被退信。



Tips??然?我?通常喜?用‘10’?‘20’?‘30’.... ??的偏好值( preference ) ?分配 MX ???但只要您喜??用‘1’?‘2’?‘3’... ??的?序一?可以。不??我建?您?是使用?例啦。

?在很多大型?件系??都可以同?使用多台?件主??提供?件交?服????候您可以? MX 的 preference ??相同?然後利用 NIS 和 NFS 服????件同步到相同的??去。您已?在前面的章??面??了 NIS 和 NFS?等日後???件主?架?的?候?不妨玩玩看?



或??您???我???所有主?指定了 MX ???有些直接指向自己(如 rh71?mdk 等)?而有些?指向?的?器(如 lp64?acer 等)。在 Linux ?器上面?各主?本身就具??件交?功能(除非您?之移除了)?而 Windows ?除非?外加??否?本身是?有?件交?功能的。??的?定是??外面通? DNS 查?而寄往那些主?的?件?都??到 MX 上面指定的?件伺服器。?在??的?路?境中很常??尤其您接??“ mail hub ”??概念。??如何?我建?您????? domain 的?件伺服器本身?定一?偏好值最低的 MX ??指向自己(但?不是硬性必?如此的)。



Tips?事?上?我?初? MX 的理解一直存在著???直到有一次在新??上和大家???才?正??。如果您???故事感?趣的??或是想更?一步了解 MX 的???作原理???考 << Sendmail ? MX >> 一文。

在?去?有些人?不知道如何正?的?用 MX ???但相?的?他??? domain 名?本身?定一? A ?? (@ IN A 192.168.100.23 )。??的做法?然不是正?的?但也行之有年了。而且?在?多?站的 URL 上???的?定?也能?您少?入“ www. ”?四??~~~



另外?在????面?您或????‘ TXT ’??的?????它是‘Text InFORMation’的意思?它??上不?涉任何?定?只??一些?境?明而已??和‘ HINFO(Host InFORMation) ’差不多?但 HINFO 一定要有????(分?用引?分?)?其中第一?是?於 CPU 的?息?第二??是作?系?。然而?TXT 和 HINFO ?些???能在一?信任的?境中提供?如果您架?的 DNS 是?外提供服?的?那??就不要?定?些??了。要不然?入侵者可非常感?您哦?因?您?他?省?了很多主?系?的探?手?~~~ 所以????做?例?供您?考而已。

而最後您所看到的‘CNAME’??又是怎?的呢?CNAME 也是一?常?的?????它是一??名??( Canonical Name )。? DNS 系?在查? CNAME 左面的名?的?候?都??向 CNAME 右面的名?再?行查??一直追?到最後的 PTR 或 A 名??成功查?後才?做出回??否?失?。例如?在正解查?中?一? IP 通常(?然也有例外)?只???一? A ???但我?可以使用 CNAME 在 A 名?之上?予? IP 更多的名?。也就是??所有?於‘www.siyongc.domain’?‘ftp.siyongc.domain’?‘mail.siyongc.domain’?些名?的查????上都?再查?一次‘rh71.siyongc.domain.’?????直到找到它的 IP 位址?止。有些朋友或???定多?的 CNAME 查??例如?



C CNAME B

B CNAME A

??的???一?一?的逐? CNAME 下去... 但是??很浪? DNS ?源?因?每一? CNAME 都一定??生另外一?查??作?如果??越多?那就?生越多的重?查?。所以?精明的 DNS 管理??都??量的?少查?次?的?生?他?? CNAME ?成??子?



C CNAME A

B CNAME A

??就用心多了?

基本上?我?在正解?定上所使用到的??大概就前面所看到的。哦??了~~ ?有另外一? /var/named/dmz.domain ?案也不要忘?了?

$TTL 86400

$ORIGIN dmz.domain.

@ IN SOA rh71.siyongc.domain. root.rh71.siyongc.domain. (

2001111601 28800 14400 3600000 86400 )

IN NS rh71.siyongc.domain.

IN NS lp64.dmz.domain.

IN MX 10 rh71.dmz.domain.

;; -- linux servers --

rh71 IN A 10.0.1.131

IN MX 0 rh71.dmz.domain.

IN HINFO "Petium II 266""Redhat 7.1"

IN TXT "The internet gateway."

lp64 IN A 10.0.1.130

IN MX 0 rh71.dmz.domain.

IN HINFO "Pentium 90""Linpus 6.4"

;; -- cnames --

gw IN CNAME lp64

www IN CNAME lp64

ftp IN CNAME lp64

mail IN CNAME lp64



您看?就???我?的 DNS 就已??定好了?包括反解和正解哦~~~

重新?? named

?您以?所有?定?都?定好之後?最想做的事情莫?於要??一下啦。但在??之前?我??要重新?? named ?否??您查?出?的?是??料。?明的您或?已?知道使用如下命令?重新??DNS 服?了吧?

service named restart



然而?作?一?有??的 DNS 管理??在重新?? named 服?之後?他一定??查一??案?就是 /var/log/messages 。因???多?候??您?行 service named restart 之後您看到的都是?色的 OK ?但事?上是否真的 OK 呢??也不敢保??除非您在 log ?中?????信息。所以?我也?烈建?您每次重新?? named 之後?一定一定要做如下?作?

vi /var/log/messages



然後按“G”?(大?)跳到?案末尾部份(事?上?您也可以用 tail 命令)。您或??看到如下??的???

Nov 16 14:54:10 rh71 named[2211]: starting BIND 9.1.0 -u named

Nov 16 14:54:10 rh71 named[2211]: using 1 CPU

Nov 16 14:54:10 rh71 named: named startup succeeded

Nov 16 14:54:10 rh71 named[2215]: loading configuration from '/etc/named.conf'

Nov 16 14:54:10 rh71 named[2215]: the default for the 'auth-nxdomain' option is now 'no'

Nov 16 14:54:10 rh71 named[2215]: no IPv6 interfaces found

Nov 16 14:54:10 rh71 named[2215]: listening on IPv4 interface lo, 127.0.0.1#53

Nov 16 14:54:10 rh71 named[2215]: listening on IPv4 interface eth0, 192.168.100.23#53

Nov 16 14:54:10 rh71 named[2215]: listening on IPv4 interface eth1, 10.0.1.1#53

Nov 16 14:54:10 rh71 named[2215]: listening on IPv4 interface eth2, 10.0.1.131#53

Nov 16 14:54:10 rh71 named[2215]: listening on IPv4 interface vmnet1, 172.16.233.1#53

Nov 16 14:54:10 rh71 named[2215]: listening on IPv4 interface vmnet8, 192.168.183.1#53

Nov 16 14:54:10 rh71 named[2215]: listening on IPv4 interface ppp0, 211.74.244.213#53

Nov 16 14:54:10 rh71 named[2215]: running



上面?然有 'auth-nxdomain' 和 IPV6 的提示?但那是正常的(除非您有?定相?的功能)。如果?有其它??信息的??那真要恭喜您了?

但有?候您或??看到有其他??信息的?例如?

Nov 16 15:01:49 rh71 named[2287]: loading configuration from '/etc/named.conf'

Nov 16 15:01:49 rh71 named[2287]: /etc/named.conf:41: parse error near zone

Nov 16 15:01:49 rh71 named[2287]: loading configuration: failure

Nov 16 15:01:49 rh71 named[2287]: exiting (due to fatal error)



????信息明?指出了是 /etc/named.conf 的???而且很可能在 41 行附近。根?我?人的????通常是您漏了 “ ?”符?的原因而已。

如果您碰到如下信息?那是?有?所有 RR ????定 TTL 而已?您可以?每一?????上 TTL (在 IN 前面)?也可以在???的前面用 $TTL ??定?

Nov 16 15:04:47 rh71 named[2395]: master.c:1172: unexpected error:

Nov 16 15:04:47 rh71 named[2395]: dns_master_load: siyongc:3: no TTL specified.

THIS ZONE WILL NO LONGER WORK IN FUTURE VERSIONS. Add a TTL.

Nov 16 15:04:47 rh71 named[2395]: dns_master_load: siyongc:5: using

RFC 1035 TTL semantics



如果您碰到下面??的信息?那多是因?您打字??的????入了 named 不??的????名?(例如漏了??名?或打?了)?

Nov 16 15:07:44 rh71 named[2422]: dns_master_load: siyongc:2: unknown RR

type 'siyongc.domain.'

Nov 16 15:07:44 rh71 named[2422]: dns_zone_load: zone siyongc.domain/IN: loading

master file siyongc: unknown class/type



如下的???那可能是您?有定? SOA ???或?定有???

Nov 16 15:14:33 rh71 named[2506]: dns_zone_load: zone siyongc.domain/IN: could

not find NS and/or SOA records

Nov 16 15:14:33 rh71 named[2506]: dns_zone_load: zone siyongc.domain/IN: has

0 SOA records

Nov 16 15:14:33 rh71 named[2506]: dns_zone_load: zone siyongc.domain/IN: no

NS records



下面的??可能是您的 SOA ??中多?入了一??字?或少?入了一??字?或?字格式有???

Nov 16 15:14:33 rh71 named[2506]: dns_zone_load: zone siyongc.domain/IN: could not

find NS and/or SOA records

Nov 16 15:14:33 rh71 named[2506]: dns_zone_load: zone siyongc.domain/IN: has

0 SOA records

Nov 16 15:14:33 rh71 named[2506]: dns_zone_load: zone siyongc.domain/IN: no

NS records



Nov 16 15:18:24 rh71 named[2562]: dns_rdata_fromtext: siyongc:4: near eol: unexpected

end of input

Nov 16 15:18:24 rh71 named[2562]: dns_zone_load: zone siyongc.domain/IN: loading

master file siyongc: unexpected end of input

Nov 16 15:19:34 rh71 named[2640]: dns_rdata_fromtext:

siyongc:4: near '14B400':

syntax error

Nov 16 15:19:34 rh71 named[2640]: dns_zone_load: zone

siyongc.domain/IN: loading

master file siyongc: syntax error



以下??可能是 SOA 的 “ ( ) ”符?有???要?是“ ( ” ??到下一行了?要?是“ ) ”??解掉了?

Nov 16 15:22:08 rh71 named[2669]: dns_rdata_fromtext: siyongc:3: near eol: unexpected

end of input

Nov 16 15:22:08 rh71 named[2669]: dns_zone_load: zone siyongc.domain/IN: loading

master file siyongc: unexpected end of input

Nov 16 15:22:52 rh71 named[2696]: dns_rdata_fromtext: siyongc:4:

near 'IN': extra input text

Nov 16 15:22:52 rh71 named[2696]: dns_zone_load: zone siyongc.domain/IN:

loading master file siyongc: extra input text



以下是您?有?定 NS ??或 NS ???定有???

Nov 16 15:25:30 rh71 named[2801]: dns_zone_load: zone siyongc.domain/IN: no NS records



下面的??可能是您?定了一????超出了?前 ORIGIN 的???例如 localhost. 或 siyongc. (也就是??使用 FQDN )?或是??的使用了 $ORIGIN ?定?或是在 named.conf 中有多? zone 在分享同一份????

Nov 16 15:31:20 rh71 named[2920]: dns_master_load: siyongc:16:

ignoring out-of-zone data



下面的???有可能您在?定多? $ORIGIN ?同????定多? SOA ?出?的???

Nov 16 15:28:31 rh71 named[2855]: dns_master_load: siyongc:26:

not at top of zone



?多?多???事?上您都可以在 /var/log/messages 中找到??您???些??信息之後?看看是?於什???的?然後?藤摸瓜?留心一下?案?容?就比?容易找到??的原因了。

有?候?您想?化您的 DNS ?定工作?您可以使用 netconf ?做。不??根?我的??是?netconf 未必能?完全?您正?的?定起?。?您重新?? named 之後??忘了看一下 /var/log/messages ??定?有???生。如果您使用工具??定 DNS 而碰到????就需要您有手工?定的能力了。



?定 DNS Client

DNS 系?是一?典型的 Client/Server 架??前面介?的?作?是?保 DNS 的 server 成功??起?而已?如果您要??它??必??定好 client 端才行。

不知道您?不??定 linux 的 dns client 呢?如果忘?了要打屁屁了哦~~~ 事?上我?在第一章的“?路?定”那?就?定?了?也就是修改 /etc/resolv.conf ???案??您??定好的 DNS 主? IP 放在?案的前排位置?如?

nameserver192.168.100.23

nameserver168.95.1.1

nameserver139.175.10.20

domainsiyongc.domain

searchsiyongc.domain dmz.domain test.com



假如您的 client 和 server 在同一台?器上?那可以?第一? name server ?定? 0.0.0.0 或 127.0.0.1 。

要是您使用 Windows ?但不是透? DHCP ?指定 DNS 的??那您或?需要手工?定了?控制台 --> ?路 --> TCP/IP (-> ?路卡) --> ?容 --> DNS ?? ?



?注意?如果您修改了??的?定?就算您的 Windows 是透? DHCP 取得 IP ?定的??也?以??的?定??。如果您想使用 DHCP 的?定?那就??“?? DNS”吧。



?? DNS

要??我?的?定是否生效?我?可以使用的方法有很多?其中最??的莫?於 ping 命令了。直接 ping 一下您所?期的 dns 名?就知道?果了。

不??ping ?竟很有限?例如?您不能查? MX 和 NS 等??。?作上?我?最最常使用的 DNS 查?工具是 nslookup 命令。?於 nslookup ?在“???路”的“DNS ?定”文章中有很??的例子???不再重?。如果我?在??中失??例如 nslookup 回???

*** rh71.siyongc.domain can't find XXX.XXXX.XXXX:

Non-existent host/domain



?通常是反解????定好的?故???定 DNS 主?本身的反解有?定起??而且可以被 DNS 追查得到。如果反解?有授?下??那就?上游 ISP ?忙?定。不??我??????信息似乎在新版的 nslookup 中不?出??anyway ??您自己留意吧。

有?候 nslookup ?停在某?一?也不??其?它不是?掉了?而是在查???果之後等 time out 而已。您可以按 Ctrl C ?止查??再打 exit 跳出?。不??如果您在按了 Ctrl C 之後接著再?入一???果的查??那就好可能? nslookup ?掉。??您可能要登??另外一? terminal ?然後用 kill ? PID ?掉。同上?新版的 nslookup ?有??困??但如果按 Ctrl C 的????直接跳? nslookup 程式。

然而?nslookup 似乎在以後的版本中不再??了?取而代之的?就是 dig 命令?所以??您在 Redhat 7.1 上?入 nslookup?您?看到如下??的信息?

Note: nslookup is deprecated and may be removed from future releases.

Consider using the `dig' or `host' programs instead. Run nslookup with

the `-sil[ent]' option to prevent this message from appearing.



?段文字不用解?了吧?真的不知道?什?就查字典吧~~ ???我?不妨??一下如何用 dig ?查?和?? DNS 服?。

基本上?dig 命令的?法如下?



dig [@server] domain [<query-type>] [<query-class>] [ <query-option>]

[-<dig-option>] [%comment]

看起????的?恐怕要 man dig 才知道怎?使用。不??我?平?只用它?查? dns ?料的??要使用到的??也不?太多啦?如果您?得在 nslookup 中?定 type=XXX 的??那您也可以用 dig ?查?不同的?????料。例如?

# dig siyongc.domain mx

; <<>> DiG 9.1.0 <<>> siyongc.domain mx

;; global options: printcmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8198

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:

;siyongc.domain. IN MX

;; ANSWER SECTION:

siyongc.domain. 86400 IN MX 20 lp64.dmz.domain.

siyongc.domain. 86400 IN MX 10 rh71.siyongc.domain.

;; AUTHORITY SECTION:

siyongc.domain. 86400 IN NS lp64.dmz.domain.

siyongc.domain. 86400 IN NS rh71.siyongc.domain.

;; ADDITIONAL SECTION:

rh71.siyongc.domain. 86400 IN A 192.168.100.23

lp64.dmz.domain. 86400 IN A 10.0.1.130

;; Query time: 8 msec

;; SERVER: 192.168.100.23#53(192.168.100.23)

;; WHEN: Fri Nov 16 21:13:18 2001

;; MSG SIZE rcvd: 138



上面是的命令是使用??的 name server ?查? siyongc.domain 的 mx ??。?然?您也可以用 @ ?指定用某一台 name server ?查?其它的??。例如?我要用 hinet 的 dns ?查??? com.tw 的 NS 有哪些?

# dig @168.95.1.1 com.tw ns

; <<>> DiG 9.1.0 <<>> @168.95.1.1 com.tw ns

;; global options: printcmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33339

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 4

;; QUESTION SECTION:

;com.tw. IN NS

;; ANSWER SECTION:

com.tw. 518400 IN NS b.twnic.net.tw.

com.tw. 518400 IN NS c.twnic.net.tw.

com.tw. 518400 IN NS a.twnic.net.tw.

;; ADDITIONAL SECTION:

b.twnic.net.tw. 159497 IN A 192.72.81.200

c.twnic.net.tw. 159497 IN A 168.95.192.10

a.twnic.net.tw. 159497 IN A 163.28.1.2

a.twnic.net.tw. 159497 IN A 140.111.1.2

;; Query time: 167 msec

;; SERVER: 168.95.1.1#53(168.95.1.1)

;; WHEN: Fri Nov 16 21:17:46 2001

;; MSG SIZE rcvd: 146

除了用 nslookup 和 dig 之外?如果您只想??的查? dns ??的??那您可以用 host 命令。例如?

# host -t any siyongc.domain 0.0.0.0

Using domain server:

Name: 0.0.0.0

Address: 0.0.0.0#53

Aliases:

siyongc.domain. SOA rh71.siyongc.domain. root.rh71.siyongc.domain. 2001111601 28

800 14400 3600000 86400

siyongc.domain. name server lp64.dmz.domain.

siyongc.domain. name server rh71.siyongc.domain.

siyongc.domain. mail is handled by 10 rh71.siyongc.domain.

siyongc.domain. mail is handled by 20 lp64.dmz.domain.

siyongc.domain. has address 192.168.100.23



上面的命令就是用本? name server ?查? siyongc.domain 的 any ??。至於 host 命令的格式如下?



host [-aCdlnrTwv] [-c class] [-N ndots] [-R number] [-t type] [-W wait]

name [server]

老?啦?看 man host 以了解那些??和??的用法吧。

您可以???透? nslookup ? dig ?? host 命令?事?上可以查?到?多 dns 上面的?定??。所以?如果您的 DNS 是?外提供服?的????量?量控制 DNS ??量?如果您?得?必要?外提供的?那就拿掉它。??如何??於?部?路的 DNS ???是??不能?外散?的。如果查?的?果未如您所?期的?您就要?行 debug 工作了。



?? domain

Okay?相信到此?止?您已?能?在?一的 dns 上面?定一?或多? domain 的正解和反解服?了。??候?您或?早已迫不及待想??一??於自己的 domain ?玩玩看吧?

呵呵~~ 有此????正常?尤其?在的 domain ??那?方便和便宜?前?天在‘???地’得知原??在??一? .com 或 .org 的?站?一年都不用 $10 ?美金??在是便宜得令人?以至信~~~ 如果您??方便的??可以?任何一家?路公司代您申? domain (?然需?外的服??)?要不然呢?也可以直接到?路上完成自己的 domain ??。

不??要??自己的 domain 之前?有些?件您?是要??好的?



??被??走的 domain 名字?

? domain 的?有人???人??票人?管理? 之姓名?住址?和???料(皆英文)?

管理? domain 的 ns 主??必?有固定 IP (最少要?台?可??人代管)?

合法有效的信用卡?而且您?意在?路上使用它。

?您?些?件都符?之後?可以??到?路上的著名 domain 服??站?例如?



http://www.netsol.com/

http://www.dotster.com/

http://www.godaddy.com/

http://www.twnic.net/

?然??有很多很多~~~ 而最後一??站是??台?的 domain ??的???您可以到那???所有以 tw ?尾的 domain?除了 twnic 之外?很多 ISP (例如 seednet )也有提供 tw domain 的??服?。

各?站的??手?和表格或?不?相同?但基本上您需要提供的???是大同小?的?我??就不介?如何?行了?只要您身?有字典都???啦~~~ 在您所提供的??中?其中有一?比???筋的?就是 ns 主?要指向哪??(???需要最少?台)

以正?的手????如果您要用一? IP ?作?您的 name server?您必?先要??? IP 在 whois ?料?中??? NS ??才能使用?假如? IP 或是? NS 已????了?您就不能按您的意思???了?但您可以使用它(?然您要?定您能管理那台??主??或是?得?方的管理?同意)。但我??告?您一?秘??第一次?? domain 的?候??便?定都可以?(哦??是我在 dotster 上面的??啦?其它?站是否如此我就不清楚了~~) 然後您在完成??後?用您的???去修改 name server 的 IP 就可以了(?然?您要?定的 IP 必???被????或已?? whois ?料?中??)。

然而?如果您日後要?更您的 NS 和 IP 的??是很麻?的一件事情?而根?我以往的???您最好用 email 和?站的支援人?取得???才能?利完成修改。嗯???工作??上一?也不好玩啦?而且各?站有各自的方法和表格。比方??如果您透? networksolution ??的??日後您要修改 name server?必?填? host FORMs?然後?根?您提供的??方式??之後才能完成?他?的??方式有三??



MAIL FROM?以您所提供的 email 信箱?依??

CRYPT-PW?以您提供的密??依??

PGP?以您的 PGP ?名?依?。

不??在?作流程上非常???比方??如果原本?用 MAIL FROM 方式?但後?您的 email 信箱??更了?那就很麻?了?因??方不能根?您的新 email 信箱?作???依?的。我曾??所服?的公司修改? NS ???到最後?只能以 fax 的方式?解?。

而像 dotster ?站??只能透????行?上修改。?原本很方便?但最不好的地方是?他?不提供??信息?往往?您以?已?修改完??但等了一?星期??生效?去信?他??才知道原?要修改的那? IP ??有??? ns 主??或已???在?的名?下面了。我曾??次?信? doster 的 support 信箱?要求他?在?上修改後要向用?提供????(不管成功?否)?但不知道他??在是否有改善了呢?(如果??改?的???大家多作投??直到他?提供??服??止。)



Tips?如果您在 dotster 或其它?站修改 NS?而不能成功的????追他?的 support 信箱就是了。通常他?都??您搞定的?而且提供的??比??意。例如?如果您要修改的 IP ?????他???您完成??(注意哦?name server 的 host ??和您的 domain ??可是不同的哦~~)。

但我也曾???到 networksolution 上面??一? new host?然後到 dotster 那?修改?也能?利完成?但??後??不知道?在是否?行得通呢?



??在?就算您??了 domain?如果您?有固定 IP 的??最好不要自己管 DNS ???的有固定 IP 的朋友?忙?或是付??人代管就是了。而上面提到的 domain ?站?大都提供??的服?。

另外??有一?概念或?是?多 DNS 新手容易搞混?的?我???所?的 domain ???在整? DNS 系?中???於“正解”方面的??和授?而已??和“反解”的授?毫不相?。而反解的授??因?是跟? IP 授?的?所以必?透?您的 IP ?放???行。?句???反解的授??只能透? ISP ?行。?您一定要?分???授?模式。



?於 Dynamic DNS

如果您??有固定 IP 而又想??人能?透? DNS ?查?主?的??您可以到?路上申?所?的‘?? DNS ’服??大部份都是免?的?而且也有多?平?的 client 程式提供。如果您有?趣?可以找到很多???站?下面只是其中???



http://www.dyndns.org/

http://dns2go.deerfield.com/

http://www.adsldns.org:8080/service.php (中文)

如果您不知道如何申?和安????? DNS 的??您可以?考如下???



Steven ??世界 之“Linux 使用 ADSL (??制) 的??分享”

?哥的 Linux ? ADSL 文件 之 “?? DNS 申? ”

Tips?如果您使用?接式 ADSL (PPPoE) ?在 adsldns.org 上面完成??之後?您只需在 /etc/ppp 目?下面修改一? ip-up.local ?(如果?有?自行建立)?增加如下?容?

#!/bin/bash

CMD="http://www.adsldns.org:8080/clientupdate.php\

?email=XXXXX@XXXXXX&passwd=XXXXX\

&hostname=XXXXXX.adsldns.org&debug=1"

lynx -dump $CMD > /tmp/adslclient.log



(注意??? XXXXX 修改?您的正??料。同??首?行?尾的 \ 符?不要漏了?其左右?空白?要不然?拿掉 \ 符???前面三行?成一行。)

然後?只要您完成 ADSL ?接之後?就能‘自?’的?您修改 IP ??了?



?於?? DNS 的?用?除了上述的?境之外?在 DHCP 分配的?路中?定 DNS 也可以?用得上。但前提?件是?您的 named 必?是 bind 9.x 或以後?以及 dhcpd 必?是 3.x 或以後的版本。然而?RedHat7.1 上面??的 dhcpd 是 2.0p15-4 ??版本?您必?自行升?才能使用??非常棒的功能。

下面?我? dhcp 服??移到 mandrake 8.1 (其??的 dhcpd 版本是 3.0-0.rc12.1)?然後保留 named 在 rh71 上面?再透? ddns 技?更新和?? dhcp 所?放的 DNS ?料。我初步整理出?的步?如下?



在 mdk 上?行如下命令??生 dns 加密??所需的 secret ?

dnssec-keygen -a HMAC-MD5 -b 128 -n HOST DHCP_MDK



???在?前目?下?生??以 Kdhcp_mdk ??的?案?有?趣您可以看看其中的?容。然後您? Kdhdp_mdk*.private 中的最後一行 Key: 後面那串字串??下? (如?4sxutdFuNMqF1B0Q2GV1uQ==)?待?要用到。



然後修改 /etc/dhcpd.conf 的?容??似如下?

ddns-update-style ad-hoc;# ?行一定要加上

subnet 192.168.100.0 netmask 255.255.255.0 {

......# 其中?容略??自行填?

}

key DHCP_MDK {

algorithm HMAC-MD5.SIG-ALG.REG.INT;# 加密演算法名?

secret 4sxutdFuNMqF1B0Q2GV1uQ==;# ?就是上一步??生的 key

}

zone siyongc.domain. {

primary 192.168.100.23;# 指向 name server 所在位址

key DHCP_MDK;# 必?和前面的 key 名?一致

}

zone 100.168.192.in-addr.arpa. {

primary 192.168.100.23;# 同上

key DHCP_MDK;

}



然後重新?? dhcpd 的服????定其功能正常。?於更多的?定?? man dhcpd.conf ?搜? ddns 子串就可以找到。



然後?移到 rh71 上面?修改 /etc/named.conf ?在 options 前面加上如下句子?

key DHCP_MDK {// ?段??和 dhcpd.conf ?定一致

algorithm HMAC-MD5.SIG-ALG.REG.INT;

secret 4sxutdFuNMqF1B0Q2GV1uQ==;

};

logging {// ?是???定

channel update_debug {

file "/var/log/update-debug.log";

severity debug 3;

print-category yes;

print-severity yes;

print-time yes;

};

channel security_info {

file "/var/log/named-auth.info";

severity info;

print-category yes;

print-severity yes;

print-time yes;

};

category update { update_debug; };

category security { security_info; };

};



然後再?相?的 zone 加上 update ?定?

zone "siyongc.domain" {

type master;

file "siyongc.domain";

allow-update { key DHCP_MDK; };// 名?必?和前面的 key 一致

};

zone "100.168.192.in-addr.arpa" {

type master;

file "192.168.100.rev";

allow-update { key DHCP_MDK; };// 同上

};



然後建立所需的????

touch /var/log/update-debug.log

touch /var/log/named-auth.info

chown named.named /var/log/update-debug.log

chown named.named /var/log/named-auth.info



完成後?重新?? named ???查 /var/log/messages 及??服?是否正常。



最後?就是等待??更新了~~~ 哦?我忘了??的更新??了?我在某?看到?(?不起?了?家?的???局的???路上?)?更新的??好像是 dns 那?累? 100 了一百???在 journal 的?候?或是每隔 60 分? (哪???先到?就?用哪?方法?不??真的?得不是很清楚)。如果您在 /var/named 的???下面??更新(??其一是 Serial ??)?或是在 /var/log/update-degub.log 上看到有??。那就成功了?



如果一直??作怎?吧?呵呵~~~ 我也不知道。但我?建?您? /etc/dhcpd.conf ?named.conf?和 /var/named/ 的????量?化??那些有的?的全部拿掉??重新??服?看看。?然了?/var/log/ ?面???也有很多重要???比方?提? named.conf ?的 debug level ?值(如?severity debug 9 )?然後?行?

tail -f /var/log/update-dbug.log



再不然?用 tcpdump 抓封包看?~~~



老???我原本??篇文章的?候??有打算? dhcp dns 的??更新???的?因????作?。幸得在新??上得到 小州兄 的指??才?了? Mandrak8.1 ??按 man page 的步??定起?的。我?得在本?上更新?也就是 dhcpd 和 named 都在同一台?器上??比?容易成功。如果跨?路?行的??那您得要首先解??路想?的???例如路由和防火??些?定。

Anyway?我不敢保?您能按照上面的步??作出???要自己多????吧。如果您想更?一步了解 DNS 的??更新?您可以研究一下 nsupdate ??命令。它可以?您以交?模式?更新 named 的???定。



Tips?我知道?多所?的?? dns 服??大都?於 server 上提供更新?制?我猜?只要透???的 cgi 或 client 程式?就??可以完成的。看完下面 Leo 兄的文章?您???有?感的?





?? DNS ?定技巧

除此之外?如果您?有?趣研究?? DNS 技?的??不妨到?路上找找 IXFR 的技??也可以?考如下?些 RFC?1034?1995?1996?2136?2535?2694。

?定 master / slave

不管您是否有打算??自己的 domain 和管理自己的 DNS 主??在您真正架??外服?的 dns 伺服器之前??先行在?部?路架?看看?直到您有信心之後才架?直接向 Internet 提供服?的 DNS 。而您需要??的?些前置功夫中?其一就是 master ? slave DNS 的?置。

假如您真的到?路上??? domain?他?通常需要您提供最少?台 NS 主?。?什?呢??是基於?援考量的。?一??? domain 同?授?到?台 ns 上面管理的??那?人透? DNS 查?的?候???得?? NS ??( root zone 就有 13 ? ns 之多?)。?方只需向其中一台?行查?就可以了?如果第一台不能成功的????向下一台。究竟向哪一台 NS 查??其先後?序?什????但??的是?料的??性?

在前面您已?知道如何在?一的主?上面?行 DNS ?定了?那???有?台主?需要?同一? domain 提供 DNS 服?的?候又如何?定呢?您?然可以在?台主?上各?定一次。但?料的同步呢?您?不能在一台 NS 查?到一? IP 位址?而在另一台 NS 得到另外一?位址吧?如果?生?料?更需求的?候?您也得同?的在?台?器上面?行修改?而且必?透?人?的???以?定?方的?料一致性。那~~ 是否有更好的?法?做到??呢?

?然有啦??就是 master 和 slave DNS 的?定了。透? master 和 slave 的架??您日後要?行?料?更的?候?只需在 master 上面??就好?然後 slave ?定期的自????更新?料同步回去(??得 SOA 那堆?字的??您??知道 Refresh 和 Serial 的作用吧?如果您忘?了??回去??一下)。

如果您?有理解?????知道 slave ?在 refresh ??到?的?候?就??和 master ?行?料同步的?作??在 DNS 系??面有一??????叫做“zone transfer”(?域?移)?而在技??面????是 AXFR 查??



? slave 需要?行 zone transfer 之前?它首先查? master 的 SOA ??之 serial ?值?

如果???值比 slave 上的 serial 要大?就送出 AXFR 查??

如果 master 允? slave 的 zone transfer ?那就回? AXFR 的查??果?

然後 slave 根?查??果更新自己的???。

?上面的流程?看?您不??? serial 在整??域?移?程中的重要性。所以?您每次修改了 master?一定要?增加 serial ?值。?然?您可以依序的增加?值?但如果您的 Serial ??是依照“日期 修改次?”格式的??那?您只要修改日期部份?就肯定可以?得一?更大的?值(除非您又碰到 Y2K 的?? )?假如您的修改是在同一天?生的?那您可以修改最右?的???字(相信您一天之?不?修改 100 次吧?)。

要?定 slave DNS 其?非常?????到或?您不相信?真的??您?您只需在 slave 主?上面的 /etc/named.conf 增加??行就可以了?

zone "siyongc.domain" IN {

type slave;

masters { 192.168.100.23; };// ?不要漏了 masters 後面的 s ?

file "slave.siyongc.domain";

};



一?也???就????~~~ 我?假?上面的?定在 10.0.1.130 ( lp64 ) 上面?行?而 master ?是 192.168.10.23 ( rh71 )。???我再告?您一?您非常?意?到的信息?您根本?需?心如何建立 slave 的????named ?自??您搞定?您只需?定 /var/named ??目?能?被 named ?入就行了。如果您不?定?那只需?目?的 owner 改一改就行了?

chown -R named.named /var/named



??的??只要 slave 的 refresh ??到??就?自?的?您更新???料了(?然了?底?的路由和??必?是?通?阻的)。但是?每次?您修改了 master 上面的?定?重新?? named 服?的?候?master 就?主?向?源???中的所有 NS 主?送出 NOTIFY 信?(自己除外?但 master 的 NS ??必?是第一?)。? slave(s) 收到?自 master 的 NOTIFY 之後??回?一???? master ?然後根? /etc/named.conf ?案中的?定???向所定?的 masters 位址?行 zone transfer (是否要更新?料??然?必?以 Serial ?依?)?就好像 refresh 到?了一?。



Tips?假如您??修改 master 後?不能及?同步 slave 上的?料?那可能是 slave ???在 NS ??上。如果您不?意修改 NS ???那您可以在 master 的 named.conf ?面的 zone ?定上加上??行?

zone "siyongc.domain" IN {

type master;

file "siyongc.domain";

notify yes;

also-notify { 192.168.100.26; };

};



???master 在修改後同???通知名?中的 slave 主?。

事?上?如果有?的 slave DNS 被?定?指向??台 master 的??就算您??? notify ?? no ?? slave 主?的 refresh 到期的?候??是可以?行?域?移 (zone transfer) 的。

?然了??了防止?人任意的向 master ?行 zone transfer 而?取 zone ?料?named ?允?您以 acl (Access Control List) ?控制哪些主?才能上??行?域?移(??我?後面再?)?同???允? zone transfer 的?候以加密的方式?送?料。



除了上述的?援需求外?在其它情形也有可能需要 master / slave 的架?。比方??您有一?很大型的?路?如果所有主?都集中向 master ?行 DNS 查??那?必?增加 master 的工作?荷?而降低其效能?同?也?生?外的?程?路流量。???您最好?定多台 slave 放置在不同的地??分? master 的工作?同?也能提供?援服?。



?定 forwarder

我?除了能?用 slave ?分? master 工作??少?路流量之外??可以透?另外一? DNS ?制??低?路流量的?那就是 forwarder ?定了。

所?的 forwarder ?就是?某一台 NS 主?遇到非本???的 zone ( slave zone 也?於本???的??) 之查??求的?候??不直接向 root zone 查?而把?求?交?指定的 forwarder (一台或多台) 主?代?查?。如果您不了解 DNS 的查?模式?那您很?理解?? forwarder 的意?和好?。

我?知道?? NS 主?在接到 client 的查?的?候?首先??查??查?是否?於本?管??否???向 root zone 再逐?的查?下去?最後??果告? client 。而在???程之中?NS 主????每一??果存放到 cache 中。???只要 cache 中的 TTL ??期的??在下次遇到同?查?的?候?就可以直接??果回?? client 了?而?需再重?上次的查?流程。如果 NS 上面指定了 forwarder?那?? NS ?? cache ?有??的???不向 root 查??而是?自己扮成一? client?向 forwarder 送出同?的?求?然後等待查??果?而逐?往下查?的?作??交由 forwarder ???NS 自己就??多了。但?????果是自己直接查?得?的??是 forwarder 送回?的?NS 都?保存一份?料在 cache 中。???其後的相同查?就快多了???於 NS 所服?的 client 而言更是有效率得多。

但是?假如您仔?研究一下?? forwarder ?制?您???它的好??非?是上面所提到的效能提??而且??於整??路流量(尤其是?外的流量)也有非常正面的?助。比方??您的?部?路需要 10 台 DNS ?提供服??您只需在某一台能直接?外界?通的??上架? DNS 服??然後?其它?部 NS 的 forwarder 指向?主?就行了。???本?需要 10 次的 root 查??在 forwarders 的?制下?就只需 1 次而已??同下?的往返查???算的????上所省下的?外查?就更多了~~ 如果再加上 cache 的效能?forwarder 所降低的 DNS 流量是非常?著的。

事?上?forwarder 在我?的???用中也很常??例如?我?只要? forwarder ?定? ISP 的 DNS ?那??我?的 NS 就?需直接向 root 查?了?又因? ISP 上的 DNS 也有 cache 的???所以我?的 NS 所?得的查??果?也比直接向 root 查??得要快。
<< 网络管理自动化 网络经典命令行 >>
API:
gipsky.com& 安信网络
网友个人意见,不代表本站立场。对于发言内容,由发表者自负责任。

系统导航

 

Copyright © 2001-2010 安信网络. All Rights Reserved
京ICP备05056747号