歡迎您光臨本站 註冊首頁

鳥哥的Linux學習筆記 DNS伺服器相關知識

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
   

1.MAC<--ARP-->IP

IP<---DNS-->DOMAIN

 

2.網路傳送資料的方法並不是只有TCP/IP協議,比如在LAN里經常用到的可能是NetBIOS

 

3.DNS的由來

==>為了解決網路傳送資料時IP地址難以記憶的問題,就有了利用某些特定的檔案將主機名稱與IP對應起來,這樣就可以通過主機名稱來取得該主機的IP了,也就可以完成資料的傳送了。

==>可是主機名稱與IP的對應無法自動與所有的電腦內更新,且當IP數量太多時,該檔案就會大到不像話,也就更不利於主機同步化。

==>柏克萊大學發展出了一套階層式管理主機名稱對應IP的系統,稱之為BIND(Berkeley Internet Name Domain)

==>進而發展成為全世界使用最廣泛的域名系統DNS

 

4.DNS與BIND的區別

DNS——一種主機名稱與IP的解析協議

BIND——提供DNS服務的套件

 

5./etc/hosts

ping -c 5 localhost

windows下面對應的文件為:c:\i386\hosts

 

這個會加快IP的搜尋速度

可以嘗試一下

 

6./etc/hosts與DNS系統區別:

/etc/hosts——直接在Client端的檔案內輸入主機名稱對應的IP來查詢

DNS系統——利用額外的DNS服務,讓client端可以通過名稱解析來取得目的地主機的IP

 

7.Domain Name與Hostname的區別:

Domain Name——

Hostname——

我們已經知道DNS系統是個分層次的系統,所以在每一層上域名與主機名是不一樣的

如www.yahoo.com中域名為yahoo.com,主機名為www

又如yahoo.com中域名為.com,主機名為yahoo

 

8.DNS架構

每個上一層的DNS主機,所記錄的資訊,其實只有其下一層的主機名稱而已!!

DNS樹狀目錄

root

____________________________________________________

| | | | | | |

com edu gov mil org cn 其他國家

|

___________________________________________________

| | | | |

com.cn edu.cn gov.cn mil.cn org.cn

|

_____________________________________________

| | |

sina.com.cn yahoo.com.cn others.com.cn

 

com: 商業、公司

org: 組織、機構

edu: 教育

gov: 政府

net: 網路、通訊

mil: 軍事

 

9.DNS的搜尋流程

DNS是以類似樹狀目錄的形態來管理域名的,每一部DNS主機只管理下一層DNS主機的域名解析

至於下層的下層,則授權給下層的DNS主機來管理

 

DNS伺服器工作原理

客戶端linux主機利用/etc/resolv.conf中提供的DNS伺服器的IP來進行查詢

DNS伺服器會這樣做:

假設要訪問

(1) 先看本身有沒有記錄

(2) 向最頂層查詢

向最頂層的.(root)這部主機來查詢.(root)的下一層.cn

(3) 向第二層查詢

就到.cn查詢,找到.edu.cn

(4) 接著一步一步下來

(5) 記錄暫存記憶檔

查找要找的IP后,就將,對應的IP信息在自己的暫存記憶檔中保存起來

這個暫存檔是有時間性的,當過了DNS設定記憶的時間(通常是24小時),該記憶就會被釋放

 

幾點注意:

a> 只有域名是經過上層合法的DNS主機設定的,才可以在INTERNET上被查詢到

b> 主機的暫存記憶檔,是有時間性的,所以當修改一個域名之後,可能要2~3天才能全面的啟用

c> 每一部可以記錄主機名稱與IP對應的DNS伺服器都可以隨意更動他自己的資料庫,注意,是他自己的

 

10.DNS使用的埠

cat /etc/services | grep domain

可以看到DNS使用的埠為53

通常進行DNS查詢時,是以UDP這個較快速的資料傳輸協議來查詢的,但若沒有查詢,會再次以TCP查詢。

所以啟動DNS的daemon(即named),會同時啟動TCP及UDP的53這個埠。

 

11.要讓你的主機名稱對應IP且讓Internet上的電腦都可以查詢的到,就需要:

(1) 上層DNS 授權讓你設定DNS主機,或者

(2) 直接請上層DNS主機來幫你設定

 

12.什麼是正解與反解?

(1) 正解

