天天看點

DNS配置必備知識: DNS配置

所屬技術領域:

DNS

|名詞定義|

一、DNS概述:

DNS,英文全程"Domain Name System,中文全程:域名系統,作為将域名和IP位址互相映射的一個分布式資料庫,能夠使人更友善地通路網際網路。DNS基于C/S架構(多數基于套接字架構的都是C/S架構),同時使用TCP和UDP的53号端口,目前,對于每一級域名長度限制是63個字元,域名總長度則不能超過253個字元。

 我們都知道,IP位址是由32位的二進制數字組成。使用者與網際網路上某台主機通行時,顯然不願意使用難以記憶的32位的二進制主機位址。相反,大家更願意使用比較容易記住的主機名稱。這時DNS的出現就将繁瑣複雜32位二進制數字解析大家易于接受的字元串形式。

二、DNS即使用TCP又使用UDP

傳輸層協定

 TCP:Transmission Control Protocol 面向連接配接的協定:雙方通信前需要事先建立虛連接配接

 UDP:User Datagram Protocol 無連接配接的協定:雙方無需通信前事先建立虛連接配接

首先了解一下TCP與UDP傳送位元組的長度限制:UDP封包最大長度為512位元組,而TCP則允許封包長度超過512位元組。當DNS查詢超過512位元組時,協定的TC标志出現删除标志,這時則使用TCP發送。通常傳統的UPD封包一般不會大于512位元組。

 區域傳送使用TCP,因為資料同步傳送的資料量比一個請求和應答的資料量要多得多,是以為了保證資料的正确性,則使用基于可靠連接配接的TCP。

域名解析時使用UDP協定,用戶端向DNS伺服器查詢域名,一般傳回的内容不超過512位元組,用UDP傳輸,不經過TCP三向交握,大大提高響應速度。

三、域名空間

對于DNS域名空間,我們要制定一套命名規則,防止域名出現重複,關于DNS域名規則我們可以将生活中的快遞系統聯系起來,使用層次的位址結構。當你要郵寄物品給某人時,快遞單号上肯定要寫上:中國、廣東省、惠州市、惠城區、江北市政府xx号。而一個域名看起來則是這樣的groups.google.com。

 對于Internet來說,域名層次結構的頂級(相當于國際快遞位址中的國家部分)由ICANN(網際網路名稱與數字位址配置設定機構)負責管理。目前,已經有超過800多個頂級域名,每個頂級域名可以進一步劃為一些子域(二級域名),這些子域可被再次劃分(三級域名),以此類推。所有這些域名可以組織成一顆樹,如下圖所示(圖檔來自Computer Networks:7-1):

DNS配置必備知識: DNS配置

頂級域名類别有:

• 通用的頂級域名如:.org、.com、.net、.gov、.edu 等等

• 國家代碼頂級域名如:.us、.ca 等,分别對應美國和加拿大的國家代碼

• 新的品牌頂級域名,允許組織建立最多64個字元的TLD,如:.linux、.microsoft、.companyname 等

• 基礎架構頂級域名如:.arpa

子域名

當通路一個類似mail.google.com這樣這樣的網站,這裡的mail就是googole.com的子域名,隻有mail.google.com的名稱伺服器知道下面存在的所有主機,是以Google會回複是否有一個叫mail的子域名,根名稱伺服器對此并不知請。

DNS伺服器的類型

分為三種DNS伺服器:

主DNS伺服器

 這些伺服器上存放了特定域名的配置檔案,并且基于此權威地規定了特定的域名的位址。主DNS伺服器知道全部在它管轄範圍的主機和子域名的位址。

輔助DNS伺服器

 這些伺服器作為主DNS伺服器的備份,也承擔了一定的負載。主伺服器知道輔助DNS伺服器存在,并且會向他們推送更新。

緩存DNS伺服器

 這些伺服器上不存放特定域名的配置檔案。當用戶端請求緩存伺服器來解析域名時,該伺服器将首先檢查其本地緩存。如果找不到比對項便會詢問主伺服器。接着這條響應将被緩存起來。

四、工作流程簡述

DNS配置必備知識: DNS配置

域名到IP位址的解析是由分布網際網路上的許多域名伺服器程式共同完成的。域名伺服器程式在專設的結點上運作,而人們也常把運作域名伺服器程式的機器稱為域名伺服器。

 域名到IP位址的解析過程要點如下:當某一個應用需要把主機名解析為IP位址,該應用程序就調用解析程式,并稱為DNS的一個客戶,把待解析的域名放在DNS請求封包中,以UDP使用者資料報方式發給本地域名伺服器。本地域名伺服器在查找域名後,把對應的IP位址放在回答封包中傳回。應用程式獲得目的主機的IP位址後即可通行。

 若本地域名伺服器不能回答該請求,則此域名伺服器就暫時稱為DNS的另一個客戶,并向其他域名伺服器發出查詢請求。這種過程直到能夠回答該請求的域名伺服器為止。此過程稱之為(疊代)

