„ 瞭解 DNS 架構

28  Download (0)

Full text

(1)

Linux 伺服器架設

Chapter 8

Domain Name System (DNS)

VBird 2005/10/21

(2)

內容

„ 瞭解 DNS 架構

„ 安裝 BIND

„ DNS 系統實戰:

„ Caching-only DNS

„ Master DNS

„ Client settings

(3)

瞭解 DNS 架構

„ 網路傳輸大多利用 TCP/IP 協定(必須有 IP);

„ 問題:

„ 人腦對 IP 記憶不佳~

„ 解決之道:

„ 利用主機名稱對應 IP

„ 檔案記錄:

ƒ 早期的機制,查詢很快速,但無法應付隨時新增的主機

„ DNS 系統:

ƒ 分層負責(每一層僅負責自己的部分,見下頁):

ƒ hostname

ƒ domain name

ƒ Fully Qualified Domain Name ( FQDN )

(4)

瞭解 DNS 架構(續)

(5)

瞭解 DNS 架構(續)

„ DNS 預設架構

„ root (.)

„ 全球有超過 13 部以上的 root 主機;

„ 主要管理六大領域(domain)名稱

ƒ .com

ƒ .edu

ƒ .gov

ƒ .mil

ƒ .org

ƒ .net

„ 上述這六大領域名稱稱為 Top Level Domain(TLD)。

(6)

瞭解 DNS 架構(續)

(7)

瞭解 DNS 架構(續)

„ DNS 重要觀念:

„ 只要是合法授權的 DNS 主機,則其設定均可讓 Internet 上的 任何主機查詢到!(由下頁的查詢圖示來觀看!)

„ 何謂合法?

„ 向 ISP 申請(購買)一主機名稱;

„ 何謂『授權』?

„ 向 ISP 申請(購買)一領域名稱;

„ 有正解與反解之分,不一定成對;

„ 一個正解或一個反解,稱為一個『zone』

„ 必須要獲得上層的授權才是『合法』的主機

„ 思考:

„ 我是否一定要架設 DNS 主機?

„ DNS 的查詢流程:一層一層查詢,如下圖

(8)

瞭解 DNS 架構(續)

(9)

瞭解 DNS 架構(續)

„ DNS 的查詢流程(配合上圖):

1. Client 向任何一部合法的 DNS 主機查詢;

2. DNS 主機先看 client 的要求是否為自己的資料庫?若否,

則察看自己的 cache 是否有紀錄,若否才前往 root(.)

3. 前往 root ,root 會告知下一層的 domain 負責的主機 IP ;

4. 前往該層 domain 負責的主機處,再查詢下層負責的主機;

5. 持續向下追查,最後得到有資料庫記錄的主機,並取得

client 想要追查的名稱對應主機的 IP ;

6. DNS 主機會先將該查詢記錄記憶在自己的 cache 內
(這個

與 DNS 主機的 有關!),再回報給 client

7. Client 取得最終的名稱、IP對應資料。

(10)

瞭解 DNS 架構(續)

„ DNS 主機的類型:(利用 port 53)

„ Master

„ 含有主要設定檔的主機,

„ 可能可以提供其下 slave 主機的更新資料

„ Slave

„ 本身並無原始設定檔,

„ 藉由 master 主機發送的資料更新本身的設定值

„ Cache-only

„ 沒有原始資料,僅進行快取而已

„ Forwarding

„ 沒有原始資料,僅提供代查詢功能。

„ Master/Slave 之間:

„ 先回應的先贏!

„ 並非 master 死掉 slave 才開始服務!注意注意!

(11)

安裝 BIND

„ 利用 rpm 安裝 bind 套件;

„

bind

„

bind-utils

„ 主要設定檔為:

„ /etc/named.conf

„ 主要的 zone 檔案在:

„ /var/lib/named 或

„ /var/named 當中;

„ 主要由 /etc/named.conf 所決定。

„ file 與 DNS 系統使用的順序:

