close

[轉貼自]http://blog.xuite.net/allenw/kimo/19110710#message_header


用BIND9 在 XP 架設DNS



 



終於成功了,終於在XP的環境下,用免費的BIND 9 架好了DNS Server



因為不久前申請了一組 泛英文的網域 ( xxxxx.tw) ,錢繳了之後才發現,它只提供DNS型的轉址,也就是它要你自己建一個 DNS。原本以為不用DNS只要指到自己的網站IP就好,結果網站有時通,有時不通。無計可施,只好設法自己架DNS


 因為網路上提到DNS Server的架設,幾乎清一色是在Linux 的環境,絕少有人會提到在XP之下要注意哪些問題。連BIND 9的官方網站的文件資料,都是在講named.conf 的內容參數,正解檔、反解檔。這些東西,去別人架好的DNS Server拷貝來改一改就好了,根本不用大費周章。一般人在XP 架設DNS 的問題根本不是這個。所以我一定要把這篇寫出來,讓一般人也能輕易架好DNS Server


 DNS Server的工作事實很簡單,只是別人來詢問位址,回答正確的IP而已。設定檔都大同小異,卻被專家搞得很專業似的,如果你之前用BIND 9XP架不成功,現在看了這篇架成功了,也請算看看省了多少學費喔。


為了讀者方便,先將讀者分為2類,


 


第一類,還沒用BIND9開始在XPDNS的,請從[PART1]讀起


第二類,已經用BIND9開始在XPDNS,卻一直無法成功的,可以跳過PART1從[PART2]讀起


[PART1]


 


首先去下載 BIND9 Windows版,例如現在最新的是 9.5,解壓縮後是個資料夾BIND 9.5.0 -P2,將它拷貝到要安裝DNS Server XP主機,執行裡面的BINDInstall.exe



 



(那兩欄空欄是要你設定 named 這使用者的密碼)


它會在 C:\windows\system32\ 建立一個叫做 DNS 資料夾 ,裡面有 bin etc 兩個資料夾。Bin是放程式的地方,etc是放DNS 資料的地方(也就是named.conf 、正解檔、反解檔的地方)。並且會建立一個新的使用者叫做named,是用來執行程式的。BIND DNS 主程式是bin 裡的named.exe


 安裝完後你會發現 etc 裡面是空的,常在安裝套裝軟體的我,真的很想罵一聲ㄍㄢ四聲,它連附一個範例檔也沒有,所以新手安裝到這裡大概就要放棄了,要不然就像我,上網去搜尋DNS Server架設的知識。


 bin裡有一個readme1st.txt 是英文的,內容主要是告訴你,在 C:\windows\system32\dns\etc 裡面建立一個文字檔叫做named.conf 這是主要設定檔


內容要有:


options {


                directory "C:\WINDOWS\system32\dns\etc";


        };


 然後在[命令提示字元]下,進入C:\windows\system32\dns\bin\  (如附圖2~3)


執行 rndc-confgen –a




 



 




 

這樣會在 C:\windows\system32\dns\etc 裡面產生一個 rndc.key 的檔案,這是named.exe執行的檢查碼的檔,內容大概是這樣


key "rndc-key" {


        algorithm hmac-md5;


        secret "iDjjbaaqJo/wRMgES5dA8w==";


};


 Secret 後面就是檢查碼,每次產生會不一樣。


rndc.key 內容拷貝到 named.conf 裡面。並加上下列文字


 controls {


        inet 127.0.0.1 port 953 allow { localhost; } keys { "rndc-key"; };


};


 named.conf 是主要設定檔,內容大致如下


===============================================


