本發(fā)明涉及通信領(lǐng)域,尤其涉及一種IPSEC隧道恢復(fù)方法、分支出口設(shè)備和IPSEC VPN系統(tǒng)。
背景技術(shù):
IPSEC(英文全稱:IP security,因特網(wǎng)協(xié)議安全)VPN(英文全稱:Virtual Private Network,中文全稱:虛擬專用網(wǎng))隧道不一定一直都有流量,此時(shí)會(huì)觸發(fā)發(fā)送DPD(英文全稱:dead peer detection,中文全稱:失效對(duì)等體檢測(cè))探測(cè)報(bào)文,DPD探測(cè)報(bào)文是一種UDP報(bào)文。由于UDP流是無連接的,中間網(wǎng)絡(luò)設(shè)備經(jīng)常會(huì)對(duì)五元組(源IP地址、目的IP地址、源端口、目的端口、協(xié)議號(hào))固定不變的長(zhǎng)UDP流進(jìn)行丟棄或抑制。一旦IPSEC的DPD探測(cè)報(bào)文被丟棄或抑制,那么IPSEC VPN隧道就會(huì)斷開,從而導(dǎo)致內(nèi)網(wǎng)資源訪問異常。而這時(shí)如果重新協(xié)商,中間網(wǎng)絡(luò)設(shè)備的流表的五元組可能還未老化,重新協(xié)商還是使用原來的五元組,導(dǎo)致協(xié)商報(bào)文還是被中間網(wǎng)絡(luò)設(shè)備丟棄或抑制,導(dǎo)致隧道無法正常建立。
現(xiàn)有技術(shù)通常采用人工介入關(guān)閉IPSEC功能,等待十幾分鐘之后,然后重新配置IPSEC使能,此時(shí)由于中間網(wǎng)絡(luò)設(shè)備的流表已經(jīng)老化了,從而能建立新的IPSEC隧道,正常進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā);或者通過人工清除中間網(wǎng)絡(luò)設(shè)備的流表,然后重新配置IPSEC使能。但是該方案仍然需要人工操作不便于快速重新建立IPSEC VPN隧道。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的實(shí)施例提供一種IPSEC隧道恢復(fù)方法、分支出口設(shè)備和IPSEC VPN系統(tǒng),用于解決長(zhǎng)UDP流被中間網(wǎng)絡(luò)設(shè)備丟棄或抑制導(dǎo)致IPSEC隧道斷開需要人工介入恢復(fù)的問題。
為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
第一方面,提供了一種IPSEC隧道恢復(fù)方法,包括:
分支出口設(shè)備隨機(jī)創(chuàng)建IPSEC備用端口;
所述分支出口設(shè)備使用IPSEC默認(rèn)端口作為源端口與總部出口設(shè)備進(jìn)行因特網(wǎng)密鑰交換協(xié)議IKE協(xié)商以建立第一IPSEC隧道;
IKE協(xié)商成功后,所述分支出口設(shè)備與所述總部設(shè)備通過所述第一IPSEC隧道進(jìn)行第一內(nèi)網(wǎng)報(bào)文的通信;
當(dāng)所述第一內(nèi)網(wǎng)報(bào)文的時(shí)間戳無更新時(shí),所述分支出口設(shè)備觸發(fā)第一失效對(duì)等體檢測(cè)DPD探測(cè);
如果所述第一DPD探測(cè)失敗,則所述分支出口設(shè)備斷開所述第一IPSEC隧道,并分別使用所述IPSEC默認(rèn)端口和所述IPSEC備用端口作為源端口與所述總部出口設(shè)備進(jìn)行IKE協(xié)商以建立第二IPSEC隧道。
第二方面,提供了一種分支出口設(shè)備,包括:
創(chuàng)建單元,用于隨機(jī)創(chuàng)建因特網(wǎng)協(xié)議安全I(xiàn)PSEC備用端口;
協(xié)商單元,用于使用IPSEC默認(rèn)端口作為源端口與總部出口設(shè)備進(jìn)行因特網(wǎng)密鑰交換協(xié)議IKE協(xié)商以建立第一IPSEC隧道;
通信單元,用于IKE協(xié)商成功后,與所述總部設(shè)備通過所述第一IPSEC隧道進(jìn)行第一內(nèi)網(wǎng)報(bào)文的通信;
探測(cè)單元,用于當(dāng)所述第一內(nèi)網(wǎng)報(bào)文的時(shí)間戳無更新時(shí),觸發(fā)第一失效對(duì)等體檢測(cè)DPD探測(cè);
所述協(xié)商單元,還用于如果所述第一DPD探測(cè)失敗,則斷開所述第一IPSEC隧道,并分別使用所述IPSEC默認(rèn)端口和所述IPSEC備用端口作為源端口與所述總部出口設(shè)備進(jìn)行IKE協(xié)商以建立第二IPSEC隧道。
第三方面,提供了一種因特網(wǎng)協(xié)議安全虛擬專用網(wǎng)IPSEC VPN系統(tǒng),包括如第二方面所述的分支出口設(shè)備。
本發(fā)明的實(shí)施例提供的IPSEC隧道恢復(fù)方法、分支出口設(shè)備和IPSEC VPN系統(tǒng),通過分支出口設(shè)備使用IPSEC默認(rèn)端口作為源端口與總部出口設(shè)備進(jìn)行IKE協(xié)商以建立第一IPSEC隧道,并使用第一IPSEC隧道進(jìn)行內(nèi)網(wǎng)報(bào)文的通信,當(dāng)內(nèi)網(wǎng)報(bào)文的時(shí)間戳無更新時(shí)觸發(fā)DPD探測(cè),如果DPD探測(cè)失敗,說明五元組固定不變的長(zhǎng)UDP報(bào)文有可能被中間網(wǎng)絡(luò)設(shè)備丟棄或抑制導(dǎo)致通信失敗,此時(shí)分支出口設(shè)備斷開第一IPSEC隧道,并分別使用IPSEC默認(rèn)端口和IPSEC備用端口作為源端口與總部出口設(shè)備進(jìn)行IKE協(xié)商以建立第二IPSEC隧道,此時(shí),由于是新的IPSEC備用端口作為源端口,改變了五元組,因此通信過程中的長(zhǎng)UDP報(bào)文不會(huì)被中間網(wǎng)絡(luò)設(shè)備丟棄或抑制,解決了長(zhǎng)UDP流被中間網(wǎng)絡(luò)設(shè)備丟棄或抑制導(dǎo)致IPSEC隧道斷開需要人工介入恢復(fù)的問題。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明的實(shí)施例提供的IPSEC VPN系統(tǒng)的結(jié)構(gòu)示意圖;
圖2為本發(fā)明的實(shí)施例提供的一種IPSEC隧道恢復(fù)方法的流程示意圖;
圖3為本發(fā)明的實(shí)施例提供的IKE協(xié)商的第一階段的主模式的報(bào)文交互示意圖;
圖4為本發(fā)明的實(shí)施例提供的IKE協(xié)商的第一階段的野蠻模式的報(bào)文交互示意圖;
圖5為本發(fā)明的實(shí)施例提供的IKE協(xié)商的第二階段的報(bào)文交互示意圖;
圖6為本發(fā)明的實(shí)施例提供的進(jìn)行IKE協(xié)商以建立第二IPSEC隧道的流程示意圖;
圖7為本發(fā)明的實(shí)施例提供的另一種IPSEC隧道恢復(fù)方法的流程示意圖;
圖8為本發(fā)明的實(shí)施例提供的進(jìn)行IKE協(xié)商以重建第一IPSEC隧道的流程示意圖;
圖9為本發(fā)明的實(shí)施例提供的分支出口設(shè)備的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
隨著網(wǎng)絡(luò)的不斷發(fā)展和擴(kuò)張,網(wǎng)絡(luò)的安全性受到越來越多的關(guān)注。雖然在過去的很多年中,很多方法被提出來滿足網(wǎng)絡(luò)的安全需求,但是人們真正需要的是在IP(英文全稱:internet protocol,中文全稱:因特網(wǎng)協(xié)議)層提供安全性的方法,這樣可以使TCP(英文全稱:transmission control protocol,中文全稱:傳輸控制協(xié)議)/IP高層的所有協(xié)議受益。于是就產(chǎn)生了為IP通信帶來安全性的協(xié)議IPSEC。
IPSEC并非一個(gè)單獨(dú)的協(xié)議,而是一系列為IP網(wǎng)絡(luò)提供完成安全性的協(xié)議和服務(wù)的集合。這些服務(wù)和協(xié)議結(jié)合起來提供不同類型的保護(hù)。為上次協(xié)議和應(yīng)用提供透明的安全服務(wù)。
IPSEC中的一些基本概念:
SA(英文全稱:security association,中文全稱:安全聯(lián)盟):為安全目的創(chuàng)建的一個(gè)單向的邏輯連接,所有經(jīng)過同一SA的數(shù)據(jù)會(huì)得到相同的服務(wù)、AH(英文全稱:authentication header,中文全稱:認(rèn)證頭部)或者ESP(英文全稱:encapsulating security payload,中文全稱:封裝安全負(fù)載),如果同一個(gè)數(shù)據(jù)流需要同時(shí)使用AH和ESP的話,那么需要兩個(gè)嵌套的SA,雙向通信維護(hù)一對(duì)SA。
SA DATABASE(英文全稱:security association database,中文全稱:安全聯(lián)盟數(shù)據(jù)庫):用于存放和SA關(guān)聯(lián)的所有狀態(tài)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)。
安全參數(shù)索引(英文全稱:security parameters index):AH或者ESP報(bào)頭中的32位數(shù)值,用于在接收端識(shí)別數(shù)據(jù)流到SA的綁定關(guān)系。
SPD(英文全稱:security policy database,中文全稱:安全策略數(shù)據(jù)庫):指明所有IP數(shù)據(jù)報(bào)文應(yīng)使用何種安全服務(wù),以及如何獲得這些服務(wù)的數(shù)據(jù)結(jié)構(gòu)。
安全處理協(xié)議:AH或者ESP,可獨(dú)立使用,也可同時(shí)使用。前者提供數(shù)據(jù)完整性保護(hù),后者提供數(shù)據(jù)私密性和數(shù)據(jù)完整性保護(hù)。兩個(gè)協(xié)議都是將一個(gè)變長(zhǎng)的報(bào)文結(jié)構(gòu)插入到IP頭和上層協(xié)議之間。都支持傳輸模式和隧道模式。傳輸模式時(shí)在原始IP頭部和上層協(xié)議之間插入AH或者ESP。隧道模式是增加新的IP頭部,舊的IP頭部用來作為負(fù)載。
IKE(英文全稱:internet key exchange protocol,中文全稱:因特網(wǎng)密鑰交換協(xié)議):相對(duì)獨(dú)立,一個(gè)通用的密鑰協(xié)商協(xié)議。為因特網(wǎng)上任何需要加密的和認(rèn)證的通用協(xié)議提供算法和密鑰協(xié)商服務(wù)。IKE1.0將交換過程分為兩個(gè)階段,兩種模式:主模式和野蠻模式。
第一階段:建立IKE自身的安全聯(lián)盟,協(xié)商IKE加密和認(rèn)證的算法和密鑰。
第二階段:為IPSEC提供安全聯(lián)盟的算法和密碼協(xié)商。
核心算法:DH(Diffie-Hellman)交換。雙方可以通過各自的私有信息和相互交換的公開信息,一起計(jì)算出公共的秘密,而網(wǎng)絡(luò)監(jiān)聽者無法計(jì)算出該秘密。
IPSEC的工作模式:IPSEC的工作模式主要分為傳輸模式和隧道模式兩種。這兩種模式將AH和ESP頭部應(yīng)用到IP數(shù)據(jù)包中。
傳輸模式:在IP頭部和高層協(xié)議之間插入一個(gè)IPSEC的報(bào)頭:AH或者ESP。這種方式下,IP報(bào)頭和原始的IP報(bào)文中的IP頭部相同,只是IP協(xié)議字段被修改為51(AH)或者50(ESP)。并重新計(jì)算IP報(bào)頭校驗(yàn)和。傳輸模式下,IP地址保持明文。
傳輸模式中的AH:IP頭部移到左邊,插入AH,對(duì)整個(gè)數(shù)據(jù)包進(jìn)行散列來提供認(rèn)證。這些新的數(shù)據(jù)包不支持NAT(英文全稱:network address translation,中文全稱:網(wǎng)絡(luò)地址轉(zhuǎn)換),因?yàn)楦淖僆P地址會(huì)導(dǎo)致認(rèn)證失敗,可以在IPSEC AH封裝之前使用NAT,而不能再封裝之后。
傳輸模式中的ESP:IP頭部移到左邊,插入ESP頭部,在數(shù)據(jù)段后面插入ESP尾部,并在新的數(shù)據(jù)末尾添加一些控制信息來實(shí)現(xiàn)ESP傳輸模式,如果要求加密,則對(duì)數(shù)據(jù)和ESP未進(jìn)行加密,認(rèn)證使用新的數(shù)據(jù)包中的ESP報(bào)頭,數(shù)據(jù)部分和ESP報(bào)尾,而不使用IP頭,允許在這些數(shù)據(jù)包上使用NAT。
IPSEC隧道模式:與傳輸模式不同,隧道模式下,原始IP分組被封裝成一個(gè)新的IP數(shù)據(jù)包,并在內(nèi)部報(bào)頭和外部報(bào)頭之間插入AH或者ESP,源IP地址被當(dāng)作有效載荷的一部分受到IPSEC的安全保護(hù)。
本發(fā)明實(shí)施例提供了一種IPSEC VPN系統(tǒng),參照?qǐng)D1中所示,包括:分支內(nèi)網(wǎng)設(shè)備11、分支出口設(shè)備12、總部出口設(shè)備13和總部數(shù)據(jù)服務(wù)器14。分支內(nèi)網(wǎng)設(shè)備11無法直接訪問到總部數(shù)據(jù)服務(wù)器14(例如ERP系統(tǒng)),分支出口設(shè)備12和總部出口設(shè)備13之間先建立一條IPSEC隧道,然后分支內(nèi)網(wǎng)設(shè)備11訪問總部數(shù)據(jù)服務(wù)器14的數(shù)據(jù)經(jīng)過IPSEC VPN的封裝穿越公網(wǎng)網(wǎng)絡(luò),到達(dá)總部出口設(shè)備13,總部出口設(shè)備13進(jìn)行解封裝,剩下內(nèi)網(wǎng)的報(bào)文,然后送到總部數(shù)據(jù)服務(wù)器14,反之亦然。
本發(fā)明實(shí)施例提供的IPSEC隧道恢復(fù)方法、分支出口設(shè)備和IPSEC VPN系統(tǒng),分支出口設(shè)備使用IPSEC默認(rèn)端口建立的IPSEC隧道通信過程中,由于長(zhǎng)時(shí)間通信的長(zhǎng)UDP報(bào)文被中間網(wǎng)絡(luò)設(shè)備丟棄或抑制導(dǎo)致通信失敗之后,采用其他端口作為源端口來重建IPSEC隧道,由于源端口為新端口,改變了五元組,長(zhǎng)UDP報(bào)文不會(huì)被中間網(wǎng)絡(luò)設(shè)備丟棄或抑制,可以順利重建IPSEC隧道并使用重建的IPSEC隧道進(jìn)行通信。解決了長(zhǎng)UDP流被中間網(wǎng)絡(luò)設(shè)備丟棄或抑制導(dǎo)致IPSEC隧道斷開需要人工介入恢復(fù)的問題。
實(shí)施例1、
本發(fā)明實(shí)施例提供了一種IPSEC隧道恢復(fù)方法,應(yīng)用于上述IPSEC VPN系統(tǒng),參照?qǐng)D2中所示,該方法包括:
S101、分支出口設(shè)備隨機(jī)創(chuàng)建IPSEC備用端口。
此時(shí),分支出口設(shè)備會(huì)隨機(jī)創(chuàng)建IPSEC備用端口,包括第一備用端口和第二備用端口。
S102、分支出口設(shè)備使用IPSEC默認(rèn)端口作為源端口與總部出口設(shè)備進(jìn)行IKE協(xié)商以建立第一IPSEC隧道。
IPSEC默認(rèn)端口是進(jìn)行IKE協(xié)商時(shí)的默認(rèn)源端口號(hào),IPSEC默認(rèn)端口包括第一默認(rèn)端口和第二默認(rèn)端口,目前,第一默認(rèn)端口可以是500、第二默認(rèn)端口可以是4500端口。分支出口設(shè)備會(huì)默認(rèn)監(jiān)聽從總部數(shù)據(jù)服務(wù)器發(fā)過來的目的端口是上述IPSEC默認(rèn)端口的報(bào)文。
分支出口設(shè)備通過感興趣流觸發(fā)或者自動(dòng)撥號(hào)的方式開始IKE協(xié)商。
IKE協(xié)商包括兩個(gè)階段。第一階段用來建立SA(英文全稱:security alliance,中文全稱:安全聯(lián)盟),第二階段通過SA,為IPSEC協(xié)商具體的安全聯(lián)盟。
對(duì)于IKE協(xié)商的第一階段來說,有主模式和野蠻模式兩種情形,無論是主模式還是野蠻模式,所做的事情都是相同的:建立一個(gè)保密和驗(yàn)證無誤的通信信道即SA,并且建立驗(yàn)證過的密鑰,為雙方的IKE通信提供機(jī)密性、消息完整性以及消息源驗(yàn)證服務(wù)。其它階段的交換都必須要有一個(gè)驗(yàn)證過的SA作為首要條件。第一階段沒有完成之前,其它階段是不允許進(jìn)行協(xié)商的。
對(duì)于IKE的第一階段,主模式的協(xié)商,主要有三次報(bào)文的交互,如圖3中所示:
第一次交換:第一報(bào)文和第二報(bào)文,用于IKE提議和轉(zhuǎn)換方式的協(xié)商。
第二次交換:第三報(bào)文和第四報(bào)文,用于IKE DH和偽隨機(jī)值的交換。
第三次交換:第五報(bào)文和第六報(bào)文,用于通信雙方的身份認(rèn)證。
在第一階段的第一報(bào)文和第二報(bào)文發(fā)送之前,協(xié)商發(fā)起者(分支出口設(shè)備)和響應(yīng)者(總部出口設(shè)備)都必須先計(jì)算好cookie,用于唯一標(biāo)識(shí)每個(gè)單獨(dú)的協(xié)商交換。cookie使用源、目的IP、隨機(jī)數(shù)字、日期、時(shí)間進(jìn)行MD5(英文全稱:message digest algorithm,中文全稱:消息摘要算法第五版)運(yùn)算得出,并且將其放入第一報(bào)文的ISAKMP(英文全稱:internet security association key management protocol,中文全稱:以太網(wǎng)安全聯(lián)盟密鑰管理協(xié)議)頭總,用以標(biāo)識(shí)一個(gè)單獨(dú)的協(xié)商交換。
在第一次交換中,還需要交換雙方的SA載荷,主要包括IKE的散列類型、加密算法、認(rèn)證方法、IKE SA協(xié)商的時(shí)間限制。第一次交換完成之后,通信雙方需要生成用來產(chǎn)生共享密鑰的DH值。生成方法是:雙方各自使用一個(gè)隨機(jī)數(shù)字,通過DH算法對(duì)隨機(jī)數(shù)字進(jìn)行運(yùn)算,得到一個(gè)DH組的值X。然后雙方再根據(jù)DH算法得出一個(gè)臨時(shí)值N。雙方交換DH值之后,通過自己計(jì)算的DH值和交換得到的對(duì)端的DH值進(jìn)行運(yùn)算,就得到一個(gè)只有雙方才知道的共享密鑰,即使第三方獲取到,也無法計(jì)算出來共享密鑰。
第二次交換對(duì)DH組和偽隨機(jī)值進(jìn)行交換。前面兩次之后,所有的信息都已經(jīng)交換完畢,此時(shí)可以將所有的密鑰都計(jì)算出來,并且使用計(jì)算得到的密鑰對(duì)后續(xù)的IKE的報(bào)文提供安全服務(wù)。
第三次交換主要是交換身份驗(yàn)證信息、IP地址或者主機(jī)名以及一個(gè)HASH(中文全稱:哈希)值。如果雙方的HASH值都是相同的,那么雙方認(rèn)證成功,完成IKE第一階段的主模式的共享密鑰方式交換。
分支出口設(shè)備發(fā)出的第一階段的第一報(bào)文和第三報(bào)文的源端口為第一默認(rèn)端口。第一階段的第五報(bào)文和第二階段的報(bào)文,如果是NAT模式,則源端口為第二默認(rèn)端口,如果非NAT場(chǎng)景,則源端口為第一默認(rèn)端口。
主模式的會(huì)話的密鑰是在第二次交換之后就已經(jīng)生成?,F(xiàn)在存在一種情況是:一個(gè)通信對(duì)等體和多個(gè)通信對(duì)等體進(jìn)行通信是需要為每個(gè)對(duì)等體設(shè)置一個(gè)預(yù)共享密鑰的,那么它如何在多個(gè)密鑰中進(jìn)行選擇呢(身份ID在第三次交換中才會(huì)發(fā)送,此時(shí)對(duì)等體并不知道對(duì)端的身份信息)。方法是:根據(jù)前面交換的報(bào)文的IP地址來區(qū)分不同的對(duì)等體。對(duì)于分支出口設(shè)備是動(dòng)態(tài)的IP地址時(shí)就需要用到野蠻模式。
參照?qǐng)D4中所示,第一階段的野蠻模式只需要3個(gè)報(bào)文的交換就可以完成SA的建立,野蠻模式不會(huì)提供身份保護(hù)。
第一報(bào)文:cookie值,SA值,DH組,隨機(jī)值,身份信息。
第二報(bào)文:對(duì)端cookie值,本端cookie值,本端SA值,本端DH,本端隨機(jī)值,本端身份信息,本端計(jì)算出來的HASH值。
第三報(bào)文:雙方的cookie和對(duì)端的HASH值。
由于野蠻模式在第一報(bào)文中就攜帶了身份信息,因此無法對(duì)身份信息進(jìn)行保護(hù)的。這降低了安全性,但是其不依賴于IP地址來表示身份,可以使用IP地址或者NAME等來標(biāo)識(shí)身份信息,而主模式只能使用IP地址。同時(shí)野蠻模式可以支持NAT轉(zhuǎn)換,而主模式無法支持NAT的轉(zhuǎn)換;另外野蠻模式傳遞的報(bào)文更少,效率更高。
對(duì)于IKE協(xié)商的第二階段來說,不管第一階段是采用主模式還是野蠻模式生成的SA,都可以為第二階段提供保護(hù),第二階段的目的是為了其它協(xié)議(IPSEC協(xié)議)生成SA。這一階段是通過快速模式交換來實(shí)現(xiàn)的。
在快速模式中,通信雙方需要協(xié)商擬定IPSEC SA的各項(xiàng)特征,并為其生成密鑰??焖倌J叫枰獜腟KEYID_d狀態(tài)中衍生出用于IPSEC SA的密鑰。隨同交換的隨機(jī)數(shù)以及來自IPSEC SA的SPI及協(xié)議一道,這個(gè)密鑰將在偽隨機(jī)密鑰中生成,這樣可以確保每個(gè)SA都有獨(dú)一無二的密鑰。所有IPSEC的密鑰都是來自相同的密鑰衍生出來的,所以密鑰間是相互關(guān)聯(lián)的。
為了解決上面的問題,提供了一個(gè)PFS選項(xiàng):完美向前保密,用來解決密鑰之間相互無關(guān)性的需求。
為了在快速模式中實(shí)現(xiàn)PFS,需要額外的執(zhí)行一次DH交換,交換完成之后,所有的秘密都將會(huì)被清除掉,因此即使破解了一個(gè)SA,其它的SA也無法破解。
參照?qǐng)D5中所示,當(dāng)啟用了PFS時(shí),才需要交換XA和XB,并且在計(jì)算HASH和密鑰時(shí)添加XA和XB。ID負(fù)載是可選的,如果接收方不支持ID負(fù)載,會(huì)回應(yīng)一個(gè)IN-VALID-ID-INFORMATION的通知錯(cuò)誤,最后是HASH值交換用于認(rèn)證。
上面交換的XA和XB,可以生成一個(gè)新的DH組,這個(gè)DH組和IKE協(xié)商第一階段的SKEYID_d、NI、NR還有SPI等信息最終生成用于IPSEC加密的密鑰。
發(fā)送者發(fā)送第三報(bào)文,用于驗(yàn)證響應(yīng)者是否可以通信,相當(dāng)于確認(rèn)信息。響應(yīng)者收到該消息以后就知道發(fā)起者已經(jīng)接收到它在IKE第二階段的第二消息,宣告IKE協(xié)商的第二階段結(jié)束。
S103、IKE協(xié)商成功后,分支出口設(shè)備與總部出口設(shè)備通過第一IPSEC隧道進(jìn)行第一內(nèi)網(wǎng)報(bào)文的通信。
一旦IKE協(xié)商的第二階段完成之后,分支出口設(shè)備和總部出口設(shè)備就可以通過第一IPSEC隧道進(jìn)行內(nèi)網(wǎng)報(bào)文的通信,轉(zhuǎn)發(fā)的內(nèi)網(wǎng)報(bào)文是被IPSEC加密過的,協(xié)議號(hào)是50(ESP)或者51(AH),只新增一個(gè)IP頭部。
S104、當(dāng)?shù)谝粌?nèi)網(wǎng)報(bào)文的時(shí)間戳無更新時(shí),分支出口設(shè)備觸發(fā)第一DPD探測(cè)。
IPSEC的DPD探測(cè)是按需探測(cè)的,也就是說如果正常轉(zhuǎn)發(fā),說明隧道是正常的,則不需要進(jìn)行DPD探測(cè)。分支出口設(shè)備每次接收的內(nèi)網(wǎng)報(bào)文會(huì)記錄時(shí)間戳,一旦在指定的時(shí)間內(nèi)這個(gè)時(shí)間戳未更新,也就是未收到內(nèi)網(wǎng)報(bào)文,那么可能是隧道或者網(wǎng)絡(luò)出現(xiàn)問題,此時(shí)觸發(fā)DPD探測(cè),發(fā)出第一個(gè)DPD探測(cè)請(qǐng)求報(bào)文,如果對(duì)端及時(shí)應(yīng)答,則說明網(wǎng)絡(luò)正常,不再進(jìn)行本次后續(xù)DPD探測(cè)。如果未收到應(yīng)答報(bào)文,則繼續(xù)發(fā)送DPD探測(cè)請(qǐng)求報(bào)文,如果探測(cè)3次都沒有收到應(yīng)答,則說明DPD探測(cè)失敗。
S105、如果第一DPD探測(cè)失敗,則分支出口設(shè)備斷開第一IPSEC隧道,并分別使用IPSEC默認(rèn)端口和IPSEC備用端口作為源端口與總部出口設(shè)備進(jìn)行IKE協(xié)商以建立第二IPSEC隧道。
如果DPD探測(cè)失敗,說明由于五元組長(zhǎng)期保持不變,長(zhǎng)UDP報(bào)文被中間網(wǎng)絡(luò)設(shè)備丟棄或抑制,則分支出口設(shè)備將會(huì)將設(shè)備上的IPSEC表項(xiàng)清除掉,第一IPSEC隧道會(huì)被斷開。
分支出口設(shè)備可以在第一DPD探測(cè)失敗之后,立即使用IPSEC備用端口作為源端口與總部出口設(shè)備進(jìn)行IKE協(xié)商,或者可以先嘗試仍用原來的IPSEC默認(rèn)端口作為源端口與總部出口設(shè)備進(jìn)行IKE協(xié)商,當(dāng)協(xié)商失敗后再使用IPSEC備用端口作為源端口與總部出口設(shè)備進(jìn)行IKE協(xié)商。由于五元組發(fā)生改變,因此長(zhǎng)UDP報(bào)文不會(huì)被中間網(wǎng)絡(luò)設(shè)備丟棄或抑制。
需要說明的是,步驟S101只要在步驟S105所述的分別使用IPSEC默認(rèn)端口和IPSEC備用端口作為源端口與總部出口設(shè)備進(jìn)行IKE協(xié)商以建立第二IPSEC隧道之前即可,并不限定必須在所有步驟執(zhí)行之前。另外使用隨機(jī)端口占用的資源小,并且創(chuàng)建隨機(jī)端口的時(shí)機(jī)也比較靈活,比預(yù)先創(chuàng)建備用鏈路所消耗資源更少,更靈活。
本發(fā)明實(shí)施例提供的IPSEC隧道恢復(fù)方法,通過分支出口設(shè)備使用IPSEC默認(rèn)端口作為源端口與總部出口設(shè)備進(jìn)行IKE協(xié)商以建立第一IPSEC隧道,并使用第一IPSEC隧道進(jìn)行內(nèi)網(wǎng)報(bào)文的通信,當(dāng)內(nèi)網(wǎng)報(bào)文的時(shí)間戳無更新時(shí)觸發(fā)DPD探測(cè),如果DPD探測(cè)失敗,說明五元組固定不變的長(zhǎng)UDP報(bào)文有可能被中間網(wǎng)絡(luò)設(shè)備丟棄或抑制導(dǎo)致通信失敗,此時(shí)分支出口設(shè)備斷開第一IPSEC隧道,并分別使用IPSEC默認(rèn)端口和IPSEC備用端口作為源端口與總部出口設(shè)備進(jìn)行IKE協(xié)商以建立第二IPSEC隧道,此時(shí),由于是新的IPSEC備用端口作為源端口,改變了五元組,因此通信過程中的長(zhǎng)UDP報(bào)文不會(huì)被中間網(wǎng)絡(luò)設(shè)備丟棄或抑制,解決了長(zhǎng)UDP流被中間網(wǎng)絡(luò)設(shè)備丟棄或抑制導(dǎo)致IPSEC隧道斷開需要人工介入恢復(fù)的問題。
具體的,參照?qǐng)D6中所示,步驟S105所述的分別使用IPSEC默認(rèn)端口和IPSEC備用端口作為源端口與總部出口設(shè)備進(jìn)行IKE協(xié)商以建立第二IPSEC隧道具體包括步驟S1051和S1052:
S1051、分支出口設(shè)備使用IPSEC默認(rèn)端口作為源端口向總部出口設(shè)備發(fā)送協(xié)商報(bào)文以重新進(jìn)行IKE協(xié)商。
在DPD探測(cè)失敗之后,分支出口設(shè)備首先仍會(huì)使用原來的IPSEC默認(rèn)端口作為源端口以嘗試與總部出口設(shè)備重新進(jìn)行IKE協(xié)商。
S1052、如果協(xié)商報(bào)文協(xié)商失敗,則分支出口設(shè)備使用IPSEC備用端口作為源端口向總部出口設(shè)備重新發(fā)送協(xié)商報(bào)文,并且使用IPSEC備用端口作為源端口向總部出口設(shè)備發(fā)送后續(xù)的協(xié)商報(bào)文,以建立第二IPSEC隧道。
如果分支出口設(shè)備使用原來的IPSEC默認(rèn)端口進(jìn)行IKE協(xié)商失敗,有可能是中間網(wǎng)絡(luò)設(shè)備丟棄或抑制源端口為IPSEC默認(rèn)端口的長(zhǎng)UDP報(bào)文,因此,分支出口設(shè)備嘗試使用其他端口作為源端口來重新與總部出口設(shè)備進(jìn)行IKE協(xié)商。
下面舉例對(duì)步驟S105所述的分別使用IPSEC默認(rèn)端口和IPSEC備用端口作為源端口與總部出口設(shè)備進(jìn)行IKE協(xié)商以建立第二IPSEC隧道進(jìn)行說明。示例性的,進(jìn)行IKE協(xié)商時(shí),如果主模式的第一階段的第一報(bào)文超時(shí),并且如果是NAT場(chǎng)景,則從主模式的第一報(bào)文開始,源端口從第一默認(rèn)端口變化為第一備用端口,即IKE協(xié)商的五元組從原來的(源IP、目的IP、第一默認(rèn)端口、第一默認(rèn)端口、UDP協(xié)議號(hào)(17))變換為(源IP、目的IP、第一備用端口、第一默認(rèn)端口、UDP協(xié)議號(hào))。由于源端口發(fā)生變化,所以中間網(wǎng)絡(luò)設(shè)備認(rèn)為這是一條新的UDP流,不會(huì)對(duì)其進(jìn)行丟棄或抑制,所以報(bào)文能正常通信,如果是非NAT場(chǎng)景,則主模式第一階段和第二階段源端口都轉(zhuǎn)換成第一默認(rèn)端口。
示例性的,如果主模式的第一階段的第五報(bào)文超時(shí),并且如果是NAT場(chǎng)景,則從主模式的第五報(bào)文和第六報(bào)文開始,源端口變化為第二備用端口,即IKE協(xié)商的五元組從原來的(源IP、目的IP、第二默認(rèn)端口、第二默認(rèn)端口、UDP協(xié)議號(hào))變換為(源IP、目的IP、第二備用端口、第二默認(rèn)端口、UDP協(xié)議號(hào)),然后進(jìn)行NAT場(chǎng)景下的協(xié)商。第二階段的協(xié)商源端口也變化為第二備用端口。同時(shí),在NAT場(chǎng)景下需要重新設(shè)置重傳次數(shù)(默認(rèn)為3次),繼續(xù)發(fā)送重傳報(bào)文,避免主模式的第五報(bào)文發(fā)送失敗,達(dá)到重傳次數(shù)時(shí),需要重新協(xié)商IPSEC隧道。
示例性的,如果野蠻模式的第一階段的第一報(bào)文協(xié)商超時(shí),則從野蠻模式的第一報(bào)文開始,源端口從第一默認(rèn)端口變化為第一備用端口,即IKE協(xié)商的五元組從原來的(源IP、目的IP、第一默認(rèn)端口、第一默認(rèn)端口、UDP協(xié)議號(hào))變換為(源IP、目的IP、第一備用端口、第一默認(rèn)端口、UDP協(xié)議號(hào))。
示例性的,對(duì)于第二階段的快速模式,如果是NAT場(chǎng)景,并且第一階段是野蠻模式,此時(shí),如果第一報(bào)文協(xié)商失敗,則從該快速模式的第一報(bào)文開始,源端口從第二默認(rèn)端口變化為第二備用端口,即IKE協(xié)商的五元組從原來的(源IP、目的IP、第二默認(rèn)端口、第二默認(rèn)端口、UDP協(xié)議號(hào))變換為(源IP、目的IP、第二備用端口、第二默認(rèn)端口、UDP協(xié)議號(hào))。如果是非NAT場(chǎng)景,由于第二階段和第一階段的源端口是一樣的,所以不需要再變換源端口。
需要說明的是,第一備用端口為第一默認(rèn)端口的切換備用端口,第二備用端口為第二默認(rèn)端口的切換備用端口。切換端口時(shí)并不是將第一默認(rèn)端口切換成第一備用端口并且同時(shí)將第二默認(rèn)端口切換成第二備用端口,而是根據(jù)場(chǎng)景需要進(jìn)行切換,可能只需要變換其中一個(gè),也可能兩個(gè)都變換。如果是非NAT場(chǎng)景,只會(huì)將第一默認(rèn)端口切換成第一備用端口,第二備用端口不會(huì)使用;如果是NAT場(chǎng)景,第一階段的第一報(bào)文重傳失敗,則第一階段的源端口從第一默認(rèn)端口變換成第一備用端口,如果第一階段的第一報(bào)文協(xié)商正常,則第一階段不需要進(jìn)行端口切換,還是使用第一默認(rèn)端口。第一階段的第五報(bào)文協(xié)商失敗,則連同第二階段將源端口從第二默認(rèn)端口變換成第二備用端口。如果第一階段的第5個(gè)報(bào)文協(xié)商成功,則源端口仍然采用第二默認(rèn)端口不變。
可選的,參照?qǐng)D7中所示,在步驟S105之后上述方法還包括S106-S108:
S106、分支出口設(shè)備與總部設(shè)備通過第二IPSEC隧道進(jìn)行第二內(nèi)網(wǎng)報(bào)文的通信。
該步驟與S102類似,在此不再贅述。
S107、當(dāng)?shù)诙?nèi)網(wǎng)報(bào)文的時(shí)間戳無更新時(shí),分支出口設(shè)備觸發(fā)第二DPD探測(cè)。
該步驟與S103類似,在此不再贅述。
S108、如果第二DPD探測(cè)失敗,則分支出口設(shè)備斷開第二IPSEC隧道,并且分支出口設(shè)備分別使用IPSEC備用端口和IPSEC默認(rèn)端口作為源端口與總部出口設(shè)備進(jìn)行IKE協(xié)商以重建第一IPSEC隧道。
該步驟與S104和S105類似,在此不再贅述。
具體的,參照?qǐng)D8中所示,步驟S108包括步驟S1081和S1082:
S1081、分支出口設(shè)備使用IPSEC備用端口作為源端口向總部出口設(shè)備發(fā)送協(xié)商報(bào)文以重新進(jìn)行IKE協(xié)商。
該步驟與S1051類似,在此不再贅述。
S1082、如果協(xié)商報(bào)文協(xié)商失敗,則分支出口設(shè)備使用IPSEC默認(rèn)端口作為源端口向總部出口設(shè)備重新發(fā)送協(xié)商報(bào)文,并且使用IPSEC默認(rèn)端口作為源端口向總部出口設(shè)備發(fā)送后續(xù)的協(xié)商報(bào)文,以重建第一IPSEC隧道。
該步驟與S1052類似,在此不再贅述。
需要說明的是,本發(fā)明實(shí)施例還具有如下技術(shù)效果,由于只有在DPD探測(cè)不通之后才會(huì)進(jìn)行重新協(xié)商,則最少需要5+2*3=11秒(其中,5秒是觸發(fā)DPD探測(cè)的時(shí)間,2秒是每次DPD探測(cè)時(shí)間,3是經(jīng)過3次DPD探測(cè))才能發(fā)現(xiàn)IPSEC隧道已經(jīng)斷開,然后開始第一階段協(xié)商,第一個(gè)報(bào)文重傳超時(shí)3次之后才會(huì)切換端口,則需要5*3=15秒(其中,5秒是報(bào)文重傳時(shí)間),因此本發(fā)明實(shí)施例提供的方法在26秒內(nèi)即會(huì)重新協(xié)商恢復(fù),現(xiàn)有技術(shù)中如果出現(xiàn)了這類問題,無法自動(dòng)恢復(fù),需要人工介入才可能恢復(fù)。
實(shí)施例2、
本發(fā)明實(shí)施例提供了一種分支出口設(shè)備,作為圖1中所示的分支出口設(shè)備12,并且應(yīng)用于上述IPSEC隧道恢復(fù)方法,參照?qǐng)D9中所示,包括:
創(chuàng)建單元1201,用于隨機(jī)創(chuàng)建IPSEC備用端口。
協(xié)商單元1202,用于使用IPSEC默認(rèn)端口作為源端口與總部出口設(shè)備進(jìn)行IKE協(xié)商以建立第一IPSEC隧道。
通信單元1203,用于協(xié)商單元1202進(jìn)行IKE協(xié)商成功后,與總部設(shè)備通過第一IPSEC隧道進(jìn)行第一內(nèi)網(wǎng)報(bào)文的通信。
探測(cè)單元1204,用于當(dāng)通信單元1203通信的第一內(nèi)網(wǎng)報(bào)文的時(shí)間戳無更新時(shí),觸發(fā)第一DPD探測(cè)。
協(xié)商單元1202,還用于如果探測(cè)單元1204觸發(fā)的第一DPD探測(cè)失敗,則斷開第一IPSEC隧道,并分別使用IPSEC默認(rèn)端口和創(chuàng)建單元1201所創(chuàng)建的IPSEC備用端口作為源端口與總部出口設(shè)備進(jìn)行IKE協(xié)商以建立第二IPSEC隧道。
可選的,在一種可能的設(shè)計(jì)中,協(xié)商單元1202,具體用于:
使用IPSEC默認(rèn)端口作為源端口向總部出口設(shè)備發(fā)送協(xié)商報(bào)文以重新進(jìn)行IKE協(xié)商。
如果協(xié)商報(bào)文協(xié)商失敗,則使用IPSEC備用端口作為源端口向總部出口設(shè)備重新發(fā)送協(xié)商報(bào)文,并且使用IPSEC備用端口作為源端口向總部出口設(shè)備發(fā)送后續(xù)的協(xié)商報(bào)文,以建立第二IPSEC隧道。
可選的,在一種可能的設(shè)計(jì)中:
通信單元1203,還用于在協(xié)商單元1202分別使用IPSEC默認(rèn)端口和IPSEC備用端口作為源端口與總部出口設(shè)備進(jìn)行IKE協(xié)商以建立第二IPSEC隧道之后,與總部設(shè)備通過第二IPSEC隧道進(jìn)行第二內(nèi)網(wǎng)報(bào)文的通信;
探測(cè)單元1204,還用于當(dāng)?shù)诙?nèi)網(wǎng)報(bào)文的時(shí)間戳無更新時(shí),觸發(fā)第二DPD探測(cè);
協(xié)商單元1202,還用于如果第二DPD探測(cè)失敗,則斷開第二IPSEC隧道,并且分別使用IPSEC備用端口和IPSEC默認(rèn)端口作為源端口與總部出口設(shè)備進(jìn)行IKE協(xié)商以重建第一IPSEC隧道。
可選的,在一種可能的設(shè)計(jì)中,協(xié)商單元1202,具體用于:
使用IPSEC備用端口作為源端口向總部出口設(shè)備發(fā)送協(xié)商報(bào)文以重新進(jìn)行IKE協(xié)商;
如果協(xié)商報(bào)文協(xié)商失敗,則使用IPSEC默認(rèn)端口作為源端口向總部出口設(shè)備重新發(fā)送協(xié)商報(bào)文,并且使用IPSEC默認(rèn)端口作為源端口向總部出口設(shè)備發(fā)送后續(xù)的協(xié)商報(bào)文,以重建第一IPSEC隧道。
由于本發(fā)明實(shí)施例中的分支出口設(shè)備可以應(yīng)用于上述IPSEC隧道恢復(fù)方法,因此,其所能獲得的技術(shù)效果也可參考上述方法實(shí)施例,本發(fā)明實(shí)施例在此不再贅述。
需要說明的是,協(xié)商單元、探測(cè)單元和創(chuàng)建單元可以為單獨(dú)設(shè)立的處理器,也可以集成在控制器的某一個(gè)處理器中實(shí)現(xiàn),此外,也可以以程序代碼的形式存儲(chǔ)于控制器的存儲(chǔ)器中,由控制器的某一個(gè)處理器調(diào)用并執(zhí)行以上協(xié)商單元、探測(cè)單元和創(chuàng)建單元的功能。這里所述的處理器可以是一個(gè)中央處理器(英文全稱:central processing unit,英文簡(jiǎn)稱:CPU),或者是特定集成電路(英文全稱:application specific integrated circuit,英文簡(jiǎn)稱:ASIC),或者是被配置成實(shí)施本發(fā)明實(shí)施例的一個(gè)或多個(gè)集成電路。
應(yīng)理解,在本發(fā)明的各種實(shí)施例中,上述各過程的序號(hào)的大小并不意味著執(zhí)行順序的先后,各過程的執(zhí)行順序應(yīng)以其功能和內(nèi)在邏輯確定,而不應(yīng)對(duì)本發(fā)明實(shí)施例的實(shí)施過程構(gòu)成任何限定。
本領(lǐng)域普通技術(shù)人員可以意識(shí)到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計(jì)算機(jī)軟件和電子硬件的結(jié)合來實(shí)現(xiàn)。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng)、裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過程,在此不再贅述。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng)、設(shè)備和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的設(shè)備實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,設(shè)備或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。
所述功能如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(英文全稱:read-only memory,英文簡(jiǎn)稱:ROM)、隨機(jī)存取存儲(chǔ)器(英文全稱:random access memory,英文簡(jiǎn)稱:RAM)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。