關於 domain name server 的設定方法介紹喔!
/etc/hosts
:直接在檔案內輸入主機名稱對應的 IP 來查詢;
DNS 系統 :在 Client 端以 resolver 的方式到 DNS 主機上面搜尋 IP 與名稱的對應! |
李登輝、三芝、台北
李登輝、仁愛、台北 李登輝、高雄 .... |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[root@test
root]# rpm -qa | grep bind
bind-9.2.1-4mdk <==這個是用來安裝 Server 的 bind-utils-9.2.1-4mdk <==這個是用來做為 Client 端搜尋 domain name 的指令 |
[root@test
root]# vi /etc/named.conf
// This settings is only for forwarding DNS Server options { pid-file "/var/run/named/named.pid"; //我這裡設定 pid-file !這個時候, //請特別留意該路徑的所有人 ( owner ) //一定是要 named 這個人才行! forward only; //只允許 forward! forwarders { 168.95.1.1; //我這裡使用 hinet 的 DNS ! 139.175.10.20; //這個是 seednet 的 DNS ! }; }; [root@test root]#
ls
-al /var/run/named
|
[root@test
root]# /etc/rc.d/init.d/named start
Starting named: [ OK ] |
[root@test
root]# netstat -utln
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 192.168.1.2:53 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN udp 0 0 192.168.1.2:53 0.0.0.0:* udp 0 0 127.0.0.1:53 0.0.0.0:* |
[root@test
root]# tail -n 15 /var/log/messages | grep
named
Dec 5 02:33:33 test named[3010]: starting BIND 9.2.1 -u named Dec 5 02:33:33 test named[3010]: using 1 CPU Dec 5 02:33:33 test named[3015]: loading configuration from '/etc/named.conf' Dec 5 02:33:33 test named[3015]: no IPv6 interfaces found Dec 5 02:33:33 test named[3015]: listening on IPv4 interface lo, 127.0.0.1#53 Dec 5 02:33:33 test named[3015]: listening on IPv4 interface eth0, 192.168.1.2#53 Dec 5 02:33:33 test named[3015]: running Dec 5 02:33:33 test named: named startup succeeded |
電腦系統 | 電腦 IP | 電腦名稱 | 說明 |
Mandrake 9.0 | 192.168.1.2 | mdk90.vbird.org
phorum.mdk90.vbird.org www.mdk90.vbird.org ftp.mdk90.vbird.org |
1. 這是主要的 DNS 設定主機;
2. 我的主要名稱為 mdk90.vbird.org 3. 總共有三個『別名』在這部主機上! |
Windows 2000 | 192.168.1.100 | win2k.vbird.org | 記錄在 mdk90.vbird.org 裡面的紀錄資料。 |
Windows XP | 192.168.1.200 | winxp.vbird.org | 記錄在 mdk90.vbird.org 裡面的紀錄資料。 |
[root@test
root]# vi /etc/named.conf
// 設定整體的主機規劃!重點在 directory 的意義! options { directory "/var/named"; //這個是在規定『我的正反解檔案放置的目錄』 forwarders { 168.95.1.1; //不管怎麼說,俺就是喜歡 forwarder 的設定 }; pid-file "/var/run/named/named.pid"; //每個 distribution 可能都不同! allow-query { any; }; //是否允許他人查詢?當然啦! allow-transfer { any; }; //是否允許 slave 的同步!當然啦! }; //上面這兩個設不設定都無所謂啦!預設值! // 首先定義出
. (root) 這個 hint type 的檔案內容!
// 再來則是定義出
localhost 的正反解了!很簡單啦!就是 127.0.0.1 而已
// 定義出我自己的這一組正反解設定!
|
[root@test
root]# ftp rs.internic.net
Connected to rs.internic.net. Name (rs.internic.net:root): anonymous 331 Guest login ok, send your complete e-mail address as password. Password: <==your password 230 User ftp logged in. Access restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd domain ftp> get named.root ftp> bye |
[root@test
root]# vi named.root
; 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 . <file>" ; configuration file of BIND domain name servers). ; ; This file is made available by InterNIC ; under anonymous FTP as ; file /domain/named.root ; on server FTP.INTERNIC.NET ; ; last update: Nov 5, 2002 ; related version of root zone: 2002110501 ; ; ; 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 以下省略 |
[root@test
root]# cd /var/named
[root@test named]# vi named.localhost $TTL 600 ; 這個跟清除 cache 的時間有關係!單位是秒! @ IN SOA localhost. root.localhost. ( 2002120601 ; Serial 與 master 及 slave 是否同步有關! ; 一般而言,如果這個數值變大了, slave 才會同步更新! 28800 ; Refresh 定義出 slave 多久會主動的檢查 serial 的值, ; 以便主動的更新資料庫! 14400 ; Retry 定義出,如果 slave 沒有連上 master DNS 主機 ; 則多久之後會重新再次的主動檢查! 720000 ; Expire 如果一直沒有連接上 mater ,那麼到了這個時候 ; slave 就會放棄檢查的動作了,不再更新! 86400 ) ; Minimum 這個其實就是 TTL 啦!如果您沒有定義 TTL , ; 那麼 TTL 的值就以這個來設定! ; 開始設定正解的資訊內容: @ IN NS localhost. ; 特別留意最後面有個 . 喔! localhost. IN A 127.0.0.1 ; A 是正解裡面 hostname 對應 IP 的標誌 |
符號 | 說明 |
|
|
|
這個就是 zone 定義出的那個咚咚啦!以這個檔案內容為例,因為我們在 /etc/named.conf 當中就是定義出 localhost 這個 domain name 為一個 zone 的,因此,呵呵!在這裡,這個符號就代表 localhost 啦! |
|
|
|
|
|
這是正解的符號啦!也就是說,前面的 localhost. (還是得要注意那個 . )所對應的 IP 為 127.0.0.1 的意思啦! |
|
呵呵!再次的給他強調下,在 BIND 的設定檔當中,關於主機名稱的話,最後面有沒有加上 . 是差很多的!加上了 . 表示這個『完整的主機名稱,亦即是 hostname + domain name 』了,如果沒有加上 . 的話,表示該名稱僅為『 hostname 』而已!切記切記! |
[root@test
root]# cd /var/named
[root@test named]# vi named.127.0.0 <==這個檔案名稱是在 /etc/named.conf 裡面設定 $TTL 600 ; This is about DNS server's settings @ IN SOA localhost. root.localhost. ( 2002120601 ; Serial 28800 ; Refresh 14400 ; Retry 720000 ; Expire 86400 ) ; Minimum ; The server's infomations @ IN NS localhost. 1 IN PTR localhost. |
符號 | 說明 |
|
|
[root@test
root]# cd /var/named
[root@test named]# vi named.vbird.org <==這個檔案名稱是在 /etc/named.conf 裡面設定 $TTL 600 ; 跟上面提到的一樣,設定主機的一些基本資訊,包含 master 與 slave ! @ IN SOA mdk90.vbird.org. root.mdk90.vbird.org. ( 2002120601 ; Serial 28800 ; Refresh 14400 ; Retry 720000 ; Expire 86400 ) ; minimum ; 主機的設定參數部分 @ IN NS mdk90.vbird.org. ; 這個 zone (vbird.org) 的主機 @ IN MX 10 mdk90.vbird.org. ; 郵件轉遞的主要郵件主機! mdk90 IN A 192.168.1.2 mdk90 IN TXT "The testing DNS server" ; 僅是說明文件 phorum.mdk90 IN CNAME mdk90 ;注意這行與下一行的寫法! www.mdk90 IN CNAME mdk90.vbird.org. ; 其他主機的設定資訊上面 win2k IN A 192.168.1.100 win2k IN HINFO "AMD-K6-III""Windows 2000" winxp IN A 192.168.1.200 |
符號 | 說明 |
|
|
|
|
|
|
|
這個東西就是設定主機別名的咚咚啦!因為我們的主機有很多個名字,沒有必要為每個名字都建立一個 A 的標號,這個時候,我們就可以使用 CNAME 來設定另外一個別名!以上面為例,我設定了兩個別名在我的主機上面,特別留意的是兩個 CNAME 的寫法都指向同一部機器,上面關於 CNAME 的那兩行最大差異性在於寫的是否為 FQDN 與後面有沒有加上 . 這個標誌啦! ^_^ |
|
這個東西後面接兩個咚咚,第一個接的是硬體的等級,第二個接的則是作業系統,這兩個咚咚最好不要用在公開的 DNS 主機上面,跟 TXT 一樣的問題啦!如果要設定的話,最好使用雙引號分隔開來喔! |
[root@test
root]# cd /var/named
[root@test named]# vi named.192.168.1 <==這個檔案名稱是在 /etc/named.conf 裡面設定 $TTL 600 @ IN SOA mdk90.vbird.org. root.mdk90.vbird.org. ( 2002120601 ; Serial 28800 ; Refresh 14400 ; Retry 720000 ; Expire 86400 ) ; minimum ; 其他主機的資訊! @ IN NS mdk90.vbird.org. 2 IN PTR mdk90.vbird.org. ; The following is about other hosts 100 IN PTR win2k.vbird.org. 200 IN PTR winxp.vbird.org. |
1. 開始啟動!
[root@test root]# /etc/rc.d/init.d/named start Starting named: [ OK ] 2. 關於 port
觀察:
3. 關於訊息的內容!
|
Dec 10 11:34:21
test named[31185]: loading configuration from '/etc/named.conf'
Dec 10 11:34:21 test named[31185]: /etc/named.conf:18: missing ';' before '}' Dec 10 11:34:21 test named[31185]: loading configuration: failure Dec 10 11:34:21 test named[31185]: exiting (due to fatal error) 這樣的錯誤就是發生在 /etc/named.conf 的地 18 行,忘記加上 ; 符號了!去修正即可! Dec 10 11:37:20
test named[31236]: dns_rdata_fromtext: named.localhost:9: near eol: unexpected
end of input
Dec 10 11:42:28
test named[31338]: dns_master_load: named.localhost:14: unexpected end
of line
|
既然已經完成了 DNS 主機的設定,接下來自然要進行 Client 端的連線測試啦!要怎麼測試呢?底下有幾個檔案請特別留意喔:一般而言, Linux 的預設 hostname 搜尋都是先 /etc/hosts 來的,為什麼呢?您可以查看一下 /etc/nsswitch.conf ,並找到 hosts 的項目:
- /etc/hosts :剛剛上面就提過了,這個是最早的 hostname 對應 IP 的檔案;
- /etc/resolv.conf :這個就是設定您 Client 端連上 DNS 主機的 IP 設定檔;
- /etc/nsswitch.conf:這個檔案則是在『決定』先要使用 /etc/hosts 還是 /etc/resolv.conf 的設定!
[root@test root]# vi /etc/nsswitch.conf
hosts: files nisplus nis dns
上面那個 files 就是使用 /etc/hosts 而最後的 dns 則是使用 /etc/resolv.conf 的 DNS 主機 IP 搜尋啦!因此,您可以先以 /etc/hosts 來設定 IP 對應ㄋㄟ!當然啦,您也可以將他調換過來,不過,總是 /etc/hosts 比較簡單,所以將他擺在前面比較好啦!
好啦,既然我們是要進行 DNS 測試的,那麼 /etc/resolv.conf 的內容,自然就要填寫我們自己的 IP 囉!所以您應該這樣寫:
[root@test root]# vi /etc/resolv.conf
nameserver 192.168.1.2
nameserver 163.28.112.1
nameserver 163.28.113.1
nameserver 可以設定多個,但是由於 nameserver 是一個一個的追查下來的,所以,您的 DNS 主機的 IP 要寫在最上面喔!然後就可以開始測試了!
測試 DNS 的程式有很多,我們先來使用最簡單的 host 吧!然後還有 nslookup 及 dig 哩!
host:
語法:
[root @test root]# host [-a] [FQDN]
[root @test root]# host -l [domain]
參數說明:
-a :所有的資訊都列出來;
-l :將後面接的 domain 內的所有的 host 都列出來!
範例:
[root @test root]# host mdk90.vbird.org
mdk90.vbird.org has address 192.168.1.2
很單純的只列出來 hostname 對應 IP 而已!其他的資訊則一概不印出![root @test root]# host -a mdk90.vbird.org
Trying "mdk90.vbird.org"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51741
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 0;; QUESTION SECTION:
;mdk90.vbird.org. IN ANY;; ANSWER SECTION:
mdk90.vbird.org. 600 IN A 192.168.1.2
mdk90.vbird.org. 600 IN TXT "The testing DNS server";; AUTHORITY SECTION:
vbird.org. 600 IN NS mdk90.vbird.org.Received 98 bytes from 192.168.1.2#53 in 9 ms
注意看上面的說明,上面的 600 就是我們訂定的 TTL 的數值, A, TXT, NS 則是在 master file ,也就是 named.vbird.org 裡面設定的資訊!了不了ㄋㄟ?[root @test root]# host -l vbird.org
vbird.org SOA mdk90.vbird.org. root.mdk90.vbird.org. 2002120601 28800 14400 720000 86400
vbird.org name server mdk90.vbird.org.
vbird.org mail is handled by 10 mdk90.vbird.org.
mdk90.vbird.org has address 192.168.1.2
mdk90.vbird.org text "The testing DNS server"
phorum.mdk90.vbird.org is an alias for mdk90.vbird.org.
www.mdk90.vbird.org is an alias for mdk90.vbird.org.
win2k.vbird.org has address 192.168.1.100
win2k.vbird.org host information "AMD-K6-III" "Windows 2000"
winxp.vbird.org has address 192.168.1.200
vbird.org SOA mdk90.vbird.org. root.mdk90.vbird.org. 2002120601 28800 14400 720000 86400
上面的資訊有沒有很熟悉呢?對啦!那就是我們在設定 named.vbird.org 裡面的所有的設定資訊!
基本上,如果沒有特殊的需求,那麼 host 這個程式就實在是很好用了!而且還粉方便ㄋㄟ!
nslookup :
語法:
[root @test root]# nslookup [FQDN]
[root @test root]# nslookup
參數說明:
set type=any :列出所有的資訊『正解方面設定檔』
set type=mx :列出與 mx 相關的資訊!
範例:
[root @test root]# nslookup win2k.vbird.org
Server: 192.168.1.2
Address: 192.168.1.2#53Name: win2k.vbird.org
Address: 192.168.1.100
亦是單純的將 hostname 對應的 IP 列出來而已!蠻方便的啦!而且前面亦會顯示出是哪一部 DNS 主機去查詢的![root @test root]# nslookup
> 192.168.1.2 <==檢查反解!
Server: 192.168.1.2
Address: 192.168.1.2#532.1.168.192.in-addr.arpa name = mdk90.vbird.org.
> www.mdk90.vbird.org <==檢查正解!
Server: 192.168.1.2
Address: 192.168.1.2#53www.mdk90.vbird.org canonical name = mdk90.vbird.org.
Name: mdk90.vbird.org
Address: 192.168.1.2
> tw.yahoo.com <==檢查非本機端的正解!
Server: 192.168.1.2
Address: 192.168.1.2#53Non-authoritative answer: <==這一行在說明,這個資訊得自『非認證!』亦即由 cache 取得的!
Name: tw.yahoo.com
Address: 202.1.237.21
> set type=any <==顯示所有的資訊!僅針對正解而言!
> mdk90.vbird.org
Server: 192.168.1.2
Address: 192.168.1.2#53Name: mdk90.vbird.org
Address: 192.168.1.2
mdk90.vbird.org text = "The testing DNS server"
> exit
nslookup 也是一個很不錯用的資訊喔!不過,底下的 dig 又更厲害了!
dig:
語法:
[root @test root]# dig [-t type] [FQDN]
參數說明:
-t type :查詢某種 type ,主要有 any 及 mx 等!
範例:
[root @test root]# dig mdk90.vbird.org; <<>> DiG 9.2.1 <<>> mdk90.vbird.org
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41014
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0;; QUESTION SECTION:
;mdk90.vbird.org. IN A;; ANSWER SECTION:
mdk90.vbird.org. 600 IN A 192.168.1.2;; AUTHORITY SECTION:
vbird.org. 600 IN NS mdk90.vbird.org.;; Query time: 10 msec
;; SERVER: 192.168.1.2#53(192.168.1.2)
;; WHEN: Tue Dec 10 13:50:38 2002
;; MSG SIZE rcvd: 63
由上面的資訊我們可以得到 A 的正解及 NS 的主機名稱喔![root @test root]# dig -t mx mkd90.vbird.org
; <<>> DiG 9.2.1 <<>> -t mx mkd90.vbird.org
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 39261
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0;; QUESTION SECTION:
;mkd90.vbird.org. IN MX;; AUTHORITY SECTION:
vbird.org. 600 IN SOA mdk90.vbird.org. root.mdk90.vbird.org. 2002120601 28800 14400 720000 86400;; Query time: 9 msec
;; SERVER: 192.168.1.2#53(192.168.1.2)
;; WHEN: Tue Dec 10 13:53:10 2002
;; MSG SIZE rcvd: 80
主要是取得 MX 的相關資訊啦!
這樣的查詢方式是不是也很方便呢!?趕快去試看看您的設定對不對吧!
whois:
語法:
[root @test root]# whois hostname
參數說明:
範例:
[root @test root]# whois redhat.comDomain Name: REDHAT.COM
Registrar: NETWORK SOLUTIONS, INC.
Whois Server: whois.networksolutions.com
Referral URL: http://www.networksolutions.com
Name Server: NS2.REDHAT.COM
Name Server: NS3.REDHAT.COM
Name Server: NS1.REDHAT.COM
Status: ACTIVE
Updated Date: 09-jan-2003
Creation Date: 26-may-1994
Expiration Date: 25-may-2006Registrant:
Red Hat, Inc. (REDHAT-DOM)
P.O. Box 13588
Research Triangle Park, NC 27709
USDomain Name: REDHAT.COM
Administrative Contact, Technical Contact:
Network Operations Center (NOC144-ORG) noc@REDHAT.COM
Red Hat, Inc.
P.O. Box 13588
Research Triangle Park, NC 27709
US
919-547-0012Fax- 919-547-0024
Fax- - 919-547-0024Record expires on 27-May-2006.
Record created on 26-May-1994.
Database last updated on 9-Mar-2003 11:44:55 EST.Domain servers in listed order:
NS3.REDHAT.COM 66.187.229.10
NS1.REDHAT.COM 66.187.233.210
NS2.REDHAT.COM 66.187.224.210
whois 可以用來查詢某一部主機或某個 domain 主要是經過那個人的註冊?那個人的設定內容與哪部機器呢!這個指令也很是好用,例如上面的範例當中,我們可以知道 redhat.com 這部機器的 IP 與註冊的狀態喔!很不錯用吧! ^_^
好了,那麼如何開放子網域授權呢?我這裡僅說明正解的部分,因為在 ISP 方面通常已經幫我們搞定反解了,所以先不理他!而目前我們去註冊的資訊上面,通常僅取得的是正解的設定權,例如我的 vbird.idv.tw 就是一個例子!好了,現在假設在我的 mdk90.vbird.org 上面,要將 win2k.vbird.org 這個子網域切割出去給 win2k.vbird.org 管理,那麼該怎麼辦呢?
[root@test
root]# cd /var/named
[root@test named]# vi named.vbird.org <==這個檔案名稱是在 /etc/named.conf 裡面設定 $TTL 600 @ IN SOA mdk90.vbird.org. root.mdk90.vbird.org. ( 2002120601 ; Serial 28800 ; Refresh 14400 ; Retry 720000 ; Expire 86400 ) ; minimum ; 主機的設定參數部分 @ IN NS mdk90.vbird.org. @ IN MX 10 mdk90.vbird.org. mdk90 IN A 192.168.1.2 mdk90 IN TXT "The testing DNS server" phorum.mdk90 IN CNAME mdk90 www.mdk90 IN CNAME mdk90.vbird.org. ; 子網域分割出去給其他主機管理的例子! win2k.vbird.org. IN NS win2k.vbird.org. win2k IN A 192.168.1.100 ; 本機上面其他主機的設定資訊方面 winxp IN A 192.168.1.200 |
[root@test
root]# more /var/log/messages
Oct 5 05:02:30 test named[432]: lame server resolving '68.206.244.205.in-addr.arpa' (in '206.244.205.in-addr.arpa'?): 205.244.200.3#53 Oct 5 05:02:31 test named[432]: lame server resolving '68.206.244.205.in-addr.arpa' (in '206.244.205.in-addr.arpa'?): 206.105.201.35#53 Oct 5 05:02:41 test named[432]: lame server resolving '68.206.244.205.in-addr.arpa' (in '206.244.205.in-addr.arpa'?): 205.244.112.20#53 |
1. 修改 /etc/named.conf
[root@test root]# vi /etc/named.conf // 加入底下這個參數: logging { category lame-servers { null; }; }; // 注意一下,那個 logging 是主要的參數,至於 category 則是定義出什麼資訊, // 因為我們不要 lame server ,所以選擇 lame-servers 這個參數,並定義 // 參數值為 null (空的的意思),這樣就修改完成了! 2. 重新啟動 bind [root@test root]# /etc/rc.d/init.d/named restart |
在 LPI 網站 http://www.lpi.org 裡面提到的,關於 NFS 的考試題庫的地方,只有在 LPI level 1 的 102 ,裡面的 topic 113 Networking Services ,第五點當中,簡易的 DNS 設定。強調的是『應試者需瞭解何謂正、反解、Zone 與 cache-only 的 DNS 主機』至於會考的檔案與指令可能有這些:
- /etc/hosts
- /etc/nsswitch.conf
- /etc/resolv.conf
- /etc/named.boot(V4)及 /etc/named.conf(V8)
- named (這個 daemon )