Linux網絡服務之DNS

  計算機網絡中,通過IP地址標識一臺主機,當兩臺主機通信的時候,就需要通過IP地址來建立聯繫。所以早期訪問一個WEB服務器,就得要輸入ip地址來訪問他。不過後來網絡上的網站越來越多,假如在我們百度的時候,都必須要輸入202.103.226.126這麼一大串數字,光記憶就很難了,而且有可能還會更換IP,太不方便了。於是乎,就有人設計出了一個可以將IP地址轉換成主機名(字符串)的東西,這就是DNS。DNS全稱爲Domain Name System(域名系統)。負責將主機名轉換爲IP地址(或者反之:將IP轉換爲主機名)。


  在DNS中有一個數據庫,裏面記錄着各種主機名和IP的對應關係。當你訪問一個主機名的時候,就先向DNS發起解析請求(對用戶而言是透明的),DNS將結果返回給瀏覽器,瀏覽器使用返回的IP來訪問這個網站。

  假如我們訪問www.baidu.com. 客戶端的解析大概是這樣的:

 客戶端將請求發給其上級DNS服務器A,並且跟A說"你告訴我www.baidu.com.的IP是什麼"。上級DNS服務器A一般是一個運營商緩存的服務器,它裏面並沒有主機的記錄,他一看自己不知道,於是乎就去找根,根看了www.baidu.com.後,他回覆A"我不知道www.baidu.com.的IP地址,  .com這個域被我委託給x.x.x.x管理了,你去問問它吧!"。A得到了.com的IP地址後,就去問.com說,"www.baidu.com.的IP是多少啊?",.com說"我不知道www.baidu.com.的IP,但是baidu.com.這個域我已經委託給x.x.x.x這個主機管理了,你去問它吧!",A得到了baidu.com.這個域的地址,就去問baidu.com.說"你知道www.baidu.com的IP是多少嗎?",baidu.com.說"我知道www.baidu.com.的IP地址,他的IP地址是x.x.x.x。"於是乎,A拿着結果告訴了客戶端,客戶端就訪問去了。

  從上面的過程我們可以發現一個問題,A向DNS發起了一次請求就拿到了結果,而他上級的DNS則經歷了很多過程。A向DNS這個過程我們稱作遞歸,而上級DNS到主機的具體解析我們稱作迭代。遞歸我們可以理解爲:我問A 1+1等於幾?你只需要告訴我結果(你知道或者不知道)就好了,其他的我不管。而迭代可以理解爲:A不知道1+1等於幾,A去問B,而B說我也不知道,但是C可能知道,你去問C,然後A又去問C,直到得到最終結果。