由主機名去尋找IP的程序稱為正解

(2) 反解

由IP去查詢得到主機名就稱為反解

(3) 區域(Zone)

一個正解或反解的設定就是一個zone

如,以鳥哥的vbird.idv.tw為例,一個域名的DNS設定檔里必需有

。hint(root)的設定

。vbird.idv.tw這個域名的正解設定

。localhost的正解設定(非必要)

。localhost的反解設定(非必要)

 

那麼就有四個zone

 

13.DNS server使用的是bind這個套件,他的主要參數檔是/etc/named.conf

 

14.查詢DNS是否安裝

(1)

# rpm -qa | grep bind

bind-utils-9.2.4-16.EL4 <==是用戶端搜尋主機名稱的相關指令

bind-9.2.4-16.EL4 <==DNS伺服器主程序

bind-chroot-9.2.4-16.EL4 <==將bind主程序關在家裡?

那個chroot即change to root,那個root代表的是根目錄

可以用該命令來將某個目錄指定為bind程序的根目錄,由於是根目錄,所以bind便不能離開該目錄。

CentOS默認將bind鎖在/var/named/chroot中

 

(2)

yum install bind

 

15.BIND的默認設定

/etc/named.conf ——設定檔

/etc/sysconfig/named ——是否啟動chroot及額外的參數,由這個檔案控制

/var/named/ ——資料庫檔案默認放置在這個目錄

/var/run/named ——named這去程序執行時默認放置pid-file在此目錄內

可通過查看/etc/sysconfig/named來查看chroot所指定的目錄

# vi /etc/sysconfig/named

ROOTDIR=/var/named/chroot

這樣bind的相關程序所需要的所有資料會是在:

/var/named/chroot/etc/named.conf

/var/named/chroot/var/named/zone_file1

/var/named/chroot/var/named/zone_file...

/var/named/chroot/var/run/named/...

不過,仍舊可以使用/etc/named.conf來設定你的DNS

因為系統會主動的幫你將/var/named/chroot/etc/named.conf鏈接到/etc/named.conf

 

16.DNS的master/slave架構

master——本身具有提供Internet查詢所需的資料

slave——

Cache-only——這種DNS主機沒有自己的資料庫,單純幫助Client端向外部的DNS主機要求資料而已。代理?

 

17.Cache-only單純的forward DNS主機設定

(1) 編輯主要設定檔 /etc/named.conf

a> 註釋用"//"

b> 每個段落之後要用";"結束

c> 實例:

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

[root@linux ~]# vi /etc/named.conf

// 雖然 CentOS 將這個檔案放置到 /var/named/chroot/etc 當中,

// 不過他很好心的幫我們作了個連結,所以你還是可以直接編輯這個檔案啦!

options {

directory "/var/named";

dump-file "/var/named/data/cache_dump.db";

statistics-file "/var/named/data/named_stats.txt";

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

forward only; //只允許 forward!

forwarders {

168.95.1.1; //我這裡使用 hinet 的 DNS !

139.175.10.20; //這個是 seednet 的 DNS !

};

};

include "/etc/rndc.key";

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

這裡要確認一下,pid-file的所有人必須是named這個user才行

[root@linux ~]# ls -ald /var/named/chroot/var/run/named

drwxrwx--- 2 named named 4096 Oct 12 11:48 /var/named/chroot/var/run/named

 

(2) 啟動named

# /etc/init.d/named start

 

(3) 觀察port的變化

並不一定啟動時成功就表明DNS成功了,還要來看一下port 53有沒有啟動

# netstat -utln

 

(4) 檢查/var/log/messages的信息

tail -n 15 /var/log/messages | grep named

Oct 16 15:08 linux named[76]: starting BIND 9.2.4 -u named -t /var/named/chroot <==成功啟動

(5) 客戶端測試

 

18.DNS伺服器小結:

a> 主要設定檔是/etc/named.conf

b> 每個正解、反解都需要一個檔案,而檔案的檔名是由/etc/named.conf所設定的

c> 目前的BIND程序已經進行chroot了,可以參考/etc/sysconfig/named

d> 當DNS查詢時,若本身沒有資料庫,則前往root(.)或forwarders主機查詢

e> DNS伺服器的架設需要上層DNS的授權才可以成為合法的DNS伺服器,否則只能是內部的

f> named是否啟動成功務必要查閱/var/log/messages內的信息

 

