DNS基本操作詳解

2022-04-01 23:05:06 字數 3396 閱讀 8256

在很多人看來,dns只是為外部提供dns解析服務(我以前也是這麼認為的,直到膝蓋中了一箭),但作為網際網路的基礎設施,dns遠沒有想象的那麼簡單。如果你沒有聽說過dns查詢、反向解析、zone傳輸、動態更新、dns安全,那你可以從本文中得到關於他們的最簡明的詮釋。

dns在53埠上監聽請求並提供響應的服務。出於效能的考慮,dns查詢請求用udp協議互動並且每個請求的大小小於512位元組,但是如果返回的請求大小大於512位元組,互動雙方會協商使用tcp協議。

dns中的網域名稱伺服器最主要的功能就是響應網域名稱解析器的查詢請求(這個網域名稱解析器可能是pc端的解析器,也可能是具有解析功能的另一台網域名稱伺服器)。網域名稱解析器是安裝在pc端的軟體,它負責向本地dns(local dns)發起網域名稱解析請求。

dns系統中有三類查詢:

1,遞迴查詢

網域名稱伺服器將代替請求的客戶機(下級dns伺服器)進行網域名稱查詢,如果網域名稱伺服器不能直接回答,則網域名稱伺服器會在域各樹種的各個分支的上下進行遞迴查詢,最終將查詢結果返回給客戶機,在網域名稱查詢期間,客戶機始終處於等待狀態。遞迴解析的過程如下圖所示:

上圖中需要注意的是,許多授權網域名稱伺服器都不會提供遞迴查詢的功能(為什麼?),比如根網域名稱伺服器.和二級網域名稱伺服器.com都不提供遞迴查詢的功能,所以真正意義上的遞迴查詢是由local dns來完成的。

一般情況下,遞迴查詢的時候會收到以下三種可能的返回結果:

2),乙個標示域或主機不存在的錯誤資訊。需要注意的是這個錯誤資訊也可能含有cname記錄。例如我要請求ftp.cobb.com,而我的網域名稱伺服器將ftp.cobb.com cname到了ljx.cobb.com,但是ljx.cobb.com這個主機不存在,這個時候就返回cname記錄和錯誤資訊。

3),暫時性的錯誤資訊。它主要是因為網路不可達該主機,網路不可達不一定表明該主機不存在。

一般情況下,遞迴查詢的時候會收到以下三種可能的返回結果:

1),a記錄或者帶有cname鏈的a記錄。

2),標示域或主機不存在的錯誤資訊。

3),暫時性錯誤。可能因為網路不可達。

反向查詢是根據乙個資源記錄查詢網域名稱。這個資源記錄可能是a記錄,cname記錄或者mx記錄(見「dns開源伺服器bind最小配置詳解」)。

為了實現反向查詢,dns中有乙個特殊的網域名稱in-addr.arpa來專門作反向查詢定義。詳情見rfc3425。

域維護是指通過dns協議來在主網域名稱伺服器和從網域名稱伺服器之間維護同乙個zone檔案。

dns中有兩種域維護手段,一種是全量傳輸axfr(full zone transfer),另一種是增量傳輸ixfr(incremental zone transfer)。

1,全量傳輸axfr

全量傳輸時,從網域名稱伺服器從主網域名稱伺服器上請求zone檔案,poll的時間間隔由soa記錄中的refresh標籤定義。請求zone檔案的過程是從網域名稱伺服器向主網域名稱伺服器傳送查詢來實現,如果主網域名稱伺服器中soa記錄中的序列號(serial number標籤定義)大於從網域名稱伺服器soa記錄的序列號,從網域名稱伺服器就會向主網域名稱伺服器傳送全量傳輸請求。所以主網域名稱伺服器一旦改變了zone檔案,則需要增加它該zone中的序列號。整個soa記錄的完整格式見下圖:

通常情況下,序列號sn遵循「年+月+日+編號」的格式,如圖中的2003080803表示該zone是2023年8月8日的第三次更新。

全量傳輸時在tcp的53埠上進行。

2,增量傳輸(ixfr)

