[轉貼自]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 9在XP架不成功,現在看了這篇架成功了,也請算看看省了多少學費喔。
為了讀者方便,先將讀者分為2類,
第一類,還沒用BIND9開始在XP架DNS的,請從[PART1]讀起
第二類,已經用BIND9開始在XP架DNS,卻一直無法成功的,可以跳過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.root、localhost.zone、localhost.rev、mydomain.tw.dns、121.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查詢。
留言列表