19.一個內部的DNS伺服器的架設案例

[目標及環境]

該DNS伺服器針對vbird.tsai這個域名來設計,並且對應的反解為192.168.1.0/24

另外還針對本機localhost以及127.0.0.1這個預設的領域來對應

當然還要包含最上層.(root)這個域名的主機名資料庫

所以,設定檔及正反解zone的資料庫檔案應該有:

(1) named.conf 設定檔

(2) named.vbird.tsai vbird.tsai的正解

(3) named.192.168.1 192.168.1.0/24的反解

(4) named.root .(root)的資料庫

(5) named.localhost localhost的正解

(6) named.127.0.0 127.0.0.1/24的反解

如果還想加入其他的域名,例如niki.tsai,那就再多一個資料庫正解檔案即可!

資料庫的對應:

操作系統與IP 對應主機名 說明

linux 192.168.1.254 linux.vbird.tsai 這部是主要的DNS伺服器,主要主機名為 www.vbird.tsai linux.vbird.tsai,其他的三個主機名

ftp.vbird.tsai 為主機別名

forum.vbird.tsai

linux 192.168.1.150 slave.vbird.tsai 主要作為slave DNS主機

winxp 192.168.1.100 winxp.vbird.tsai 某一部主機的IP與主機名對應

sun 192.168.1.200 sun.vbird.tsai 另一部主機

 

★/etc/named.conf的設定檔

a> 功能:

。規範DNS伺服器的使用許可權(可否查詢、forward與否、master/slave架構等)

。設定出zone(domain name)以及zone file的所在

。設定DNS本機管理界面以及其相關的key file

 

b> 注意:

在整體伺服器環境與使用許可權,主要是通過options {...}來設定的

 

c> 最簡單的規劃示例:

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

[root@linux ~]# vi /etc/named.conf

// 先定義出整個 DNS 伺服器的相關環境,包括查詢、檔案放置目錄等

options {

directory "/var/named";

dump-file "/var/named/data/cache_dump.db";

statistics-file "/var/named/data/named_stats.txt";

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

forwarders { 168.95.1.1; 139.175.10.20; };

allow-query { any; }; // 是否允許被查詢?當然要可以被查詢;

allow-transfer { none; }; // 是否允許傳送 zone ,預設不可

};

 

// 關於 DNS 伺服器的一些加密數據,先忽略過去先!

include "/etc/rndc.key";

 

// 關於 root (.) 的設定喔:

zone "." {

type hint; // 特殊的類別!專給 root (.) 用的

file "named.root"; // 就是檔名的定義啦!

};

 

// 關於本機 localhost 的正反解

zone "localhost" {

type master;

file "named.localhost";

};

zone "0.0.127.in-addr.arpa" {

type master;

file "named.127.0.0";

};

 

// 這裡規範出我們的 vbird.tsai 領域名

zone "vbird.tsai" {

type master;

file "named.vbird.tsai";

};

zone "1.168.192.in-addr.arpa" {

type master;

file "named.192.168.1";

};

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

 

d> options內的參數說明

設定值 意義

directory 指定zone file要放置在哪個目錄,與zone設定項目的file配合而成完整的檔名

dump-file 指定暫存資料記錄到哪個檔案

statistics-file DNS的一些統計資料寫入的檔案

pid-file 將named這個程序的PID記錄下來的一個檔案,這個檔案通常在named啟動、關閉時提供 正確的PID

forwarders

allow-query 是否允許用戶端的查詢,內容可以為any任何來源或IP或網段(IP/netmask)

allow-transfer 是否允許slave DNS整個域名資料的傳送,除非你有slave DNS伺服器,否則這裡不要 開放

e> zone內的參數說明

設定值 意義

type 主要類型有:master,slave及hint。其中,最上層.使用的是hint類型,然後master主 機用master,slave主機就用slave

file 就是zone file,完整的zone file放在哪裡:

[chroot_dir]/[options內的directory]/[file 設定值],所以說

root(.)設定檔就在:/var/named/chroot/var/named/named.root

反解zone 反解,必須要將IP反過來寫,並在最後面加上".in-addr.arpa"來表示反解。

(責任編輯:A6)



[火星人 ] 鳥哥的Linux學習筆記 DNS伺服器相關知識已經有965次圍觀

http://coctec.com/docs/net/show-post-68374.html