DNS原理
現有的網絡通訊大部分是基於TCP/IP的,而TCP/IP是基於IP地址的,所以計算機在網絡上進行通訊時只能識別如“202.96.134.133”之類的IP地址,而不能認識域名。我們很難記住10個以上IP地址的網站,所以我們訪問網站時,更多的是在瀏覽器地址欄中輸入域名,就能看到所需要的頁面,這是因爲有一個叫“DNS服務器”的計算機自動把我們的域名“翻譯”成了相應的IP地址,然後調出IP地址所對應的網頁。
DNS and BIND
什麼是DNS?
DNS(Domain Name System)是“域名系統”的英文縮寫,是一種組織成域層次結構的計算機和網絡服務命名系統,它用於TCP/IP網絡,DNS基於C/S(Client/Server,客戶機/服務器)模式,因而分爲Client和Server兩種角色。使用53/udp(現在正在使用), DNS: 53/tcp ;Client扮演詢問的角色,也就是向Server詢問一個Domain Name,而Server必須要回答此Domain Name所對應的真正IP地址。
BIND:BekerleyInternat Name Domain ;ISC (www.isc.org)
DNS
TCP: 面向連接的協議;
UDP: User Datagram Protocol,無連接協議
本地名稱解析配置文件:hosts
/etc/hosts
%WINDOWS%/system32/drivers/etc/hosts
格式如下:
1.1.1.1www.magedu.com
1.2.2.2www.apple.com
DNS名稱空間
Internet 上的DNS域名稱採用層次結構,如同一棵倒置的樹。
根域爲,一個名爲 InterNIC 的機構既負責劃分全世界的IP地址範圍,又負責分配Internet 上的域名稱結構。根域DNS服務器只負責處理一些頂級域名DNS服務器的解析請求。
頂級域,常見的三類頂級域:1, 組織域(com,edu, mil, gov, net, org, int)、2, 國家域(.cn, .iq, .hk, .tw)、3, 反向域
二級域; 是在頂級域下劃分的(用於公司或個人申請使用)
子域;子域下面可以繼續劃分子域,或者接主機。
DNS查詢過程
如訪問www.123.com
Dns查詢類型
遞歸查詢:一般客戶機和服務器之間屬遞歸查詢,即當客戶機向DNS服務器發出請求後,若DNS服務器本身不能解析,則會向另外的DNS服務器發出查詢請求,得到結果後轉交給客戶機;(客戶端只需要發出一次查詢請求就能得到最終答案的插敘)
迭代查詢:一般DNS服務器之間屬迭代查詢,如:若DNS2不能響應DNS1的請求,則它會將DNS3的IP給DNS2,以便其再向DNS3發出請求; (服務器在發出一個查詢請求時,有可能得到一個最終答案;也有可能得到一個參考答案,通常得到一個結果需要多次發起的查詢)
名稱服務器:域內負責解析本域內的名稱的主機;
dns解析類型:
正向解析: Name --> IP ;又主機名解析爲IP地址
反向解析: IP --> Name : 又IP地址解析爲主機名
注意:正反向解析是兩個不同的名稱空間,是兩棵不同的解析樹;
DNS服務器的類型:
主DNS服務器
輔助DNS服務器
緩存DNS服務器
轉發器
主DNS服務器:維護所負責解析的域內解析庫服務器,是該域的權威服務器;解析庫由管理Y員維護;
從DNS服務器:從主DNS服務器或其它的從DNS服務器那裏“複製”(區域傳遞)一份解析庫;
BIND的安裝配置:
dns服務,程序包名bind,程序名named
1 . bind相關程序包:
bind: 提供域名服務的主程序和相關文件
bind-libs: 提供bind和bind-utils所需公共的共享庫
bind-utils: 提供dns的測試工具 如:dig,host,nslookup
bind-chroot: 使bind可以在一個chroot的模式下運行.也就是說,bind運行時的/(根)目錄,並不是系統真正的/
例如 : bind-chroot:/var/named/chroot/
2 . bind相關配置文件:
服務腳本:/etc/rc.d/init.d/named
主配置文件:/etc/named.conf,/etc/named.rfc1912.zones, /etc/rndc.key
解析庫文件:/var/named/ZONE_NAME.ZONE
注意:
(1)一臺物理服務器可同時爲多個區域提供解析;
(2) 必須要有根區域文件;named.ca
(3)應該有兩個(如果包括ipv6的,應該更多)實現localhost和本地迴環地址的解析庫;
rndc: remote name domain controller,默認與bind安裝在同一主機,且只能通過127.0.0.1來連接named進程;提供輔助性的管理功能;
默認使用 953/tcp ;/etc/rndc.key
用於連接主機的預共享密鑰
3 . 安裝bind
[root@dns1 ~]# yum installbind –y
4 . 查詢bind軟件包版本
[root@dns1 ~]# rpm -q bind
bind-9.8.2-0.30.rc1.el6.x86_64
5. . 主配置文件/etc/named.conf
全局配置:options{ }
日誌子系統配置:logging{ }
區域定義:本機能夠爲哪些zone進行解析,就要定義哪些zone;
示例 : zone "ZONE_NAME" IN { }
注意:任何服務程序如果期望其能夠通過網絡被其它主機訪問,至少應該監聽在一個能與外部主機通信的IP地址上;
默認啓動named 只會監聽在tcp和udp的127.0.0.1的53端口
6. 啓動named
[root@dns1 ~]#/etc/init.d/named start
7. 查看bind監聽的套接字 (默認情況下named會監聽在127.0.0.1 的tcpupd 53端口)
[root@dns1 ~]# ss -ltunp|grep 53
udp UNCONN 0 0 127.0.0.1:53 *:*
users:(("named",3444,512))
udp UNCONN 0 0 ::1:53 :::*
users:(("named",3444,513))
tcp LISTEN 0 3 ::1:53 :::*
users:(("named",3444,21))
tcp LISTEN 0 3 127.0.0.1:53 *:*
users:(("named",3444,20))
tcp LISTEN 0 128 ::1:953 :::*
users:(("named",3444,23))
tcp LISTEN 0 128 127.0.0.1:953 *:*
users:(("named",3444,22))