傳遞非常大的zone檔案是非常耗資源的(時間、頻寬等),尤其是只有zone中的乙個記錄改變的時候,沒有必要傳遞整個zone檔案,增量傳輸是允許主網域名稱伺服器和從網域名稱伺服器之間只傳輸那些改變的記錄。

需要注意的是,不是所有的網域名稱伺服器都支援增量傳輸,當不支援增量傳輸時,主從間就採用全量傳輸的方式。

3,通告(notify)

從上面的分析中可以看出,從伺服器每隔refresh時間向主伺服器傳送請求,只有主伺服器的soa中的序列號大於從伺服器的序列號才傳輸,但是如果這個時間間隔比較大的話(比如12個小時),快速變化的網路環境可能不允許有如此大時間的差異。

所以在實現了通告訊息的dns集群中,dns主伺服器的zone檔案發生改變後,它立即向從伺服器傳送乙個notify訊息,告訴從伺服器我的zone檔案發生改變了,接著從伺服器馬上對比兩者的序列號,再採用上面介紹的全量傳輸或者增量傳輸的方法請求zone檔案。

bind本身支援通告,通告的配置是在named.conf中的zone中的option中配置,配置指令是notify, also-notify和notify-source,具體見這裡。

4,動態更新

每次需要更新zone檔案的時候都需要停止網域名稱伺服器並重啟,這樣當zone檔案很多的時候網域名稱伺服器重啟時載入zone檔案需要很多的時間。所以需要有一種不停止查詢服務而且快速更新zone檔案地方機制,這種機制主要有兩種:

一種是允許外部程序在伺服器執行的時候更新zone檔案;

另外一種是將zone中的資源記錄rr儲存在資料庫中,每次查詢zone中記錄的時候動態讀取;

像其他的任何公共服務一樣,dns也會受到各種各樣的安全威脅。這節看看dns伺服器會受到什麼樣的安全威脅?聰明的人們又是怎麼應對這些威脅的。

為了了解dns受到的安全威脅和響應的應對措施,首先需要了解一下dns的正常資料流。如下圖所示:

上圖中的每個資料流都會受到響應的安全威脅:

1)zone檔案受到的威脅可能有:檔案被無意或有意篡改或刪除。這種威脅是較好應對的,最主要的方法是制定很好的系統管理策略,zone檔案和其他的配置檔案需要嚴格而安全的讀寫許可權。

2)3)動態更新和域傳輸受到的威脅可能有:未授權的更新、zone檔案在傳輸過程中被篡改(經常是把網域名稱篡改為別的ip)。這種威脅通常的應對方法是tsig(transaction signature)策略(這個策略定義在rfc2845中)。tsig策略中會計算出乙個key,這個key是通過單向雜湊(能輕鬆地從輸入得出值,但很難通過值猜出輸入)計算出來的,然後傳輸zone檔案的雙方在傳輸過程中都帶上這個key,如果key不對就拒絕傳輸。

4)5)遠端查詢受到的威脅可能有:cache汙染(ip欺騙、資料攔截或錯誤的master主機位址)。cache汙染是指cache中內容可能將您的網域名稱重定向到了乙個錯誤的伺服器。這種威脅通常的應對方法是網域名稱系統安全擴充套件

3,維基百科

MySQL 基本操作詳解

create database table name create table ifnot exists userinfo id intunsigned auto increment username varchar 100 not null password varchar 40 not null...

ES基本操作詳解

工具postman 選擇put方式。表示索引名稱 指定文件id,自動產生文件id 工具postman 選擇put方式 man 1 1就是文件id 工具postman 選擇post方式 自動產生文件id man 直接修改,通過指令碼修改 工具postman 選擇post方式 man 1 update ...

DNS解析詳解

dns domain name server,網域名稱伺服器 中儲存了一張網域名稱 domain name 和與之相對應的ip位址 ip address 的表,以解析訊息的網域名稱。網域名稱是internet上某一台計算機或計算機組的名稱,用於在資料傳輸時標識計算機的電子方位 有時也指地理位置 網域...