域名解析方法及裝置與流程
2023-09-13 14:31:30
本申請涉及網絡通信技術領域,尤其涉及一種域名解析方法及裝置。
背景技術:
在網絡通信領域,域名系統(domainnamesystem,dns)是負責提供域名和ip地址之間映射的分布式資料庫,是當前全球最大最複雜的分布式層次資料庫系統。域名解析(dns解析)根據dns系統中提供的域名與ip地址之間的映射關係,查找用戶要訪問的任一域名對應的ip地址的過程,從而用戶不需記住能夠被機器直接讀取的ip數串,僅根據更容易記憶的域名即可方便的訪問網際網路。
參照圖1所示的一種dns系統架構,當用戶利用客戶端110(客戶端110除了圖1所示的個人電腦,還可以是手機、平板電腦等終端)訪問「www.csdn.net」這一域名對應的網頁時,客戶端110可以作為dns客戶端向dns伺服器120發起dns解析請求,dns伺服器120在接收到該dns解析請求後,根據自身存儲的映射關係,查找到域名「www.csdn.net」對應的ip地址為「117.79.93.222」,並將查找到的該ip地址以dns響應的形式返回至客戶端110,完成dns解析過程,從而客戶端110根據「117.79.93.222」這一ip地址對應的網頁伺服器進行通信,從而可以獲取並向用戶展示「www.csdn.net」這一域名對應的網頁。
然而,在上述dns解析過程中,dns系統面臨著非常嚴重的安全威脅。首先,dns伺服器中極有可能存在漏洞和後門,很容易被人為破壞和攻擊,篡改其中存儲的域名和ip地址之間的映射關係,使其對dns解析請求返回錯誤甚至有害的響應結果,進而影響用戶的網絡安全;其次,客戶端等設備與dns伺服器之間傳輸鏈路的安全機制較弱,部分dns解析請求或dns響應等數據能夠被捕獲和篡改,進而使得返回的響應結果也是錯誤甚至有害的。現有針對dns系統安全威脅的防禦辦法通常為增加dns防火牆、入侵檢測系統和漏洞修復策略等,但這些方法都是對已知的安全威脅進行被動的防禦,對未知的攻擊或者系統漏洞與後門顯得無能為力。
技術實現要素:
本申請實施例提供了一種域名解析方法及裝置,以解決現有dns系統安全性低,無法應對未知安全威脅的問題。
第一方面,本申請實施例提供了一種域名解析方法,包括:
獲取域名解析請求,按照預設分發策略確定一個或多個域名解析目標伺服器,並將所述域名解析請求分發至所述域名解析目標伺服器;
接收每個域名解析目標伺服器返回的域名解析響應;
根據預設裁決策略從接收到的所有域名解析響應中選擇一個,作為所述域名解析請求對應的目標響應。
可選的,將所述域名解析請求分發至所述域名解析目標伺服器,包括:
向同一域名解析目標伺服器多次發送所述域名解析請求,以使同一域名解析目標伺服器針對同一域名解析請求進行多次解析,得到多個域名解析響應;
所述接收每個域名解析目標伺服器返回的域名解析響應,包括:
接收同一域名解析目標伺服器返回的多個域名解析響應。
可選的,按照預設分發策略確定一個或多個域名解析目標伺服器,包括以下至少一項:
按照動態隨機策略選擇一個或多個域名解析伺服器,作為所述域名解析目標伺服器;
選擇安全性最高的一個或多個域名解析伺服器,作為所述域名解析目標伺服器;
按照輪詢選擇策略選擇一個或多個域名解析伺服器,作為所述域名解析目標伺服器。
可選的,根據預設裁決策略從接收到的所有域名解析響應中選擇一個,作為所述域名解析請求對應的目標響應,包括以下至少一項:
按照動態隨機策略從接收到的所有域名解析響應中選擇一個,作為所述域名解析請求對應的目標響應;
按照輪詢選擇策略從接收到的所有域名解析響應中選擇一個,作為所述域名解析請求對應的目標響應;
按照多數表決選擇策略從接收到的所有域名解析響應中選擇一個,作為所述域名解析請求對應的目標響應;
以及,按照權重佔優選擇策略從接收到的所有域名解析響應中選擇一個,作為所述域名解析請求對應的目標響應。
可選的,所述方法還包括:
從所述域名解析響應中提取相應的域名解析伺服器的第一地址信息;
按照預設分發策略確定一個或多個域名解析目標伺服器,包括:
按照預設分發策略,從所述第一地址信息對應的域名解析伺服器,和/或,預設的第二地址信息對應的域名解析伺服器中,選擇所述域名解析目標伺服器。
第二方面,本申請實施例還提供了一種域名解析裝置,包括:
分發模塊,用於獲取域名解析請求,按照預設分發策略確定一個或多個域名解析目標伺服器,並將所述域名解析請求分發至所述域名解析目標伺服器;
裁決模塊,用於接收每個域名解析目標伺服器返回的域名解析響應,並根據預設裁決策略從接收到的所有域名解析響應中選擇一個,作為所述域名解析請求對應的目標響應。
可選的,所述分發模塊具體被配置為:
在實現將所述域名解析請求分發至所述域名解析目標伺服器時,向同一域名解析目標伺服器多次發送所述域名解析請求,以使同一域名解析目標伺服器針對同一域名解析請求進行多次解析,得到多個域名解析響應;
相應的,所述裁決模塊具體被配置為:
在實現接收每個域名解析目標伺服器返回的域名解析響應時,接收同一域名解析目標伺服器返回的多個域名解析響應。
可選的,所述分發模塊具體被配置為,通過以下至少一種方式實現按照預設分發策略確定一個或多個域名解析目標伺服器:
按照動態隨機策略選擇一個或多個域名解析伺服器,作為所述域名解析目標伺服器;
選擇安全性最高的一個或多個域名解析伺服器,作為所述域名解析目標伺服器;
按照輪詢選擇策略選擇一個或多個域名解析伺服器,作為所述域名解析目標伺服器。
可選的,所述裁決模塊具體被配置為,通過以下至少一種方式實現根據預設裁決策略從接收到的所有域名解析響應中選擇一個,作為所述域名解析請求對應的目標響應:
按照動態隨機策略從接收到的所有域名解析響應中選擇一個,作為所述域名解析請求對應的目標響應;
按照輪詢選擇策略從接收到的所有域名解析響應中選擇一個,作為所述域名解析請求對應的目標響應;
按照多數表決選擇策略從接收到的所有域名解析響應中選擇一個,作為所述域名解析請求對應的目標響應;
以及,按照權重佔優選擇策略從接收到的所有域名解析響應中選擇一個,作為所述域名解析請求對應的目標響應。
可選的,所述裝置還包括:
存儲模塊,用於從所述域名解析響應中提取並保存相應的域名解析伺服器的第一地址信息,和/或,保存預設域名解析伺服器對應的第二地址信息;
相應的,所述分發模塊具體被配置為:
按照預設分發策略,從所述第一地址信息對應的域名解析伺服器,和/或,所述第二地址信息對應的預設域名解析伺服器中,選擇所述域名解析目標伺服器。
採用本申請實施例,通過從多個域名解析伺服器中選擇一個或多個,作為域名解析目標伺服器,將同一域名解析請求分別分發至每個域名解析目標伺服器,通過這些域名解析目標伺服器對同一待解析域名進行解析,得到多個域名解析響應,在從這多個域名解析響應中選擇一個,作為目標響應。相對於現有技術中長期且固定採用一個域名解析伺服器進行域名解析的情況,本申請實施例可以避免某一域名解析伺服器出現安全問題時造成大量域名解析錯誤的情況,提高域名解析結果的正確率,提高訪問安全性。
附圖說明
為了更清楚地說明本申請的技術方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,對於本領域普通技術人員而言,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為現有域名解析系統的結構及通信過程示意圖;
圖2為本申請實施例提供的一種域名解析方法的流程圖;
圖3為本申請實施例提供的域名解析方法的信號流圖;
圖4為本申請實施例提供的另一種域名解析方法的流程圖;
圖5為本申請實施例提供的一種域名解析裝置的結構示意圖;
圖6為本申請實施例提供的域名解析裝置所在系統的結構示意圖;
圖7為本申請實施例提供的另一種域名解析裝置的結構示意圖。
具體實施方式
下面結合附圖對本申請實施例提供的域名解析方法及裝置進行詳細闡述。
圖2為本申請實施例提供的一種域名解析方法的流程圖,該方法包括如下步驟:
s201,獲取域名解析請求,按照預設分發策略確定一個或多個域名解析目標伺服器,並將所述域名解析請求分發至所述域名解析目標伺服器;
s202,接收每個域名解析目標伺服器返回的域名解析響應;
s203,根據預設裁決策略從接收到的所有域名解析響應中選擇一個,作為所述域名解析請求對應的目標響應。
假設待解析的域名為a,依照本申請實施例中,可以依照預設分發策略選擇出一個或多個域名解析目標伺服器,並將域名a對應的域名解析請求發送到所選出的這些域名解析目標伺服器中。對於僅選擇出一個域名解析目標伺服器的情況,每次選擇出的域名解析目標伺服器不會完全相同,即使某個域名解析伺服器存在安全問題(如域名與ip地址映射關係被篡改,或與客戶端等設備之間的傳輸鏈路的安全機制較弱),因選中該域名解析伺服器而得到錯誤的域名解析響應(錯誤的ip地址)的次數也是很有限的,相對於現有技術中長期且固定採用一個域名解析伺服器進行域名解析的情況,也可以很大程度上提高域名解析結果的正確率,提高訪問安全性。
對於依照預設分發策略選出多個域名解析目標伺服器的情況,包含域名a的域名解析請求被分發至這多個域名解析目標伺服器si(i=1,2,……),每個域名解析目標伺服器都會對域名a進行解析,並生成域名解析響應ri(每個域名解析響應ri中均包含了相應域名解析目標伺服器si解析出的該域名a對應的ip地址pi);然後按照預設裁決策略,對這多個域名解析目標伺服器產生的多個域名解析響應進行裁決,從中選擇一個正確性最高的響應,假設選出了r2,作為目標響應,則該目標響應r2中包含的ip地址p2即為本次解析得到的域名a對應的目標ip地址,要訪問域名a的終端最終訪問的是目標ip地址p2對應的網站伺服器。這樣,即使某個域名解析目標伺服器因自身安全問題返回了錯誤的域名解析響應,也會在域名解析響應裁決階段被剔除,不會被選為目標響應,從而提高域名解析結果的正確率,提高訪問安全性。
實際應用中,可以在網絡中部署多個冗餘的域名解析伺服器s1~sn,同一域名和ip地址之間的映射關係可以同時存儲在集合c的每個域名解析伺服器中;同時,可以將實現本實施例所述域名解析方法的程序/指令,配置在有域名解析需求的設備(以下稱為域名解析設備)中,如:電腦、手機等終端,或,域名解析過程中所使用的各個域名解析伺服器等。
圖3通過信號流圖的方式展示了本申請實施例提供的域名解析方法實現過程中相關網絡設備之間的通信情況。如圖3所示,網絡中部署有n個域名解析伺服器s1、s2、……、sn,以及各個網站的伺服器(圖3中僅示出了域名為a1、ip地址為ip1的網站伺服器1,和域名為a2、ip地址為ip2的網址伺服器2);域名解析設備獲取到域名a1的解析請求時,通過執行實現本實施例的程序/指令,根據預設分發策略從n個域名解析伺服器中挑選域名解析目標伺服器,並最終選中了s1和s2兩個(步驟1),域名解析設備將域名a1的解析請求分別發送至s1和s2(步驟2-1及2-2),使得s1和s2分別對域名a1進行解析,分別生成域名解析響應r1和r2(步驟3-1和3-2),並將r1和r2返回至域名解析設備中(步驟4-1和4-2);域名解析設備根據預設裁決策略對接收到的域名解析響應進行裁決,最終從r1和r2中選定r1為目標響應(步驟5),從而r1中包含的由s1解析出的ip地址ip1作為目標ip地址,如果該域名解析設備為要訪問域名a1的終端,則其可以直接根據ip1與相應的網站伺服器1進行雙向通信(步驟6),如下載網站伺服器1存儲的網頁數據、向網站伺服器1發送網絡請求等,如果該域名解析設備為域名解析伺服器,則將該目標ip地址返回至相應的終端,使得該終端可以訪問網站伺服器1。
從上述技術方案可以看出,本實施例提供的域名解析方法,通過從多個域名解析伺服器中選擇一個或多個,作為域名解析目標伺服器,將同一域名解析請求分別分發至每個域名解析目標伺服器,通過這些域名解析目標伺服器對同一待解析域名進行解析,得到多個域名解析響應,在從這多個域名解析響應中選擇一個,作為目標響應。相對於現有技術中長期且固定採用一個域名解析伺服器進行域名解析的情況,本申請實施例可以避免某一域名解析伺服器出現安全問題(包括已知的安全問題和位置的安全問題)時造成大量域名解析錯誤的情況,提高域名解析結果的正確率,提高訪問安全性。
在本申請一個可行的實施例中,上述步驟s201所述的預設分發策略包括但不限於以下幾種:動態隨機策略、安全性最高策略、輪詢選擇策略和預先設定策略等。
假設網絡中部署的n個域名解析伺服器記為集合c={s1,s2,…,sn},則上述步驟s201即相當於從集合c中選出一個子集合c』={s1,s2,…,sm},其中1≤m≤n,並將域名解析請求發送至該子集合c』中的每個域名解析伺服器。
其中,依照動態隨機策略,在每次獲取到域名解析請求時,都可以利用預設的動態隨機算法從集合c中動態隨機選擇出一個子集合c』。例如,為c中的每個域名解析伺服器分配一個數值區間[0,20)、[20,40)等,隨機生成m個數值,將各個數值所在數值區間對應的域名解析伺服器作為域名解析目標伺服器,得到子集合c』。
依照安全性最高策略,在每次獲取到域名解析請求時,都從集合c中選擇安全性最高的m個域名解析伺服器,即得到子集合c』。其中,各個域名解析伺服器的安全性可以依據歷史數據、各個伺服器的性能、負載狀態等信息確定。
依照輪詢選擇策略,在每次獲取到域名解析請求時,都從集合c中按照預設的順序選擇m個域名解析伺服器,且將上次選擇的最後一個域名解析伺服器的下一個,作為本次選擇的第一個域名解析伺服器。例如,上一次選擇了s1和s2,則本次從s3開始,可以選擇s3和s4,或者s3、s4和s5等(即每次選擇的伺服器個數m可以不同)。
依據預先設定策略,如果預先對某些域名,或某種類型的域名設定了相應的專用域名解析伺服器,則可以將所述專用域名解析伺服器記入子集合c』。
本申請實施例中,對於任一域名解析請求,可以同時根據上述預設分發策略中的兩種或兩種以上來確定域名解析目標伺服器。例如,在依據預先設定策略選擇了專用域名解析伺服器後,還可以基於動態隨機策略再選擇一個或幾個域名解析伺服器,也作為域名解析目標伺服器,記入子集合c』。
可見,對於除執行本實施例的設備之外的其他任一設備,通過上述預設分發策略選出的域名解析目標伺服器都是不可預知的,即使其中某個域名解析伺服器出現安全性問題,其被選為域名解析目標伺服器的概率也是很小的,不會如現有技術一樣,一旦域名解析伺服器出現問題後,在問題解決之前會一直出現域名解析錯誤。因此,本申請實施例可以提高域名解析結果的正確率,提高訪問安全性,也增加了通過攻擊或篡改域名解析伺服器數據達到影響用戶訪問結果這一目的的難度。
在本申請一個可行的實施例中,上述步驟s203所述的預設裁決策略包括但不限於以下幾種:動態隨機策略、輪詢選擇策略、多數表決選擇策略和權重佔優選擇策略等。
其中,依照多數表決選擇策略,對接收到的各個域名解析響應進行比較,並統計每種域名解析響應的重複個數,選擇重複個數最多的域名解析響應作為目標響應。例如,在接收到的m個域名解析響應r1~rm中,x個域名解析響應中包含的ip地址都為ip1,y個域名解析響應中包含的ip地址都為ip2,且x>y,x+y=m,則選擇所述x個域名解析響應中的任意一個,作為目標響應,也即重複個數更多的ip1作為目標ip地址。
依照權重佔有策略,比較返回各個域名解析響應的域名解析目標伺服器的權重,選擇權重最高的域名解析目標伺服器返回的域名解析響應作為目標響應。其中,各個域名解析目標伺服器的權重可以是預先根據伺服器的負載能力、安全等級等設定。
參照圖4,在本申請另一實施例中,上述域名解析方法在步驟s203之後,還可以包括:
s204、從所述域名解析響應中提取相應的域名解析伺服器的第一地址信息。
基於步驟s204,在下次獲取到域名解析請求並執行步驟s201時,可以將提取出的第一地址信息對應的域名解析伺服器作為上述集合c中記錄的伺服器。另外,集合c中也可以包含預先存儲在域名解析設備中的第二地址信息對應的域名解析伺服器,在執行步驟s201時,直接從相應的存儲單元中讀取即可。
另外,可以重點提取目標響應對應的域名解析伺服器的地址信息,對該域名解析伺服器的權重、安全性等級等信息進行更新。例如,目標響應對應的域名解析伺服器可以被認為是域名解析正確率更高的伺服器,從而可以適當提高其權重值和安全性等級。
在本申請其他可行的實施例中,上述步驟s201中所述的將所述域名解析請求分發至所述域名解析目標伺服器,具體可以包括:
向同一域名解析目標伺服器多次發送所述域名解析請求,以使同一域名解析目標伺服器針對同一域名解析請求進行多次解析,得到多個域名解析響應。
例如,對於選擇確定的域名解析目標伺服器s1,可以先後三次向其發送同一個域名解析請求,從而使得s1對該域名解析請求中的域名進行三次解析,並先後三次向域名解析設備返回域名解析響應;這樣,即使某一次返回域名解析響應的傳輸鏈路中,或者某一次發送域名解析請求的傳輸鏈路中被篡改數據,導致域名解析設備得到了一個錯誤的域名解析響應,也會在步驟s203中被裁決剔除,被作為目標響應的概率很小,從而進一步提高域名解析結果的正確率,提高訪問安全性。
基於上述域名解析方法,本申請實施例還提供了一種域名解析裝置;該裝置可以被設置於手機、電腦等終端,或任意域名解析伺服器中,或者作為獨立的網絡裝置與上述終端及域名解析伺服器進行通信,以執行上述任意實施例提供的域名解析方法。
參見圖5所述的該裝置的結構框圖,以及圖6所示的包含該裝置在網絡架構示意圖,該域名解析裝置可以包括:
分發模塊501,用於獲取域名解析請求,按照預設分發策略確定一個或多個域名解析目標伺服器,並將所述域名解析請求分發至所述域名解析目標伺服器;
裁決模塊502,用於接收每個域名解析目標伺服器返回的域名解析響應,並根據預設裁決策略從接收到的所有域名解析響應中選擇一個,作為所述域名解析請求對應的目標響應。
從上述技術方案可以看出,本實施例提供的域名解析方法,通過從多個備選的域名解析伺服器s1~sn中選擇一個或多個,作為域名解析目標伺服器,將同一域名解析請求分別分發至每個域名解析目標伺服器,通過這些域名解析目標伺服器對同一待解析域名進行解析,得到多個域名解析響應,在從這多個域名解析響應中選擇一個,作為目標響應。相對於現有技術中長期且固定採用一個域名解析伺服器進行域名解析的情況,本申請實施例可以避免某一域名解析伺服器出現安全問題(包括已知的安全問題和位置的安全問題)時造成大量域名解析錯誤的情況,提高域名解析結果的正確率,提高訪問安全性。
在本申請一個可行的實施例中,所述分發模塊501具體被配置為,通過以下至少一種方式實現按照預設分發策略確定一個或多個域名解析目標伺服器:
按照動態隨機策略選擇一個或多個域名解析伺服器,作為所述域名解析目標伺服器;
選擇安全性最高的一個或多個域名解析伺服器,作為所述域名解析目標伺服器;
按照輪詢選擇策略選擇一個或多個域名解析伺服器,作為所述域名解析目標伺服器。
在本申請一個可行的實施例中,所述裁決模塊502具體被配置為,通過以下至少一種方式實現根據預設裁決策略從接收到的所有域名解析響應中選擇一個,作為所述域名解析請求對應的目標響應:
按照動態隨機策略從接收到的所有域名解析響應中選擇一個,作為所述域名解析請求對應的目標響應;
按照輪詢選擇策略從接收到的所有域名解析響應中選擇一個,作為所述域名解析請求對應的目標響應;
按照多數表決選擇策略從接收到的所有域名解析響應中選擇一個,作為所述域名解析請求對應的目標響應;
以及,按照權重佔優選擇策略從接收到的所有域名解析響應中選擇一個,作為所述域名解析請求對應的目標響應。
可見,應用本申請實施例,對於除上述裝置之外的其他任一設備,通過上述預設分發策略選出的域名解析目標伺服器都是不可預知的,最終裁決所選定的目標響應也是不可預知的,即使其中某個域名解析伺服器出現安全性問題,其被選為域名解析目標伺服器的概率也是很小的,即使被選為域名解析目標伺服器,其返回的域名解析響應被作為目標響應也是很小的,故不會如現有技術一樣,一旦域名解析伺服器出現問題後,在問題解決之前會一直出現域名解析錯誤。因此,本申請實施例可以提高域名解析結果的正確率,提高訪問安全性,也增加了通過攻擊或篡改域名解析伺服器數據達到影響用戶訪問結果這一目的的難度。
如圖7所示,在本申請一個可行的實施例中,上述裝置還可以包括:
存儲模塊503,用於從所述域名解析響應中提取並保存相應的域名解析伺服器的第一地址信息,和/或,保存預設域名解析伺服器對應的第二地址信息;
相應的,分發模塊501具體被配置為:按照預設分發策略,從所述第一地址信息對應的域名解析伺服器,和/或,所述第二地址信息對應的預設域名解析伺服器中,選擇所述域名解析目標伺服器。
在本申請一個可行的實施例中,上述分發模塊501具體被配置為:在實現將所述域名解析請求分發至所述域名解析目標伺服器時,向同一域名解析目標伺服器多次發送所述域名解析請求,以使同一域名解析目標伺服器針對同一域名解析請求進行多次解析,得到多個域名解析響應;
相應的,裁決模塊502具體被配置為:在實現接收每個域名解析目標伺服器返回的域名解析響應時,接收同一域名解析目標伺服器返回的多個域名解析響應。
採用本實施例,通過向同一域名解析目標伺服器多次發送同一域名解析請求,使其多次執行解析操作,並多次返回域名解析響應,降低某一次返回的域名解析響應被選為目標響應的概率,特別能降低對於在傳輸鏈路中發送的數據被篡改造成的解析錯誤,對本次域名解析結果的影響,進一步提高訪問安全性。
具體實現中,本申請實施例還提供一種計算機存儲介質,其中,該計算機存儲介質可存儲有程序,該程序執行時可包括本發明提供的呼叫方法的各實施例中的部分或全部步驟。所述的存儲介質可為磁碟、光碟、只讀存儲記憶體(英文:read-onlymemory,簡稱:rom)或隨機存儲記憶體(英文:randomaccessmemory,簡稱:ram)等。
本領域的技術人員可以清楚地了解到本發明實施例中的技術可藉助軟體加必需的通用硬體平臺的方式來實現。基於這樣的理解,本發明實施例中的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟體產品的形式體現出來,該計算機軟體產品可以存儲在存儲介質中,如rom/ram、磁碟、光碟等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,伺服器,或者網絡設備等)執行本發明各個實施例或者實施例的某些部分所述的方法。
本說明書中各個實施例之間相同相似的部分互相參見即可。尤其,對於裝置實施例而言,由於其基本相似於方法實施例,所以描述的比較簡單,相關之處參見方法實施例中的說明即可。
以上所述的本發明實施方式並不構成對本發明保護範圍的限定。