DNS 伺服器基礎 一、DNS簡介 DNS(Domain Name System,功能變數名稱系統)是網際網路的一項服務; DNS 是將功能變數名稱和IP地址相互映射的一個分散式資料庫; DNS 是一種應用層協議,使用UDP和TCP的53埠; 1、DNS域命名空間 DNS域命名空間是一種層次結構,一般可分為根域、頂 ...
DNS 伺服器基礎
一、DNS簡介
DNS(Domain Name System,功能變數名稱系統)是網際網路的一項服務;
DNS 是將功能變數名稱和IP地址相互映射的一個分散式資料庫;
DNS 是一種應用層協議,使用UDP和TCP的53埠;
1、DNS域命名空間
DNS域命名空間是一種層次結構,一般可分為根域、頂級域、二級域、子域以及主機名;
1)根域
使用“.”表示,位於域命名空間層次結構的最高層;
目前分佈於全世界的根伺服器只有13台,全部由Internet網路信息中心(InterNIC)管理,在根域伺服器中只保存了其下層的頂級域的DNS伺服器名稱和IP地址對應關係;
2)頂級域(TLD,Top Level Domain)
頂級域位於根域下層,可以分為兩類:組織域(.com,.net,.org,.gov,.edu,.mil等)和國家域(.iq,.tw,.hk,.jp,.cn等);
3)二級域
二級域位於頂級域下層,是指為了在Internet上使用而註冊到個人或企事業單位的功能變數名稱;
4)子域
子域是根據具體情況從二級域中按部門或地理位置創建;
5)主機名
位於DNS域命名空間的最低層,主要指電腦的主機名;
註意:FQDN(Full Qualified Domain Name,完全合格功能變數名稱)包括功能變數名稱和主機名;
2、DNS名稱解析方式
1)正向解析:由功能變數名稱查找IP地址;
2)反向解析:由IP地址查找功能變數名稱;
註意:二者的命名空間不在同一個空間,不是同一棵樹,因此也不是同一個解析庫;
3、DNS查詢
1)遞歸查詢
當DNS伺服器接收到查詢請求時,不論成功或失敗,都會做出對應的響應(發生在DNS客戶端與DNS伺服器之間);
2)迭代查詢
DNS伺服器根據自己的高速緩存或區域的數據,以最佳結果響應;如果伺服器無法解析,它可能返回一個指針;指針指向下級功能變數名稱的DNS伺服器,繼續該過程,直到找到擁有所查詢名字的DNS伺服器,或知道出錯、超時為止(發生在DNS伺服器之間);
4、一次完整的DNS查詢過程
Client----->hosts文件----->DNS Local Cache----->DNS Server (recursion,遞歸)----->
- 若為自己負責解析的域:直接查詢資料庫並返回答案;
- 若不是自己負責解析的域:Server Cache----->iteration(迭代)
5、解析答案
- 肯定答案
- 否定答案:不存在查詢的鍵,因此,不存在與之對應的值;
- 權威答案:由直接負責的DNS伺服器返回的答案;
- 非權威答案
二、DNS伺服器的類型
負責解析至少一個域:
- 主DNS伺服器
- 輔助DNS伺服器
不負責域解析:
- 緩存DNS伺服器
1)主-輔DNS伺服器
- 主DNS伺服器:維護所負責解析的域資料庫的那台伺服器,讀寫操作均可進行;
- 輔助DNS伺服器:從主DNS伺服器或其他的從DNS伺服器那裡“複製”一份解析庫,但只能進行讀操作;
2)“複製”操作的實現方式
- 序列號:serial,也即是資料庫的版本號;主伺服器資料庫內容發生變化時,其版本號遞增;
- 刷新時間間隔:refresh,從伺服器每次到主伺服器檢查序列號更新狀況;
- 重試時間間隔:retry,從伺服器從主伺服器請求同步解析庫失敗時,再次發起嘗試請求的時間間隔;
- 過期時長:expire,從伺服器始終聯繫不到主服務時,多久之後放棄從主伺服器同步數據,並停止提供服務;
- 否定答案的緩存時長:negative answer ttl;
註意:主伺服器資料庫發生變化時,主伺服器會“通知”從伺服器隨時更新數據;
3)區域傳送
- 全量傳送:axfr,傳送整個資料庫;
- 增量傳送:ixfr,僅傳送變化的數據;
註意:區域(zone)和域(domain)的區別:
區域為物理概念,域為邏輯概念;
如bruce.com域包括正向解析庫(FQDN--->IP)和反向解析(IP--->FQDN),每個解析庫即為一個解析區域;
三、BIND 簡介
BIND(Berkeley Internet Name Domain)是由伯克利大學研發的,是當前互聯網上最長使用的DNS伺服器軟體,現在由ISC(Internet Systems Consortium)負責開發與維護;
1、bind 程式包
- bind:提供dns server程式以及幾個常用的測試程式;
- bind-utils:bind客戶端程式集,例如dig,host,nslookup等;
- bind-libs:被bind和bind-utils包中的程式共同用到的庫文件;
- bind-chroot:選裝,讓named運行於jail模式下;
註意:
- dns:協議;
- bind:dns協議的一種軟體實現 ;
- named:bind程式運行的進程名;
bind 程式安裝完成後,預設即可作為緩存名稱伺服器使用;
2、bind 配置文件
1)bind 的主配置文件 /etc/named.conf
主配置文件格式:
- 全局配置段 options {...}
- 日誌配置段 logging {...}
- 區域配置段 zone {...}:配置那些由本機負責解析的區域或轉發的區域;
註意:每個配置語句必須以分號結尾;
2)bind 的區域解析庫文件
bind 的解析庫文件在 /var/named/ 目錄下,一般文件名 ZONE_NAME.zone
註意:
a. 一臺DNS伺服器可以同時為多個區域提供解析;
b. 必須要有根區域解析庫文件 named.ca;
c. 還應該有localhost和127.0.0.1兩個區域解析庫文件,正向的為named.localhost,反向的為named.loopback;
3)資源記錄(Resource Record,簡稱RR)
資源記錄類型有:A、AAAA、PTR、SOA、NS、CNAME、MX;
- SOA:Start Of Authority,起始授權記錄;一個區域解析庫有且只有一個SOA記錄,且必須放在第一條;
- NS:Name Service,功能變數名稱服務記錄;一個區域解析庫可以有多個NS記錄,其中一個為主記錄;
- A:Address,地址記錄;FQDN--->IPv4;
- AAAA:地址記錄;FQDN--->IPv6;
- CNAME:Canonical Name,別名記錄;
- PTR:Pointer;IP--->FQDN;
- MX:Mail eXchanger,郵件交換器;有優先順序,為0~99,數字越小優先順序越高;
資源記錄的定義格式:
name [TTL] IN RR_TYPE value
a. SOA
name:當前區功能變數名稱稱,例如“bruce.com.”或“2.3.4.in-addr.arpa.”;
value:有多部分組成:
- 當前區域的區功能變數名稱稱,也可以使用主DNS伺服器名稱;
- 當前區域管理員的郵箱地址,但地址中不能使用@符號,一般用.代替;
- 主從服務協調屬性的定義以及否定答案的TTL;
示例:
1 bruce.com. 86400 IN SOA bruce.com. admin.bruce.com.( 2 2017010801 ;seial 3 2H ;refresh 4 10M ;retry 5 1W ;expire 6 1D ;negative answer ttl 7 )
b. NS
name:當前區域的區功能變數名稱稱;
value:當前區域的某DNS伺服器的名稱,如ns.bruce.com.;
示例:
1 bruce.com. 86400 IN NS ns1.bruce.com. 2 bruce.com. 86400 IN NS ns2.bruce.com.
註意:一個區域可以有多個ns記錄;
c. MX
name:當前區域的區功能變數名稱稱;
value:當前區域某郵件交換器的主機名;
示例:
1 bruce.com. IN MX 10 mx1.bruce.com. 2 bruce.com. IN MX 20 mx2.bruce.com.
註意:MX記錄可以有多個,但每個記錄的value之前應該有一個數字表示其優先順序;
d. A
name:某FQDN,如www.bruce.com.;
value:某IPv4地址;
示例:
1 www.bruce.com. IN A 1.1.1.1 2 www.bruce.com. IN A 1.1.1.2 3 bbs.bruce.com. IN A 1.1.1.1
e. AAAA
name:FQDN;
value:IPv6;
f. PTR
name:IP地址,有特定格式,即IP地址反過來寫,而且需加特定尾碼;如1.2.3.4的記錄應該寫為4.3.2.1.in-addr.arpa.;
value:FQDN;
示例:
1 4.3.2.1.in-addr.arpa. IN PTR www.bruce.com.
g. CNAME
name:FQDN格式的別名;
value:FQDN格式的正式名稱;
示例:
1 web.bruce.com. IN CNAME www.bruce.com.
註意:
- TTL可以從全局繼承;
- @表示當前區域的名稱;
- 相鄰的兩條記錄其name相同時,後面的可以省略;
- 對於正向區域來說,各MX、NX等類型記錄的value為FQDN,此FQDN應該有一個A記錄;
四、DNS 工具
1、DNS 排錯工具
1)rndc
rndc工作在TCP的953埠,預設監聽於127.0.0.1地址,因此僅允許本地使用;
1 rndc status 2 rndc flush 3 rndc reload
2)named-checkconf
1 named-checkconf [/etc/named.conf]
3)named-checkzone
1 named-checkzone [ZONE_NAME] [ZONE_FILE]
2、DNS 測試工具
1)dig
註意:dig用於測試DNS系統,因此不會查詢hosts文件;
1 dig [query options] [-t RR_TYPE] name [@SERVER] 2 query options: 3 +[no]trace:跟蹤解析過程; 4 +[no]recurse:進行遞歸解析; 5 6 dig -x IP 7 反向解析測試 8 9 dig -t axfr DOMAIN [@server] 10 模擬完全區域傳送
2)host
1 host [-t RR_TYPE] name [server]
3)nslookup
1 nslookup [options] [name] [server] 2 3 交互模式 4 nslookup> 5 server IP:以指定IP為DNS伺服器進行查詢; 6 set q=RR_TYPE:要查詢的資源記錄類型; 7 name:要查詢的名稱;