options {


   directory "C:\WINDOWS\system32\dns\etc";


}; 


 key "rndc-key" {


        algorithm hmac-md5;


        secret "iDjjbxxdKxxxqJoxxxA8w==";


 };


  controls {


       inet 127.0.0.1 port 953


               allow { localhost; } keys { rndc-key; };


};


 zone "." IN {


     type hint;


     file "named.root";  //. 的正解檔


}; 


 zone "localhost" IN {                 


     type master;


     file "localhost.zone"; 


     allow-update { none; };         


};


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


     type master;


     file "localhost.rev";


}; 


 zone "mydomain.tw"  {


     type master;


     file "mydomain.tw.dns";   // 我網域的正解檔


}; 


 zone "121.122.123.in-addr.arpa"  {


     type master;


     file "121.122.123.in-addr.arpa.zone";  // 我網域的反解檔


}; 


========================================================


mydomain.tw.dns 的內容大致如下


========================================================


 02:54:24 +0800


 $ORIGIN mydomain.tw.


$TTL 10800


@       IN SOA  ( dns.mydomain.tw. ; Primary DNS server
              nobody.invalid. ; Responsible person
 
              2008082401   ; Serial number
   
           10800        ; Refresh
 
              3600         ; Retry
 
              777600       ; Expire
 
              3600       ) ; Minimum TTL
 
@       IN NS   dns.mydomain.tw.
 
dns     IN A    192.168.X.XXX
 
ftp     IN A    192.168.X.XXX
 
www     IN A    192.168.X.XXX


==================================================所以,在etc 之內除了named.conf之外,我還應該有
named.rootlocalhost.zonelocalhost.revmydomain.tw.dns121.122.123.in-addr.arpa.zone 這幾個檔
供參考,因為我不是DNS專家。

 



 


[PART2]


 


對於正解檔和反解檔,我就不再詳談,網路上資料多得很。


我只針對BIND9 XP 下的『眉角』,做分享,以下才是打通穴道的重點
 假設 named.conf、正解檔和反解檔都設好了,可是很奇怪,named.exe好像沒啟動,要如何啟動呢?


[控制台]->[系統管理工具]->[服務] 可以找到 ISC BIND 的啟動位置






把它點2下,會出現 ISC BIND內容



 


 


 

可是當我們,按下啟動卻出現1067的錯誤,為什麼呢?



我們可以看[登入] 項目的內容



 


它是以一個named這個使用者來啟動,可是 named這使用者又不具備系統管理員身份,當然啟不動啦!
我們可以從[控制台]->[系統管理工具]->[電腦管理] 的使用者內找到 named這使用者。所以,發現ISC BIND 幫你建個使用者,卻不設定正確的權限,真是想罵人。



 



最簡單的方法刪了這使用者。然後再到[控制台]->[使用者帳戶] 建立一個叫做named的使用者,並且設為系統管理員,設上密碼。


記得在[控制台]->[系統管理工具]->[服務]->[ISC BIND] 的登入畫面的密碼欄輸入一樣的密碼。



 




 

好了,啟動看看吧,應該是會啟動成功才對。


最後,是許多新手常會疏忽的地方,就是防火牆。進入[控制台]-[windows防火牆] 新增連接埠,增加一組名為 DNS 編號 53  UDP


 



 



最最後,建議在 named.conf 加入下列


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


logging {                                                           // 建立log 便於偵錯


channel default_log {


file "C:\WINDOWS\system32\dns\etc\dns-default.log" versions 10 size 1m ;


severity info;


};


channel lamer_log {


file "C:\WINDOWS\system32\dns\etc\dns-lamer.log" versions 3 size 1m ;


severity info;


print-severity yes;


print-time yes;


print-category yes;


};


channel query_log {


file "C:\WINDOWS\system32\dns\etc\dns-query.log" versions 10 size 10m ;


severity info;


};


channel security_log {


file "C:\WINDOWS\system32\dns\etc\dns-security.log" versions 3 size 1m ;


severity info;


print-severity yes;


print-time yes;


print-category yes;


};


category lame-servers { lamer_log; };


category security{ security_log;};


category queries { query_log;};


category default {default_log;};



};



會建立log 便於偵錯,也可以知道誰在對這DNS查詢。


arrow
arrow
    全站熱搜

    chyuanyiin 發表在 痞客邦 留言(0) 人氣()