五、域名解析查詢:遞歸及疊代兩者差別

  1. 主機向本地域名伺服器查詢一般都是常用遞歸查詢。所謂遞歸查詢就是:如果主機所詢問的本地域名伺服器不知道被查詢的域名的IP位址,那麼本地域名伺服器就以DNS用戶端的身份,向其它根域名伺服器繼續發出查詢請求封包(即替主機繼續查詢),而不是讓主機自己進行下一步查詢。是以,遞歸查詢傳回的結果或者是所要查詢的IP位址,或者是報錯,表示無法查詢到所需的IP位址。
  2. 本地域名伺服器向根域名伺服器的查詢的疊代查詢。疊代查詢的特點:當根域名伺服器收到本地域名伺服器發出的疊代查詢請求封包,要麼給出所要查詢的IP位址,要麼告訴本地伺服器:“你下一步應當向哪一個域名伺服器進行查詢”。然後讓本地伺服器進行後續的查詢。根域名伺服器通常是把自己知道的頂級域名伺服器的IP位址告訴本地域名伺服器,讓本地域名伺服器再向頂級域名伺服器查詢。頂級域名伺服器在收到本地域名伺服器的查詢請求後,要麼給出所要查詢的IP位址,要麼告訴本地伺服器下一步應當向哪個權限域名伺服器進行查詢。最後,知道了所要解析的IP位址或報錯,然後把這個結果傳回給發起查詢的主機。
    DNS配置必備知識: DNS配置

就個人了解遞歸查詢可以比喻為我們到政府部門辦理事情一樣,如果你運氣好的話,碰到辦事員心情不錯而往往事情就能好辦很多,直接放下材料就能回去了,剩下的事情就等待處理結果就好了。要萬一當天辦事員因為失戀了,心情不好,那你就要被告知你所要辦理的材料還需要找什麼部門,需要誰誰蓋章後才能受理,就如一個“皮球“被踢來踢去。如此反複,最後事情一波三折的也還不一定能夠辦下來,這就是疊代查詢。

為提高DNS查詢效率,減輕根域名伺服器的負荷和減少網際網路上DNS查詢封包的數量,在域名伺服器中廣泛使用了高速緩存(或高速緩存伺服器),用來存放最近查詢過的域名以及從何處獲得域名映射資訊的記錄

 當DNS伺服器向另一個DNS伺服器請求并收到它的響應,就在把它發送給客戶之前,把這個資訊存儲到它的高速緩存中,這個資訊會在高速緩存中存在一個生存周期TTL,過了生存周期就删除這條資訊。

DNS從伺服器的配置詳解

一、DNS從伺服器的作用

DNS從伺服器也叫輔服DNS伺服器,如果網絡上某個節點隻有一台DNS伺服器的話,首先伺服器的抗壓能力是有限的,當壓力達到一定的程度,伺服器就會當機罷工,其次如果這台伺服器出現了硬體故障那麼伺服器管理的區域的域名将無法通路。為了解決這些問題,最好的辦法就是使用多個DNS伺服器同時工作,并實作資料的同步,這樣兩台伺服器就都可以實作域名解析操作。主DNS伺服器架設好後,輔助的DNS伺服器的架設就相對簡單多了。架設主從DNS伺服器有兩個前提條件,一是兩台主機可以不一定處在同一網段,但是兩台主機之間必須要實作網絡通信;二,輔助DNS伺服器必須要有主DNS伺服器的授權,才可以正常操作。此時,我們以IP位址192.168.115.130作為我們輔助的DNS伺服器的IP位址;

二、DNS從伺服器搭建和配置

目的:減輕主伺服器的壓力

準備:主伺服器(192.168.115.120)

從伺服器(192.168.115.130)

客戶機

1、搭建主DNS伺服器

(1)配置前的準備工作

1、配置好本地CD光牒yum源或者配置網絡yum源

2、設定好防火牆開放UDP的53端口,或者直接關閉防火牆

防火牆永久關閉:/etc/init.d/iptables stop

service iptables stop
           

3、關閉selinux

selinux臨時關閉:setenforce 0

selinux永久關閉:sed –i“7s/enforcing/disabled/g”/etc/selinux/config

(2)安裝bind軟體

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

