什麼是DNS?
DNS:Domain Name Service 是一種應用層協議
用於ip地址和域名之間轉換
使用(TCP/UDP) 53端口服務
DNS域名稱
域名系統作爲一個層次結構和分佈式數據庫,是一個倒置樹形結構,包含各種類型的數據,包括主機名和域名。DNS數據庫中的名稱形成一個分層樹狀結構稱爲域命名空間。域名包含單個標籤分隔點,例如:im.qq.com。
完全限定的域名 (FQDN) 唯一地標識在 DNS 分層樹中的主機的位置,通過指定的路徑中點分隔從根引用的主機的名稱列表。 下圖顯示與主機稱爲 im 內 qq.com DNS 樹的示例。 主機的 FQDN 是 im.qq.com。
DNS 域的名稱層次結構
DNS域名稱空間的組織方式
按其功能命名空間中用來描述 DNS 域名稱的五個類別的介紹詳見下表中,以及與每個名稱類型的示例。
DNS 和 Internet 域
互聯網域名系統由名稱註冊機構負責維護分配由組織和國家/地區的頂級域在 Internet 上進行管理。 這些域名按照國際標準 3166。
一些很多現有縮寫,保留以供組織中,以及兩個字母和三個字母的國家/地區使用的縮寫使用下表所示。一些常見的DNS域名稱如下圖:
資源記錄
DNS 數據庫中包含的資源記錄 (RR)。 每個 RR 標識數據庫中的特定資源。我們在建立DNS服務器時,經常會用到SOA,NS,A之類的記錄,在維護DNS服務器時,會用到MX,CNAME記錄。
常見的RR見下圖:
DNS的工作方式:
反向解析
正向解析
反向解析:
反向解析即爲,將ip地址發送給DNS服務器,DNS服務器解析出匹配的域名返回。
一般用於郵件服務器中垃圾郵件的判定,比如你用 [email protected] 這個郵箱給我的郵箱 [email protected] 發了一封信。163郵件服務器接到這封信會查看這封信的信頭文件,這封信的信頭文件會顯示這封信是由哪個IP地址發出來的。然後根據這個IP地址進行反向 解析,如果反向解析到這個IP所對應的域名是name.com 那麼就接受這封郵件,如果反向解析發現這個IP沒有對應到name.com,那麼就拒絕這封郵件。
正向解析:
正向解析,將域名發送給DNS服務器,DNS服務器返回匹配的IP地址(暫不考慮遞歸和迭代),主機通過返回的IP地址進行訪問。
在DNS解析的過程中有2中模式:遞歸和迭代
迭代: 按照解析規則,主機首先將域名發送給根服務器(.),跟服務器根據對應的頂級域返回相應的DNS服務器地址,主機再向得到的DNS服務器地址,進行DNS解析申請,該主機繼續判斷應交給哪個更接近的DNS服務器,這樣層層迭代,直到找到域名的對應IP地址返回給主機。
遞歸: 主機將DNS請求發送給一個代理的服務器,該服務器進行迭代處理,得到結果返回給主機。從主機的角度,僅發送了一次,而後續的迭代操作由代理服務器完成。
DNS服務的實現,BIND
相關軟件包
bind-9.8.2-0.30.rc1.e16
bind-utils-9.8.2-0.30.rc1.e1l.x89_64
bind-chrot-9.3.3-7.el6
/var/named/ 存數據
BIND服務器端程序
主要執行程序: /usr/sbin/named
服務腳本: /etc/init.d/named
默認監聽端口:53
主配置文件:/etc/named.conf
保存DNS解析記錄的數據文件位於:
/var/named/
named.conf文件配置基礎:
options{}
listen-on {監聽ip}
directory 工作目錄
allow-query {允許查詢網段}
recursion 是否允許遞歸 yes|no
logging{}
file 日誌文件位置
zone{} 區域
在Centos6下進行BIND配置
正向配置:
第一步配置/etc/named.conf
options{ //函數中
listen-on port 53 { 192.168.1.104; };//默認端口,本機IP
.
.
allow-query {192.168.1.0/24; };//允許訪問的網段和掩碼
}
logging函數有關日誌,無需改動
其後需添加zone函數
zone "." IN {
type hint;
file "named.ca";
};
zone "openex27.com" IN {
type master; //hint|master|slave|forward
file "openex27/openex27.zone"; //zone文件相對路徑
};
第二步:
創建存放自建zone文件的文件夾
在該文件夾下創建並編輯相關zone文件
zone格式
首先設定SOA(Start Of Authority,授權信息開始)記錄
@代表本地網絡
$TTL 1D //TTL宏用於設置等待時間
@ IN SOA openex27.com. //區域地址 admin.openex27.com.//管理員郵件地址 (
2009021901 ;更新序列號
3H ;刷新時間
15M ;重試延時
1W ;失效時間
1D ;無效地址解析記錄的默認緩存時間 )
IN NS ns1.openex27.com.
ns1 IN A 192.168.1.104
www IN A 192.168.1.104 //實現模擬負載均衡
www IN A 192.168.1.105 //A主機
web IN CNAME www //別名
第三步:
重啓BIND服務,/etc/init.d/named restart
service named restart
測試:
dig -t NS openex27.com @192.168.1.104
反向配置:
部分配置同正向配置,此處僅增量添加
第一步配置:/etc/named.conf
添加反向解析的zone
注意:zone名要使用相反取名
例如:
zone "1.168.192.in-addr.arpa" IN {
type master;
file "openex27/1.168.192.arpa";
};
第二步配置:創建相關的zone文件
文件名仍需相反取名
第三步:測試
dig -x 待解析ip @DNS服務器地址
主從域名服務器:
主服務器:
編輯 /etc/named.conf
修改需要傳遞給從服務器的zone區域
在allow-transfer中添加從服務器地址
從服務器:
編輯 /etc/named.conf
修改或添加需要從主服務器接受的zone
type爲 slave
masters {主服務器IP}
子域授權
子域授權,在原有的域上再劃分出一個小的區域並指定新DNS服務器。在這個小的區域中如果有客戶端請求解析,則只要找新的子DNS服務器。這樣的做的好處可以減輕主DNS的壓力,也有利於管理。這次只做正向區域的子域授權。
第一步:
在父域服務器上,編輯對應區域的zone文件
在其中添加子域信息
ops IN NS ns1.ops
ns1.ops IN A 192.168.1.105
第二步:
在子域服務器中編輯/etc/named.conf
添加該子域zone信息
創建對應的ops目錄以及ops.openex27.com.zone文件
編輯之
第三步
重啓服務或重讀服務配置文件
service named restart
rndc reload
測試
dig -t A mail.ops.openex27.com @192.168.1.104
注意!若dig測試沒有結果可能是/etc/named.conf中options函數下
這三個選項爲yes,改成no,取消安全認證便可以測試
分離解析
來自不同地址的客戶機請求解析同一域名時,爲其提供不同的解析結果
構建分離解析:
第一步:
在DNS服務器的/etc/named.conf
在其中添加view
第二步:
創建對應的zone文件夾,在其中創建zone文件
openex27/openex27.com.zone.lan
openex27/openex27.com.zone.wan
保存退出
第三步:
重啓named服務
第四部測試:
在不同的網段測試www.openex27.com所返回的地址