用于處理dns請求的方法和系統(tǒng)的制作方法
【技術領域】
[0001]本發(fā)明大體上涉及計算機網絡的領域。更具體來說,本發(fā)明涉及用于在網關中處理域名服務(DNS)請求的方法以及系統(tǒng)。所述網關基于第二主機的因特網協(xié)議(IP)地址的地理位置確定是否使用第二隧道來向第二主機傳送數據的決定,其中第二主機的IP地址在第一 DNS響應中指定。
【背景技術】
[0002]域名系統(tǒng)(DNS)是用于計算機、服務、或連接到因特網或專用網絡的任何資源的分層分布式命名系統(tǒng)。它使各種類型的信息與分配給參與實體中的每一者的域名相關聯(lián)。出于在全世界定位計算機服務以及裝置的目的,DNS將這些名稱的請求解析成因特網協(xié)議(IP)地址。例如由于內容分布式網絡、管理員的干預、以及是否包括DNS服務器的原因,不同的DNS服務器可以不同方式解析特定的DNS請求。在另一實例中,由于政治性原因或法規(guī),位于國家A中的DNS服務器可能不能為在國家A中受限的網站提供準確IP地址。通常已知在國家A中受限的網站的IP地址可能不可由位于國家A中的主機或網關訪問。還常見的是,在國家A中受限的網站的IP地址的地理位置最可能在國家A外部。為了克服此問題,IP地址的IP包可以通過虛擬專用網絡(VPN)連接等隧道來發(fā)送或接收。技術中的一者是在網關處建立規(guī)則或策略以通過隧道或VPN具有指向受限IP地址、域名和/或網站的數據。對于管理員而言,如果存在許多受限IP地址、域名和/或網站,特別地如果不知道哪些是受限的,那么建立規(guī)則以及策略可能變得非常不便。
【發(fā)明內容】
[0003]本發(fā)明揭示了用于在網關中處理域名服務(DNS)請求的方法,所述網關包括至少一個局域網(LAN)接口以及至少一個廣域網(WAN)接口。所述網關經由網關的至少一個LAN接口中的一者從第一主機接收第一 DNS請求。所述網關選擇至少一個DNS服務器。如果至少一個DNS服務器是通過至少一個隧道可訪問的,那么通過至少一個隧道向至少一個DNS服務器發(fā)送至少一個新DNS請求?;蛘撸绻辽僖粋€DNS服務器是通過任何隧道都不可訪問的,那么在不使用隧道的情況下向至少一個DNS服務器發(fā)送至少一個新DNS請求。至少一個新DNS請求是基于第一 DNS請求,使得至少一個新DNS請求的內容與第一 DNS請求的內容相同。
[0004]根據本發(fā)明的實施例中的一者,選擇至少一個DNS服務器的步驟包括確定由網關通過至少一個隧道可訪問的一或多個DNS服務器。所述網關隨后從一或多個DNS服務器選擇至少一個DNS服務器。
[0005]根據本發(fā)明的實施例中的一者,用于在網關中處理DNS請求的方法進一步包括所述網關從至少一個DNS服務器接收第一DNS響應。所述網關隨后經由網關的LAN接口中的一者向主機發(fā)送新DNS響應。新DNS響應是基于第一 DNS響應。所述網關通過使用IP地理位置數據庫來確定在第一 DNS響應中指定的IP地址的地理位置,且確定是否使用第二隧道在第一主機與第二主機之間傳送數據的決定。第二主機是通過在第一 DNS響應中指定的IP地址可訪問的。如果所述決定是使用第二隧道,那么所述網關使用第二隧道在第一主機與第二主機之間傳送數據?;蛘撸绻鰶Q定是不使用第二隧道或如果不存在決定,那么所述網關不使用第二隧道在第一主機與第二主機之間傳送數據。
[0006]根據本發(fā)明的實施例中的一者,第一DNS響應通過第一隧道接收。第一隧道是用于發(fā)送至少一個新DNS請求的至少一個隧道中的一者。在一個變型例中,第一隧道與第二隧道相同?;蛘?,第一隧道不與第二隧道相同。
[0007]根據本發(fā)明的實施例中的一者,如果網關確定使用第二隧道,那么第二隧道進一步用于在網關與第二主機之間傳送數據。
[0008]根據本發(fā)明的實施例中的一者,確定是否在網關與第二主機之間或在第一主機與第二主機之間傳送數據的步驟是基于在第一 DNS響應中指定的IP地址的地理位置。
[0009]根據本發(fā)明的實施例中的一者,至少一個新DNS請求的數目是至少兩個,使得通過網關發(fā)送至少兩個新DNS請求。多個DNS響應在網關處被接收且第一 DNS響應選自所述多個DNS響應。如果存在通過至少一個隧道接收的至少一個DNS響應,那么第一 DNS響應選自通過至少一個隧道接收的至少一個DNS響應?;蛘?,如果沒有DNS響應通過至少一個隧道中的任一者接收,那么第一 DNS響應選自所接收的多個DNS響應。多個DNS響應可以在預定義時間段內被接收。
[0010]根據本發(fā)明的實施例中的一者,確定是否在網關與第二主機之間或在第一主機與第二主機之間傳送數據的步驟是基于在多個DNS響應中的至少兩者中指定的IP地址是否相同。
[0011]根據本發(fā)明的實施例中的一者,是否在第一主機與第二主機之間傳送數據的決定存儲在計算機可讀存儲媒體中。當在第一DNS響應的生存時間(TTL)字段中指定的時間段已經期滿時,從計算機可讀存儲媒體刪除所述決定。
[0012]根據本發(fā)明的實施例中的一者,是否在第一主機與第二主機之間傳送數據的決定存儲在計算機可讀存儲媒體中。所述決定含有在第一 DNS響應中指定的IP地址。當在第一DNS響應的TTL字段中指定的時間段已經期滿時,將至少一個第二新DNS請求發(fā)送到至少一個DNS服務器。與至少一個第二新DNS請求相對應的第二 DNS響應被接收。在所述決定中的IP地址隨后更新成在第二 DNS響應中指定的IP地址。
【具體實施方式】
[0013]以下說明僅提供優(yōu)選的示例性實施例且并不意圖限制本發(fā)明的范圍、適用性或配置。實際上,以下優(yōu)選的示例性實施例的說明將為所屬領域的技術人員提供用于實施本發(fā)明的優(yōu)選的示例性實施例的有用描述。應理解,在不脫離如在所附權利要求書中闡述的本發(fā)明的精神和范圍的情況下可以對元件的功能以及布置進行各種改變。
[0014]在以下描述中給出具體細節(jié)以提供對實施例的透徹理解。然而,所屬領域的技術人員應理解,所述實例可在沒有這些具體細節(jié)的情況下實踐。例如,可以框圖示出電路以便不以不必要的細節(jié)混淆實施例。在其它實例中,在沒有不必要的細節(jié)的情況下示出熟知的電路、過程、算法、結構以及技術以便避免混淆實施例。
[0015]同樣,應注意,實施例可以描述為過程,所述過程描繪為流程圖、流程圖表、數據流圖、結構圖或框圖。盡管流程圖可以將操作描述為順序過程,但是許多操作可以并行或同時執(zhí)行。另外,可以重新布置操作的次序。當操作完成時,過程終止,但是過程可以具有不包含在圖中的另外步驟。過程可以與方法、函數、步驟、子例程、子程序等相對應。當過程與函數相對應時,其終止與所述函數返回到調用函數或主函數相對應。
[0016]實施例或其各部分可以程序指令來實施,所述程序指令可在處理單元上操作以用于執(zhí)行如本文中所描述的功能以及操作。構成各種實施例的程序指令可以存儲在存儲媒體中。
[0017]構成各種實施例的程序指令可以存儲在存儲媒體中。此外,如本文中所揭示,術語“計算機可讀存儲媒體”可以表示用于存儲數據的一或多個裝置,包含只讀存儲器(R0M)、可編程只讀存儲器(PROM)、可擦除可編程只讀存儲器(EPROM)、隨機存取存儲器(RAM)、磁RAM、磁芯存儲器、軟盤、軟磁盤、硬盤、磁帶、CD-ROM、閃存存儲器裝置、存儲卡和/或用于存儲信息的其它機器可讀媒體。術語“計算機可讀存儲媒體”還可以包含但不限于,便攜式或固定存儲裝置、光學存儲媒體、磁性媒體、存儲器芯片或盒式磁盤、無線信道以及能夠存儲、含有或攜載指令和/或數據的各種其它媒體。計算機可讀存儲媒體可以通過虛擬化來實現,且可以是虛擬計算機可讀存儲媒體,包含在基于云的實例中的虛擬計算機可讀存儲媒體。
[0018]如本文所使用的術語“計算機可讀媒體”是指任何參與向處理單元提供指令以供執(zhí)行的媒體。計算機可讀媒體僅是機器可讀媒體的一個實例,所述機器可讀媒體可以攜載指令以用于實施本文中所描述的方法和/或技術中的任一者。此媒體可以采用許多形式,包含但不限于非易失性媒體、易失性媒體和傳輸媒體。非易失性媒體包含(例如)光盤或磁盤。易失性媒體包含動態(tài)存儲器。傳輸媒體包含同軸電纜、銅線以及光纖。傳輸媒體還可以采用聲波或光波的形式,例如在無線電波以及紅外線數據通信期間產生的聲波或光波。
[0019]易失性存儲器可以用于在通過處理單元執(zhí)行指令期間存儲臨時變量或其它中間信息。非易失性存儲器或靜態(tài)存儲器可以用于存儲用于處理器的靜態(tài)信息以及指令,以及各種系統(tǒng)配置參數。
[0020]存儲媒體可以包含多個軟件模塊,所述軟件模塊可以實施為通過處理單元使用任何合適的計算機指令類型來執(zhí)行的軟件代碼。軟件代碼可以作為一系列指令或命令、或作為程序存儲在存儲媒體中。
[0021]在將一或多個指令的一或多個序列攜載到處理器以用于執(zhí)行時,可以涉及各種形式的計算機可讀媒體。例如,最初可以在磁盤上從遠程計算機攜載指令。替代地,遠程計算機可以將所述指令加載到其動態(tài)存儲器中,且向運行一或多個指令的一或多個序列的系統(tǒng)發(fā)送指令。
[0022]處理單元可以是微處理器、微控制器、數字信號處理器(DSP)、那些裝置的任何組合、或經配置以處理信息的任何其它電路。
[0023]處理單元執(zhí)行程序指令或代碼段以用于實施本發(fā)明的實施例。此外,實施例可以由硬件、軟件、固件、中間件、微碼、硬件描述語言或其任何組合來實施。當用軟件、固件、中間件或微碼實施時,執(zhí)行必需的任務的程序代碼或代碼段可以存儲在計算機可讀存儲媒體中。處理單元可以執(zhí)行必需的任務。處理單元可以通過虛擬化來實現,且可以是虛擬處理單元,包含在基于云的實例中的虛擬處理單元。
[0024]本發(fā)明的實施例涉及使用計算機系統(tǒng)來實施本文中所描述的技術。在實施例中,本發(fā)明的處理單元可以存在于計算機平臺等機器上。根據本發(fā)明的一個實施例,本文中所描述的技術由計算機系統(tǒng)執(zhí)行,以響應于處理單元執(zhí)行易失性存儲器中所含有的一或多個指令的一或多個序列。此類指令可以從另一計算機可讀媒體讀取到易失性存儲器中。對易失性存儲器中所含有的指令的序列的執(zhí)行使得處理單元執(zhí)行本文中所描述的過程步驟。在替代實施例中,硬接線電路可以用于取代或結合軟件指令以實施本發(fā)明。因此,本發(fā)明的實施例不限于硬件電路以及軟件的任何特定組合。
[0025]代碼段或程序指令可以表示步驟、函數、子程序、程序、例程、子例程、模塊、軟件包、類、或指令、數據結構、或程序語句的任何組合。通過傳遞和/或接收信息、數據、引數、參數或存儲器內容,代碼段可以耦合到另一代碼段、程序指令或硬件。信息、引數、參數、數據等可以經由包含存儲器共享、消息傳遞、令牌傳遞、網絡傳輸等任何合適的方法傳遞、傳輸或傳輸。
[0026]或者,硬接線電路可以用于取代或結合軟件指令以實施符合本發(fā)明的原理的過程。因此,符合本發(fā)明的原理的實施方案不限于硬件電路以及軟件的任何特定組合。
[0027]接入網絡允許網關連接到其它網絡,例如因特網以及外聯(lián)網。為了確定網絡是否是可訪問的,網關可以定期發(fā)送出包以測試可訪問性。例如,網關可以向主機發(fā)送ICMP回應請求包且測量ICMP回應回復包的到達時間以確定網絡是否是可訪問的。所屬領域的技術人員將清楚,可以使用更多的方法以及技術來確定網絡是否是可訪問的。
[0028]本發(fā)明的當前優(yōu)選的實施例可以利用網關。網關是在網絡上的裝置或節(jié)點,其執(zhí)行不同類型網絡或應用之間的協(xié)議轉換且能夠處理DNS請求以及響應。術語“網關”并不意圖限于單一類型的裝置,因為出于本申請案的目的,可以充當用戶與網絡之間的網橋的任何裝置、硬件或軟件都可以被認為是網關。網關可以與多個多網絡耦合。出于本發(fā)明的目的,路由器、交換機、網橋、無線接入點、計算裝置中的虛擬機或能夠充當朝向另一網絡的接入點且處理DNS請求以及響應的任何設備都可以被認為是網關。
[0029]網絡接口可以通過獨立的電子組件實施或者可以與其它電子組件整合。根據配置,網絡接口可以不具有網絡連接或具有至少一個網絡連接。網絡接口僅連接到一個接入網絡。因此,可以存在通過一個接入網絡攜載的超過一個網絡連接。網絡接口可以是以太網接口、幀中繼接口、光纖接口、電纜接口、DSL接口、令牌環(huán)接口、串行總線接口、通用串行總線(USB)接口、火線接口、外圍組件互連(PCI)接口等。
[0030]網絡接口可以連接到有線或無線接入網絡。接入網絡可以攜載一或多個網絡協(xié)議數據。有線接入網絡可以使用以太網、光纖、電纜、DSL、幀中繼、令牌環(huán)、串行總線、USB、火線、PCI或可以傳遞信息的任何材料來實施。無線接入網絡可以使用紅外線、高速分組接入(HSPA)、HSPA+、長期演進(LTE)、WiMax、GPRS、EDGE、GSM、CDMA、WiF1、CDMA2000、WCDMA、TD-SCDMA、藍牙、WiBRO、演進數據優(yōu)化(EV-DO);數字增強型無繩通信(DECT);數字AMPS(IS-136/TDMA);集成數字增強型(iDEN)或任何其它無線技術來實施。
[0031]接入網絡可以攜載一或多個網絡協(xié)議數據,包含但不限于因特網協(xié)議(IP)、IPv4或IPv6。接入網絡可以是有線網絡或無線網絡??山尤霟o線網絡可以使用光纖、電纜或可以傳遞信息的任何材料來實施??山尤霟o線網絡還可以使用紅外線、以太網、DSL、高速分組接入(HSPA)、HSPA+、長期演進(LTE)、WiMax、GPRS、EDGE、GSM、CDMA、WiF1、CDMA2000、WCDMA、TD-SCDMA、藍牙、WiBRO或任何其它無線技術來實施。
[0032]實施例或其各部分可以計算機數據信號來實施,所述計算機數據信號可以采用用于經由傳輸媒體進行通信的