„ /etc/nsswitch.conf 檔案

(12)

安裝 BIND(續)

„ DNS 系統的 change root (chroot)

„ BIND 過去有很多漏洞歷史;

„ 尤其 bind 的服務 port 53 是由 root 所啟動的。

„ 啟用 change root :

„ 將某個 process 的行動限制於某個目錄當中,該目錄視為 /

„ 但須注意,原本這個 process 要用到的各個目錄必須準備一份到 該目錄下。

„ 一般設定在 /var/named/chroot

„ 假設 /var/named/chroot 為根目錄;

„ 還需要底下的目錄來配合:

ƒ /var/named/chroot/etc

ƒ /var/named/chroot/var/named

(13)

DNS 實戰:

-- Caching-only DNS

„ 僅代為查詢,且可以記錄在 cache 當中

(14)

DNS 實戰:

-- Caching-only DNS (續)

„ 編輯 /etc/named.conf

// This settings is only for forwarding DNS Server options {

pid-file "/var/run/named/named.pid";

forward only; //只允許 forward!

forwarders {

168.95.1.1; //我這裡使用 hinet 的 DNS 139.175.10.20; //這個是 seednet 的 DNS };

};

„ 重新啟動 named

„ /etc/init.d/named restart

(15)

DNS 實戰:

-- Caching-only DNS (續)

„ 注意幾個設定項目:

„ chroot 與否:

„ 是否啟動 chroot 與 /usr/sbin/named -t “directory” 有關,一般均 已將 chroot dir 設定移動至 /etc/sysconfig/named 內;

„ named.conf 設定檔在有無 chroot 時,放置目錄不同;

„ 在 named.conf 設定檔內,每一行均已 “;” 結束

„ 啟動後,務必檢查:

„ 用 netstat -tlunp 檢查 tcp/udp 的 port 53;

„ 一定要檢查 檔案內容;

„ forwarder DNS 的效能:

„ 可能較佳:因為資料量較大;

„ 可能較差:因為來查的人多~負荷量大!

(16)

DNS 實戰:

-- Caching-only DNS (續)

„ 練習:

„ 設定一個 caching only 的 DNS 主機:

„ 必須要 chroot ;

„ 設定了 forwarders ,內容為 168.95.1.1 時。

(17)

DNS 實戰:

-- Master DNS

„ 關於設定檔:

„ 主設定檔依舊為 named.conf

„ 每個正解、反解均為一個 zone ,一個 zone 需要一個 file ;

„ 假設我們共有五個 zone file,分別是:

„ /var/named/named.root (root,由 NIC 提供)

„ /var/named/named.localhost (localhost 的正解)

„ /var/named/named.127.0.0 (localhost 的反解)

„ /var/named/named.linux.site (linux.site 的正解)

„ /var/named/named.192.168.1 (linux.site 的反解)

(18)

DNS 實戰:

-- Master DNS(續)

„ 關於設定檔:

options {

directory "/var/named";

allow-query { any; };

allow-transfer { none; }; // 如果需要 slave ,這裡要寫對!

};

zone "." {

type hint;

file "named.root";

};

zone "localhost" { type master;

file "named.localhost";

};