(3)修改主配置檔案/etc/named.conf兩個地方為{any}

[root@master ~]# vim /etc/named.conf

options {

listen-on port 53 { any; };
    listen-on-v6 port 53 { ::1; };
    directory       "/var/named";
    dump-file       "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    memstatistics-file "/var/named/data/named_mem_stats.txt";
    allow-query     { any; };
           

(4)修改區域檔案/etc/named.rfc1912.zones

[root@master ~]# vim /etc/named.rfc1912.zones

zone "long.com" IN {

type master;
    file "named.zheng";   正向解析檔案名(名稱可以自定義)
    allow-update { none; };           

};

zone "115.168.192.in-addr.arpa" IN {

type master;
    file "named.fan";    反向解析檔案名(名稱可以自定義)
    allow-update { none; };           

提示:上面的配置檔案可以隻保留兩個地方,一個正向解析域名,一個反向解析域名,其餘都可以删除

[root@master ~]# cd /var/named/

[root@master named]# ls

data dynamic named.ca named.empty named.localhost named.loopback slaves

生成上面的/etc/named.rfc1912.zones配置檔案中指定的正反解析檔案

[root@master named]# cp -a named.localhost named.zheng

[root@master named]# cp -a named.loopback named.fan

(5)修改上面的正向解析檔案和反向解析檔案

正向解析檔案named.zheng的修改

[root@master named]# vim named.zheng

$TTL 1D

@ IN SOA long.com. rname.invalid. (

0       ; serial
                                    1D      ; refresh
                                    1H      ; retry
                                    1W      ; expire
                                    3H )    ; minimum
       NS      dns.long.com.           

dns A 192.168.115.120 dns伺服器的IP位址

www A 192.168.115.120 www伺服器的IP位址

AAAA    ::1           

~

反向解析檔案named.fan的修改:

[root@master named]# vim named.fan

0       ; serial
                                    1D      ; refresh
                                    1H      ; retry
                                    1W      ; expire
                                    3H )    ; minimum
      NS      dns.long.com.           

120 PTR dns.long.com.

120 PTR www.long.com.

[root@master named]# systemctl start named.service 啟動dns服務

(6)把主DNS伺服器也同時作為網頁伺服器并安裝Apache服務

[root@master ~]# yum -y install httpd

[root@master ~]# systemctl start httpd.service

2、搭建從DNS伺服器

前面的步驟和主伺服器基本一樣。

(1)安裝bind軟體

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

(2)修改配置檔案/etc/named.conf兩個地方為{any}

[root@slave ~]# vim /etc/named.conf

listen-on port 53 { any; };
    listen-on-v6 port 53 { ::1; };
    directory       "/var/named";
    dump-file       "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    memstatistics-file "/var/named/data/named_mem_stats.txt";
    allow-query     { any; };           

(3)修改區域檔案/etc/named.rfc1912.zones

[root@slave ~]# vim /etc/named.rfc1912.zones

zone "long.com" IN { 這裡域名和主DNS一樣

type slave;     這裡把類型改為slave
    masters { 192.168.115.120; };     這裡添加一行寫主伺服器的位址
    file "slaves/named.zheng";     把主伺服器的正向解析檔案同步到本伺服器
    allow-update { none; };           
type slave;      
    masters { 192.168.115.120; };
    file "slaves/named.fan";
    allow-update { none; };           

(4)啟動從DNS伺服器的named服務,并檢視正反解析檔案是否同步

[root@slave named]# systemctl start named.service 啟動從伺服器的named服務

[root@slave slaves]# pwd

/var/named/slaves

[root@slave slaves]# ls 可以看到主伺服器的正向和反向解析檔案已經同步過來了

named.fan named.zheng

3、配置客戶機的DNS位址為從伺服器的IP位址,看能否通路Apache伺服器。

(1)配置客戶機的DNS位址為從伺服器IP位址

客戶機的配置如下:

IPADDR=192.168.115.150

NETMASK=255.255.255.0

GATEWAY=192.168.115.2

DNS1=192.168.115.130 從DNS伺服器的IP位址

(2)在客戶機測試是否可以通路Apache頁面

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

[root@localhost ~]# elinks www.long.com

DNS配置必備知識: DNS配置

通過在客戶機測試可以看出我們的從DNS伺服器已經配置成功了。

提示:以上所有配置和測試都是在centos7.x上進行的。

|發展曆程|

DNS最早于1983年由保羅•莫卡派喬斯(Paul Mockapetris)發明;原始的技術規範在882号網際網路标準草案(RFC 882)中釋出。1987年釋出的第1034和1035号草案修正了DNS技術規範,并廢除了之前的第882和883号草案。在此之後對網際網路标準草案的修改基本上沒有涉及到DNS技術規範部分的改動。

  早期的域名必須以英文句号“.”結尾,當使用者通路 www.wikipedia.org的HTTP服務時必須在址欄中輸入:

http://www.wikipedia.org.

,這樣DNS才能夠進行域名解析。如今DNS伺服器已經可以自動補上結尾的句号。

  目前,對于域名長度的限制是63個字元,包括www.和.com或者其他的擴充名。域名同時也僅限于ASCII字元的一個子集,這使得很多其他語言無法正确表示他們的名字和單詞。基于Punycode碼的IDNA系統,可以将Unicode字元串映射為有效的DNS字元集,這已經通過了驗證并被一些注冊機構作為一種變通的方法所采納。

|技術特點|

将域名解析為IP 位址

用戶端向DNS伺服器(DNS伺服器有自己的IP位址)發送域名查詢請求           

DNS伺服器告知客戶機Web伺服器的IP 位址

客戶機與Web 伺服器通信

|相關詞|

DNS查詢過程(這是很重要的了解DNS原理的一個過程)

    通過分級管理可以有效的管理全球上億的域名資訊(類似于在公司中,CEO隻管理各個部門的經理;各個部門的經理隻管理自己部門中的各個組長;各個組長隻管理自己組的組員。至少這是一種比較有效的管理方式)

    下面以一個客戶機想要通路 www.benet.com 這個WEB伺服器的過程來了解DNS的原理

DNS配置必備知識: DNS配置

 

      1.客戶機(PC)向首選DNS伺服器(首選DNS伺服器是指目前你的PC機連接配接的DNS伺服器,Windows可以使用ipconfig指令檢視)發起請求:”你知道www.benet.com的IP嗎?“如果首選DNS伺服器知道(一般如果首選DNS伺服器曾經解析過,那麼會進行一段時間内的緩存,預設三天,如果正好在緩存時間内,那麼首選伺服器就會知道這個域名的IP),那麼首選DNS 伺服器就會直接給客戶機傳回域名的IP 位址

      2.若首選DNS 伺服器上沒有相關資訊,就不能直接傳回域名的IP 位址,這時候,首選DNS 伺服器就會去詢問根DNS伺服器(所有的DNS 伺服器都知道全球的13 台DNS根伺服器在哪裡),根伺服器可能不知道這個具體的 www.benet.com 的IP位址,但是它知道一級域 com 的IP(也就是說根伺服器隻負責維護所有的一級域,是以也就幾百條資料在這裡,雖然資料量少,但是它接受來自全球的請求,是以負載也很大)

      3.根伺服器将com 的IP位址傳回給 首選DNS 伺服器

      4.首選DNS伺服器再去請求 "com" DNS伺服器:”你知道 www.benet.com的IP嗎“,但是com DNS伺服器也不知道 www.benet.com 的IP,但是com DNS 伺服器知道 benet.com 的IP,

      5.”com“DNS伺服器将這個資訊傳回給 首選DNS 伺服器

      6.首選DNS伺服器再去請求 "benet.com" DNS伺服器,這時候 benet.com 伺服器當然就會知道 www.benet.com的IP位址

      7.”benet.com“DNS伺服器将這個資訊傳回給首選DNS 伺服器

      8.首選DNS 伺服器将擷取到的 www.benet.com的IP傳回給客戶機

      9.客戶機根據擷取到的www.benet.com 的IP位址來通路WEB伺服器

      10.WEB伺服器傳回相關的資料

域名空間結構

DNS配置必備知識: DNS配置

    

擴充:

為什麼一定要設定DNS才能上網?有些朋友可能會發現,為什麼我可能登陸QQ、MSN,但卻打不開網頁呢?其實大部分原因都是因為DNS伺服器故障造成的,DNS伺服器位址是唯一的,是營運商提供給終端使用者用來解析IP位址及域名的關系,而如果不設定DNS伺服器位址,那麼就無法查詢位址的去向,自然也就打不開網頁,而QQ、MSN等即時聊天軟體,采用的是UDP傳輸協定,即不可靠傳輸協定,無需提供DNS伺服器位址,也同樣可以登陸。

資料來源:

  1. 名詞定義: https://www.jianshu.com/p/32b16cb3c8d8
  2. 發展曆程: https://www.dns.la/support/art_206.aspx
  3. 技術特點:CSDN社群 https://blog.csdn.net/qq_31930499/article/details/79767330
  4. 相關詞:CSDN社群

繼續閱讀