DNS的資源記錄有很多種,常用的有(轉自:http://bbs.51cto.com/thread-909189-1.html):

1,A記錄
A記錄也稱爲主機記錄,是使用最廣泛的DNS記錄,A記錄的基本作用就是說明一個域名對應的IP是多少,   它是域名和IP地址的對應關係,表現形式爲     www.contoso.com   192.168.1.1  這就是一個A記錄!A記錄除了進行域名IP對應以外,還有一個高級用法,可以作爲低成本的負載均衡的解決方案,比如說,www.contoso.com  可以創建多個A記錄,對應多臺物理服務器的IP地址,可以實現基本的流量均衡!

2,NS記錄
  NS記錄和SOA記錄是任何一個DNS區域都不可或缺的兩條記錄,NS記錄也叫名稱服務器記錄,用於說明這個區域有哪些DNS服務器負責解析,SOA記錄說明負責解析的DNS服務器中哪一個是主服務器。因此,任何一個DNS區域都不可能缺少這兩條記錄。NS記錄,說明了在這個區域裏,有多少個服務器來承擔解析的任務,
3,SOA記錄
  NS記錄說明了有多臺服務器在進行解析,但哪一個纔是主服務器呢,NS並沒有說明,這個就要看SOA記錄了,SOA名叫起始授權機構記錄,SOA記錄說明了在衆多NS記錄裏那一臺纔是主要的服務器!
4,MX記錄
  全稱是郵件交換記錄,在使用郵件服務器的時候,MX記錄是無可或缺的,比如A用戶向B用戶發送一封郵件,那麼他需要向DNS查詢B的MX記錄,DNS在定位到了B的MX記錄後反饋給A用戶,然後A用戶把郵件投遞到B用戶的MX記錄服務器裏!
5,Cname記錄
  又叫別名記錄,我們可以這麼理解,我們小的時候都會有一個小名,長大了都是學名,那麼正規來說學名的符合公安系統的,那個小名只是我們的一個代名詞而已,這也存在一個好處,就是比暴漏自己,比如一個網站a.com 在發佈的時候,他可以建立一個別名記錄,把B.com發不出去,這樣不容易被外在用戶所察覺!達到隱藏自己的目的!
6,SRV記錄
  SRV記錄是服務器資源記錄的縮寫,SRV記錄是DNS記錄中的新鮮面孔,在RFC2052中才對SRV記錄進行了定義,因此很多老版本的DNS服務器並不支持SRV記錄。那麼SRV記錄有什麼用呢?SRV記錄的作用是說明一個服務器能夠提供什麼樣的服務!SRV記錄在微軟的Active Directory中有着重要地位,大家知道在NT4時代域和DNS並沒有太多關係。但從Win2000開始,域就離不開DNS的幫助了,爲什麼呢?因爲域內的計算機要依賴DNS的SRV記錄來定位域控制器!表現形式爲:
—ldap._tcp.contoso.com 600 IN SRV 0 100 389 NS.contoso.com
ladp: 是一個服務,該標識說明把這臺服務器當做響應LDAP請求的服務器
tcp:本服務使用的協議,可以是tcp,也可以是用戶數據包協議《udp》
contoso.com:此記錄所值的域名
600: 此記錄默認生存時間(秒)
IN: 標準DNS Internet類
SRV:將這條記錄標識爲SRV記錄
0: 優先級,如果相同的服務有多條SRV記錄,用戶會嘗試先連接優先級最低的記錄
100:負載平衡機制,多條SRV並且優先級也相同,那麼用戶會先嚐試連接權重高的記錄
389:此服務使用的端口
NS.contoso.com:提供此服務的主機
7,PTR記錄
PTR記錄也被稱爲指針記錄,PTR記錄是A記錄的逆向記錄,作用是把IP地址解析爲域名。由於我們在前面提到過,DNS的反向區域負責從IP到域名的解析,因此如果要創建PTR記錄,必須在反向區域中創建。

-------------------------------------------------------------------------------------------------------------------------

配置DNS:

1.安裝BIND軟件:

[root@localhost ~]# yum install -y bind

2.BIND的服務名叫named,相關的主要文件有以下幾個:

/etc/named/           #DNS主目錄

/etc/named.conf        #DNS配置文件

/etc/rc.d/init.d/named   #DNS啓動腳本

/etc/sysconfig/named    #DNS腳本的配置文件

/var/named/          #區域配置文件目錄

3.配置文件格式說明

配置文件分爲三段:

      options:全局段,用來定義全局參數

      logging:日誌段,定義一些日誌參數

      zone:區域段,定義具體的域

4.定義配置文件(這裏是一個精簡版的,默認的示例文件有很多多餘參數,這裏只給大家展示可能用到的):

options {

        listen-on port 53 { any; };  #監聽本機所有啓用的IP地址的53號端口,UDP和TCP

        listen-on-v6 port 53 { ::1; }; #IPV6監聽

        directory       "/var/named";  #區域文件目錄

        allow-query     { any; };  #允許所有(any)客戶機像本服務器查詢

        recursion yes;  #允許遞歸

        allow-recursion { any; }; #允許所有主機遞歸

};


logging {

        channel default_debug {

                file "data/named.run";  

                severity dynamic;

        };

};


zone "." IN {   #定義根區域

        type hint; #區域類型爲根(hint);  區域類型{hint|master|slave|forward}  

        file "named.ca"; 區域文件爲named.ca

};


zone "localhost" IN {

        type master;

        file "named.localhost";

};


zone "1.0.0.127.in-addr.apra" IN {

        type master;

        file "named.loopback";

};


zone "test.com" IN {

        type master;

        file "test.com.zone";

};

5.配置區域數據文件(只配置test.com這個域的配置文件,其他文件都已經存在了):

[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@localhost named]# vim test.com.zone
$TTL 86400
$ORIGIN test.com.
@       IN      SOA     ns.test.com.    admin.test.com. (
                        2015120201
                        2H
                        20M
                        3D
                        1D)
        IN      NS      ns
        IN      MX  10  mail
ns      IN      A       172.16.100.1
mail    IN      A       172.16.100.2
www     IN      A       172.16.100.3
web     IN      CNAME   www
pop     IN      CNAME   mail
*       IN      A       172.16.100.1


啓動DNS測試:

[root@localhost named]# service named start
Starting named:                                            [  OK  ]
[root@localhost named]# ss -tunl
Netid  State      Recv-Q Send-Q                     Local Address:Port                       Peer Address:Port 
udp    UNCONN     0      0                              127.0.0.1:53                                    *:*     
udp    UNCONN     0      0                                      *:67                                    *:*     
udp    UNCONN     0      0                                      *:68                                    *:*     
udp    UNCONN     0      0                                      *:631                                   *:*     
udp    UNCONN     0      0                                    ::1:53                                   :::*     
tcp    LISTEN     0      3                                    ::1:53                                   :::*     
tcp    LISTEN     0      3                              127.0.0.1:53                                    *:*     
tcp    LISTEN     0      128                                   :::22                                   :::*     
tcp    LISTEN     0      128                                    *:22                                    *:*     
tcp    LISTEN     0      128                            127.0.0.1:631                                   *:*     
tcp    LISTEN     0      128                                  ::1:631                                  :::*     
tcp    LISTEN     0      128                                  ::1:953                                  :::*     
tcp    LISTEN     0      128                            127.0.0.1:953                                   *:*     
tcp    LISTEN     0      100                                  ::1:25                                   :::*     
tcp    LISTEN     0      100                            127.0.0.1:25                                    *:*     
tcp    LISTEN     0      128                            127.0.0.1:6010                                  *:*     
tcp    LISTEN     0      128                                  ::1:6010                                 :::*     
tcp    LISTEN     0      128                            127.0.0.1:6011                                  *:*     
tcp    LISTEN     0      128                                  ::1:6011                                 :::*


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