DNS 詳解

1、DNS 簡介

DNS的名字很意思,服務名稱叫dns,軟件包名叫bind,執行程序叫named。
DNS(Domain Name System,域名系統),萬維網上作爲域名和IP地址相互映射的一個分佈式數據庫,能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。通過域名,最終得到該域名對應的IP地址的過程叫做域名解析(或主機名解析)。DNS協議運行在UDP協議之上,使用端口號53。在RFC文檔中RFC 2181對DNS有規範說明,RFC 2136對DNS的動態更新進行說明,RFC 2308對DNS查詢的反向緩存進行說明。(百度百科)

DNS是一個互聯網基礎服務,網絡的接入對於它也是關鍵性問題,需要有光纜連接與全球。海底光纜是國際互聯網的骨架。光纜的多少,代表一國與互聯網的聯繫是否緊密。有人利用微軟的Bing地圖,以及wikipedia的數據,做出了一幅互動式的世界海底光纜分佈圖。

DNS 詳解

全世界一共有13臺根DNS服務器。1個爲主根服務器,放置在美國。其餘12個均爲輔根服務器,其中9個放置在美國,歐洲2個,位於英國和瑞典,亞洲1個,位於日本。
DNS 詳解

域名層次結構
DNS 詳解

域名註冊
代理商:萬網, 新網,godaddy

1.1名詞解釋

域名空間 樹的最大深度不得超過127層,每個節點最多可以存儲63個字符

FQDN 完全正式域名/完全合格域名,根域、頂級域、二級域、子域 域名採用層次化的方式進行組織,每一個點代表一個層級表示出其相對於DNS根域的位置。

FQDN命名規則 長度不能超過256字節 允許【 a-z A-Z 0-9 - . 】 域名不區分大小寫

  • com 商業公司
  • org 組織/協會
  • net 網絡服務
  • edu 教育
  • gov 政府
  • mil 軍事

正向解析 查找域名對應IP的過程。

反向解析 查找IP對應域名的過程。

解析器 即resolver,處於DNS客戶端的一套系統,用於實現正向解析或者反向解析。

Linux DNS服務器

  • 主DNS服務器
  • 次DNS服務器
  • 第三DNS服務器

Windows DNS服務器

  • 主DNS服務器
  • 備用DNS服務器

    完整的查詢請求經過的流程:
    Client --> hosts文件 --> DNS Service
    Local Cache --> DNS Server recursion--> Server Cache --> iteration -->
    DNS 詳解

建議:
一般我們建議客戶端DNS地址寫一個,一是因爲慢的DNS地址在前面會影響解析效率,不如直接找一個靠譜的,就寫一個就可以了。即便寫了多個DNS地址,第一個DNS服務器解析不到,絕對不會使用第二個DNS服務器。當第一個DNS服務器不在線的時候或找不到的時候,纔會找第二個DNS服務器,不是解析不到是找不到的時候。所以要把最快的DNS服務器放在最前面

遞歸查詢

  • 一般客戶機和服務器之間屬遞歸查詢,即當客戶機向DNS服務器發出請求後,若DNS服務器本身不能解析,則會向另外的DNS服務器發出查詢請求,得到結果後轉交給客戶機

迭代查詢(反覆查詢)

  • 一般DNS服務器之間屬迭代查詢,如:若DNS2不能響應DNS1的請求,則它會將DNS3的IP給DNS2,以便其再向DNS3發出請求

公共DNS
公共DNS屬於遞歸DNS。其典型特徵爲對外一個IP,爲所有用戶提供公共的遞歸查詢服務。

權威DNS
處於DNS服務端的一套系統,該系統保存了相應域名的權威信息。權威DNS即通俗上“這個域名我說了算”的服務器。

2、DNS 服務

DNS主要解決兩方面的問題:域名本身的增刪改查以及域名到IP如何映射。
程序包:
bind 【主包服務程序】
bind-libs 【通用庫文件】
bind-utils 【客戶端工具】

DNS服務器的類型:

  • 主域名服務器(master server)
  • 輔助域名服務器(slave server)
  • 緩存域名服務器(caching only server)

2.1安裝dns服務

配置好yum源,用yum安裝bind軟件包
rpm包安裝
# yum install -y bind bind-utils

源碼安裝

            # tar
            # cd
            # groupadd -r -g 53 named
            # useradd -r -u 53 -g 53 named
            # ./configure --prefix=/usr/local/bind9 --sysconfdir=/etc/named/ --disable-ipv6 --disable-chroot --enable-threads
            # make
            # make install

2.2、dns配置文件

資源記錄
DNS 詳解

配置樣例:
DNS 詳解

DNS 詳解

緩存名稱服務器的配置:
監聽外部地址即可
緩存服務器應用場景,內外網帶寬較低時會用到

主從複製:
1、應該爲一臺獨立的名稱服務器
2、主服務器的區域解析庫文件中必須有一條NS記錄是指向從服務器
3、從服務器只需要定義區域,而無須提供解析庫文件;解析庫文件應該放置於/var/named/slaves/目錄中
4、主服務器得允許從服務器作區域傳送; 【區域傳送可獲得所有記錄數據,比較危險注意權限設置】
5、主從服務器時間應該同步,可通過ntp進行
6、bind程序的版本應該保持一致;否則,應該從高,主低
DNS 詳解

轉發服務器:
必須允許遞歸查詢轉發列表若爲多個,則一次嘗試,直到獲得信息
被轉發的服務器需要能夠爲請求者做遞歸,否則,轉發請求不予進行

技巧
轉發列表配置精簡
避免鏈接轉發器
減少轉發器負荷
避免轉發器配置錯誤

2.3 dns啓動

# /etc/init.d/named start
# chkconfig named on

2.4 檢查命令

檢查主配置文件:# named-checkconf
檢查區域配置文件:# named-checkzone "redone.com" /var/named/redone.com.zone
檢查DNS解析命令
nslookup www.xxx.com
dig -t A www.xxx.com
dig www.xxx.com
dig -x 114.114.114.114
dig +trace www.baidu.com
dig -t axfr 區域名稱 @server 模擬完全區域傳送
DNS 詳解
host www.xxx.com

4、DNS域名安全

安全事件
已有30年的歷史,DNS仍然是整個互聯網中最脆弱的一環。下面盤點一下近年來比較嚴重的DNS安全事件。
2009年5月19日南方六省斷網事件。一起由於遊戲私服私鬥打掛dnspod,殃及暴風影音域名解析,然後進一步殃及電信local dns,從而爆發六省大規模斷網的事故。事件影響深遠。
2010年1月12日百度域名劫持事件。baidu.com的NS記錄被伊朗網軍(Iranian Cyber Army)劫持,然後導致www.baidu.com無法訪問。事件持續時間8小時,是百度成立以來最嚴重的故障事件,直接經濟損失700萬人民幣。
2013年5月4日DNS劫持事件。由於主流路由器廠商安全漏洞而導致的全網劫持事件,號稱影響了800萬用戶。
2013年8月25日CN域被事件。cn域dns受到DoS而導致所有cn域名無法解析事故。
2014年1月21日全國DNS故障。迄今爲止,大陸境內發生的最爲嚴重的DNS故障,所有通用頂級域

域名服務器的安全相關

  • acl控制語句
  • 普通用戶身份運行named
  • chroot環境
  • TSIG技術
  • DNSSEC技術

    5、總結

    互聯網用到的2個關鍵協議:route、dns,前者解決了主機的連接問題,後者解決了主機是誰的問題,提供了短小易記的方式。
    DNS 詳解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章