[發明專利]一種DNS數據包的代理轉發方法有效
| 申請號: | 201310003934.6 | 申請日: | 2013-01-07 |
| 公開(公告)號: | CN103095608A | 公開(公告)日: | 2013-05-08 |
| 發明(設計)人: | 朱其武;王金桂 | 申請(專利權)人: | 深圳市共進電子股份有限公司 |
| 主分類號: | H04L12/883 | 分類號: | H04L12/883;H04L29/12 |
| 代理公司: | 深圳市凱達知識產權事務所 44256 | 代理人: | 王琦 |
| 地址: | 518067 廣東省深圳市南山區南海*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 dns 數據包 代理 轉發 方法 | ||
技術領域
本發明涉及通信技術領域,尤其涉及一種DNS數據包的代理轉發方法。
背景技術
DNS(?域名系統,Domain?Name?System)?是一種用于TCP/IP(?傳輸控制協議/?因特網互聯協議,Transmission?Control?Protocol/Internet?Protocol)?的應用程序的分布式數據庫,它提供主機名字和IP?地址之間的轉換信息。
目前通常采用的域名解析方法如下:1)?客戶端向DNS服務器發送域名解析請求;2)DNS?服務器對域名進行解析;3)DNS服務器將解析結果返回給客戶端;以及4)?客戶端從該結果中選擇一個IP?地址進行訪問。
在家庭網關的使用中,經常會使用家庭網關設備(CPE,Customer?Premise?Equipment)作為代理,解析LAN側用戶的域名解析請求。???這樣可以對用戶的上網行為進行一定的控制,或者是對通信運營商的業務進行支持(比如說通過注冊才可以上網等)。
而一個CPE中,時常需要建立多條wan連接,用于上網,用于IPTV,用TR069管理等。每條wan連接使用不同的業務,都有相應的DNS請求解析。這些請求可以是來自CPE,也可能是LAN側用戶請求的。對于來自用戶的請求,CPE代理都統一使用作為默認網關的wan連接解析。
為了在LAN側區分不同的業務使用,通常使用端口綁定,將LAN端口跟相應的WAN連接綁定起來。這樣,如圖1所示,通過特定LAN端口進來的數據包,會被標記相應的mark值,然后根據這個mark值走策略路由,最終到達綁定的對應WAN接口;而未被標記mark值的數據包,通過默認路由發送出去。
但是,因為DNS解析使用了代理,由于代理進程屬于應用層,代理進程在接收內核數據的時候不能讀取skb數據包(skb是socket?buffer(套接字緩存)的縮寫,在整個linux的協議棧中是用來打包數據的結構體,習慣上用skb表示一個數據包)的mark屬性值,所以進程接收的DNS數據包不知道之前ebtables設置的mark值,使得在轉發的時候發送的數據包是不帶mark值的。因而代理進程在接收DNS數據包并轉發的時候,會使得mark值丟失,于是轉發的數據包最終會通過默認路由發送出去,而不是綁定的WAN接口。
如果所有的WAN連接使用的DNS服務器都是相同的,那么無論走那條WAN連接都可以正確解析。但是,如果不同WAN連接的DNS服務器不同,并且各DNS服務器的業務內容也不同(運營商有時會在某些業務上構建自己的DNS服務器),則會出現異常錯誤,最終不能解析或者解析錯誤。因而,有必要針對此問題提供一種有效的解決方案。
發明內容
本發明的目的在于提供一種DNS數據包的代理轉發方法,克服現有DNS數據包的代理轉發方法過程中mark值丟失所造成的解析失敗的缺陷。
本發明的目的是通過以下技術方案實現的:
一種DNS數據包的代理轉發方法,包括步驟:
在代理進程接收域名解析請求數據包時,讀取linux內核中對應skb數據包的mark值,將該域名解析請求數據包與其對應的mark值一并存儲于緩沖鏈表中;
在數據包轉發前,對于緩沖鏈表中有標記mark值的域名解析請求數據包,從緩沖鏈表中讀取標記的mark值,將該mark值設置于該域名解析請求數據包對應的套接字的屬性選項中,然后通過套接字轉發域名解析請求數據包。
上述方法中,通過系統調用recvmsg函數讀取linux內核中對應skb數據包的mark值。
上述方法中,對于緩沖鏈表中未標記有mark值的域名解析請求數據包,將該域名解析請求數據包通過默認路由轉發至域名服務器。
上述方法中,在通過套接字轉發域名解析請求數據包的過程中,將套接字中的mark值設置于對應skb數據包的mark選項中,由linux內核路由模塊根據該mark值選擇匹配的策略路由。
與現有技術相比,本發明實施例具有以下有益效果:
為了避免DNS數據包在轉發過程中其mark值丟失,本發明實施利用數據包透傳技術:采用擴展linux套接字的選項配置,使得代理進程可以在讀取LAN側數據包的時候讀取記錄mark值;在轉發數據包的時候,設置mark值到套接字選項中。這樣可以保證mark值不會丟失,DNS數據包能夠根據原來的mark值走策略路由,從而確保了域名解析的正確性。
附圖說明
圖1是現有技術中DNS數據包的代理轉發方法流程圖。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于深圳市共進電子股份有限公司,未經深圳市共進電子股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310003934.6/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:汽輪機油箱液位監測裝置
- 下一篇:面向高洪期的應急水文遙測站系統





