歡迎您光臨本站 註冊首頁

鳥哥的Linux學習筆記DNS伺服器

←手機掃碼閱讀     火星人 @ 2014-03-29 , 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"來表示反解。

[火星人 ] 鳥哥的Linux學習筆記DNS伺服器已經有688次圍觀

http://coctec.com/docs/linux/show-post-202550.html