zone “0.0.127.in-addr.arpa” { type master;

file "named.127.0.0";

(19)

DNS 實戰:

-- Master DNS(續)

„ 關於設定檔:(續)

// 定義出我自己的這一組正反解設定!

zone “linux.site” { type master;

file “named.linux.site";

};

zone "1.168.192.in-addr.arpa" { type master;

file "named.192.168.1";

};

(20)

DNS 實戰:

-- Master DNS(續)

„ 關於 “hint” 這個 type 的 zone file

„ 記錄的是最頂層 root (.) 主機的對應;

„ 該檔案由 Network Information Centre (NIC) 維護:

„ 網址:ftp://rs.internic.net/domain/named.root

„ 關於 “master” 這個 type 會用到的參數:

„ SOA:該 zone file 的相關重要參數。後面接主機、email 及五個數字

„ (Serial, refresh, retry, expire, minimum.)

„ @ :代表這個 zone (在 named.conf 設定的名稱)

„ $TTL “秒” :多少秒的 cache ?

„ NS :DNS 主機的設定

„ A :對應的 IP

„ CNAME :暱稱、別名

„ . :有沒有 . 代表要不要接 zone name!!!

„ PTR:主機名稱的對應(用在反解)。

(21)

DNS 實戰:

-- Master DNS(續)

„ 設定 named.localhost 正解檔

$TTL 600

@ IN SOA localhost. root.localhost. ( 2005071501

28800 14400 720000 86400 )

; 開始設定正解的資訊內容:

@ IN NS localhost.

localhost. IN A 127.0.0.1

(22)

DNS 實戰:

-- Master DNS(續)

„ 設定 named.127.0.0 反解檔

$TTL 600

@ IN SOA localhost. root.localhost. ( 2005071501

28800 14400 720000 86400 )

; 開始設定正解的資訊內容:

@ IN NS localhost.

1 IN PTR localhost.

(23)

DNS 實戰:

-- Master DNS(續)

„ 設定 named.linux.site 正解檔

$TTL 600

@ IN SOA teacher.linux.site. root.teacher.linux.site. ( 2005071501 ; Serial

28800 ; Refresh 14400 ; Retry 720000 ; Expire 86400 ) ; minimum

; 主機的設定參數部分

@ IN NS teacher.linux.site.

@ IN MX 10 teacher.linux.site.

teacher IN A 192.168.1.231

teacher IN TXT "The teachers DNS server"

vbird IN CNAME teacher

www IN CNAME teacher.linux.site.

class201 IN A 192.168.1.201

(24)

DNS 實戰:

-- Master DNS(續)

„ 設定 named.192.168.1 反解檔

$TTL 600

@ IN SOA teacher.linux.site. root.teacher.linux.site. ( 2005071501 ; Serial

28800 ; Refresh 14400 ; Retry 720000 ; Expire 86400 ) ; minimum

; 主機的設定參數部分

@ IN NS teacher.linux.site.

231 IN PTR teacher.linux.site.

201 IN PTR class201.linux.site.

(25)

DNS 實戰:

-- Master DNS(續)

„ 重新啟動 named 服務

„ /etc/init.d/named restart

„ 查閱是否成功?

„ netstat -tlunp

„ /var/log/messages

„ /etc/resolv.conf 設定成為自己的 DNS 主機 IP;

„ 利用 nslookup 查詢一下資訊是否正確?!

(26)

DNS 實戰:

-- Master DNS(續)

„ 關於允許 slave 主機的更新要求:

„ named.conf 需要加入:

„ allow-transfer { 192.168.xx.xx; };

„ 在 slave 主機的 zone file 不需要設定,其 named.conf 設定的 zone file 為:

zone “linux.site” in { type slave;

file “named.linux.site”

master { 192.168.1.231; };

};

// 會主動的建立起 named.linux.site

// 需要視 master DNS 的 serial 數字來更新!

(27)

Client query…

„ 需要修改 /etc/reslov.conf

„

可以設定多達 3 部以上的 DNS 主機

„ 需要確認 /etc/nsswitch.conf 的 hosts 設定項;

„ 可利用指令:

„ host

„ nslookup

„ set type=any (mx…..)

„ dig @dnsserver computername type

„ type 有 ns, mx, any 等等

(28)

練習

„ Master DNS 設定:

„ 將剛剛課堂上建立的所有 zone file 刪除

„ 新增一個 domain name 為 lccnet.site

„ 每位同學的主機名稱為 lcc201…lcc230

„ 設定完畢與同學檢討

„ Slave DNS 設定:

„ 將上一題的 zone file 刪除;

„ 以老師指定的某位同學的 DNS 為 Master 建立 slave DNS 主 機!

Figure

Updating...

References

Related subjects :