《Cisco-DMVPN技術(shù)原理》由會員分享,可在線閱讀,更多相關(guān)《Cisco-DMVPN技術(shù)原理(7頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、Cisco DMVPN技術(shù)原理
Cisco DMVPN技術(shù)原理
一、背景信息
很多公司希望通過公共網(wǎng)絡(luò)安全地將他們各地的辦事處、分公司與公司總部聯(lián)系起來,并且辦事處、分公司之間也可以互聯(lián)。過去,唯一的辦法是通過二層的網(wǎng)絡(luò)(Layer-2 network)如ISDN或幀中繼,將所有節(jié)點(diǎn)互聯(lián)起來,實(shí)現(xiàn)內(nèi)部的IP互通,并且需要支付昂貴的線路費(fèi)用?,F(xiàn)在,這些辦事處、分公司與公司總部之間的互聯(lián)可以通過廉價的Internet接入實(shí)現(xiàn),通過IPSec隧道來保證內(nèi)部通訊的安全。
IPSec通過共享密鑰在通訊的兩端實(shí)現(xiàn)數(shù)據(jù)加密,即任意兩端之間都要共享不同的密鑰,所以IPSec隧道其實(shí)是點(diǎn)到點(diǎn)的加密隧道,
2、IPSec網(wǎng)絡(luò)就是點(diǎn)到點(diǎn)加密隧道的集合。IPSec網(wǎng)絡(luò)的組織形式可以是星形結(jié)構(gòu)(hub?and?spoke)或網(wǎng)狀結(jié)構(gòu)(full mesh)。在大多數(shù)網(wǎng)絡(luò)中,數(shù)據(jù)流量主要分布在分支與中心之間,分支與分支之間的流量分布較少,所以星形結(jié)構(gòu)(hub?and?spoke)通常是較好的選擇。這也符合傳統(tǒng)的幀中繼互聯(lián)方式,因?yàn)樾切谓Y(jié)構(gòu)(hub?and?spoke)比網(wǎng)狀結(jié)構(gòu)(full mesh)使用更少的點(diǎn)到點(diǎn)鏈路,可以減少線路費(fèi)用。
當(dāng)通過Internet實(shí)現(xiàn)內(nèi)部互聯(lián)時,分支機(jī)構(gòu)到分支機(jī)構(gòu)(spoke ?to?spoke)的連通不需要額外的通訊費(fèi)用,并且能夠給企業(yè)內(nèi)部網(wǎng)絡(luò)帶來更好的性能,但是網(wǎng)狀結(jié)構(gòu)(
3、full mesh)的實(shí)現(xiàn)和管理有一定困難。在星形結(jié)構(gòu)中,分支到分支的通信必須跨越中心,這會耗費(fèi)中心的資源并引入更長的延時。尤其是使用IPSec加密時,中心需要在發(fā)送數(shù)據(jù)分支的隧道上解密,并且在接收數(shù)據(jù)分支的隧道上重新加密。另一種情況是通訊的兩個分支在同一個城市,而中心在另一個城市,這也會引入不必要的延時。
當(dāng)星形IPSec網(wǎng)絡(luò)(hub?and?spoke)規(guī)模不斷增長時,IP數(shù)據(jù)包的動態(tài)路由將非常有意義。在過去的幀中繼星形網(wǎng)絡(luò)中,通過在幀中繼鏈路上運(yùn)行OSPF或EIGRP等動態(tài)路由協(xié)議來通告分支網(wǎng)絡(luò)的可達(dá)性,并支持路由的冗余。當(dāng)中心路由器失效后,還可以利用一個備份的路由器接替中心路由器管理
4、分支間的路由。
在IPSec隧道和動態(tài)路由協(xié)議之間存在一個基礎(chǔ)問題,即動態(tài)路由協(xié)議依賴于多播或廣播包進(jìn)行路由可達(dá)性通告,而IPSec隧道不支持對多播或廣播包進(jìn)行加密。目前解決這一問題的辦法是利用通用路由封裝(GRE)隧道與IPSec加密相結(jié)合的方法。
通用路由封裝(GRE)由IETF在RFC 2784中定義。是一個在任意一種網(wǎng)絡(luò)層協(xié)議上封裝任意一個其它網(wǎng)絡(luò)層協(xié)議的協(xié)議。通常將有效載荷封裝在一個GRE包中,然后將此GRE包封裝在其它某協(xié)議中并進(jìn)行轉(zhuǎn)發(fā)。
GRE隧道支持運(yùn)載多播或廣播包到對端,而GRE隧道的數(shù)據(jù)包是單播的,所以GRE隧道的數(shù)據(jù)包可被IPSec加密,也即GRE Over IPS
5、ec。在這一過程中,GRE用于建立隧道,IPSec完成VPN網(wǎng)絡(luò)的加密部分。建立GRE隧道時,隧道的一端必須知道另一端的IP地址,并且必須能夠在Internet上路由。這就意味著中心和所有分支路由器必須具有靜態(tài)的公共IP地址。
但是對于規(guī)模較小的分支結(jié)構(gòu)而言,向ISP申請靜態(tài)IP地址的費(fèi)用是非常昂貴的。無論是ADSL還是直接線纜接入,ISP通常使用DHCP提供動態(tài)IP地址,以節(jié)省其地址資源。
在IPSec VPN上實(shí)現(xiàn)動態(tài)路由協(xié)議需要GRE隧道的支持;實(shí)現(xiàn)GRE隧道,所有節(jié)點(diǎn)需要靜態(tài)的公網(wǎng)地址,而所有節(jié)點(diǎn)都申請靜態(tài)IP地址是非常困難的。
所有上述的限制可以總結(jié)為以下四點(diǎn):
1. IPS
6、ec利用訪問控制列表(ACL)來決定哪些數(shù)據(jù)是需要加密的。所以,每增加一個網(wǎng)絡(luò)連接,都必須在中心和分支的路由器上更新ACL的配置。如果路由器是由服務(wù)商管理的,用戶就必須通知服務(wù)商更新IPSec ACL配置,以便新的通訊能夠被加密。
2. 在大型的星形網(wǎng)絡(luò)(hub?and?spoke)中,中心路由器的IPSec ACL配置將非常大而且復(fù)雜,甚至是不可用的。例如為了管理300個分支路由器,在中心路由器上可能需要3900行的配置,這已經(jīng)大到很難排查錯誤的程度了。而且如此大的配置可能無法全部裝載到路由器的內(nèi)存中,而不得不放在閃存里面。
3. GRE+IPSec需要明確知道隧道兩端的IP地址,而
7、分支路由器外網(wǎng)接口的IP地址通常由其本地ISP動態(tài)提供,每次上線時的IP地址是不同的。
4. 如果分支機(jī)構(gòu)之間需要通過IPSec VPN直接通信的話,星形的網(wǎng)絡(luò)(hub?and?spoke)就必須改變?yōu)槿W(wǎng)狀結(jié)構(gòu)(full mesh)。由于無法確定哪些分支機(jī)構(gòu)之間需要通過IPSec VPN直接通信,就必須維護(hù)一個全網(wǎng)狀結(jié)構(gòu)的網(wǎng)絡(luò),盡管某些分支機(jī)構(gòu)之間是不需要通過IPSec VPN直接通信的。由于每臺路由器都與所有其它路由器保持隧道連通,所以在小型路由器上根本無法實(shí)現(xiàn),即在較小的分支機(jī)構(gòu)也不得不使用更強(qiáng)大的路由器。
二、DMVPN解決方案
DMVPN是通過多點(diǎn)GRE(mGRE)和下一跳
8、解析協(xié)議(NHRP)與IPSec相結(jié)合實(shí)現(xiàn)的。
在DMVPN解決方案中,利用IPSec實(shí)現(xiàn)加密功能,利用GRE或多點(diǎn)GRE(mGRE)建立隧道,利用NHRP解決分支節(jié)點(diǎn)的動態(tài)地址問題。DMVPN只要求中心節(jié)點(diǎn)必須申請靜態(tài)的公共IP地址。
下一跳解析協(xié)議(NHRP)由IETF在RFC 2332中定義。用于非廣播多路訪問(NBMA)網(wǎng)絡(luò)上的源節(jié)點(diǎn)(主機(jī)或路由器)如何獲取到達(dá)目標(biāo)節(jié)點(diǎn)的“下一跳”的互聯(lián)網(wǎng)絡(luò)層地址和NBMA子網(wǎng)地址。
2.1、IPSec加密的自動起始
IPSec利用訪問控制列表(ACL)來決定哪些數(shù)據(jù)是需要加密的。也就是說,當(dāng)有數(shù)據(jù)包匹配所定義的ACL時,IPSec加密隧道便會
9、建立。當(dāng)利用GRE Over IPSec時,GRE隧道的配置已經(jīng)包括了GRE隧道對端的地址,這個地址同時也是IPSec隧道的對端地址。所以,沒有必要再單獨(dú)為IPSec定義匹配ACL。
通過將GRE隧道與IPSec綁定,GRE隧道一旦建立,將立刻觸發(fā)IPSec加密。
2.2、分支到中心(Spoke?to?Hub)的動態(tài)隧道建立
DMVPN網(wǎng)絡(luò)中,在中心路由器上沒有關(guān)于分支的GRE或IPSec配置信息,而在分支路由器上則必須依據(jù)中心路由器的外網(wǎng)公共IP地址和NHRP協(xié)議來配置GRE隧道。當(dāng)分支路由器加電啟動時,由ISP處通過DHCP獲取IP地址,并自動建立IPSec加密的GRE隧道,通過NH
10、RP向中心路由器注冊自己的外網(wǎng)端口IP地址。這樣做有三方面的原因:
1)由于分支路由器外網(wǎng)端口的IP地址是自動獲取的,每次上線時的IP地址可能不同,所以中心路由器無法根據(jù)該地址信息進(jìn)行配置。
2)中心路由器不必針對所有分支分別配置GRE或IPSec信息,將大大簡化中心路由器的配置。所有相關(guān)信息可通過NHRP自動獲取。
3)當(dāng)DMVPN網(wǎng)絡(luò)擴(kuò)展時,無須改動中心路由器和其它分支路由器的配置。新加入的分支路由器將自動注冊到中心路由器,通過動態(tài)路由協(xié)議,所有其它分支路由器可以學(xué)到這條新的路由,新加入的分支路由器也可以學(xué)到到達(dá)其它所有路由器的路由信息。
2.3、分支到分支(Spoke?to?Sp
11、oke)的動態(tài)隧道建立
在DMVPN網(wǎng)絡(luò)中,分支到中心(Spoke?to?Hub)的隧道一旦建立便持續(xù)存在,但是各分支之間并不需要直接配置持續(xù)的隧道。
當(dāng)一個分支需要向另一個分支傳遞數(shù)據(jù)包時,它利用NHRP來動態(tài)獲取目的分支的IP地址。在這一過程中,中心路由器充當(dāng)NHRP服務(wù)器的角色,響應(yīng)NHRP請求,向源分支提供目標(biāo)分支的公網(wǎng)地址。于是,兩個分支之間可以通過mGRE端口動態(tài)建立IPSec隧道,進(jìn)行數(shù)據(jù)傳輸。該隧道在預(yù)定義的周期之后將自動拆除。
2.4、對動態(tài)路由協(xié)議的支持
DMVPN以GRE隧道為基礎(chǔ),而GRE隧道支持多播或廣播(multicast/broadcast)IP包在隧道內(nèi)
12、傳輸。所以,DMVPN網(wǎng)絡(luò)支持在IPSec和mGRE隧道之上運(yùn)行動態(tài)路由協(xié)議。需要指出的是,NHRP必須被配置為動態(tài)多播映射,這樣,當(dāng)分支路由器在NHRP服務(wù)器(中心路由器)上注冊單播映射地址時,NHRP會同時為這個分支路由器建立一個多播/廣播(multicast/broadcast)映射。
我們在前面提到IPSec隧道不支持多播/廣播(multicast/broadcast)包的封裝,而GRE隧道可以將多播/廣播(multicast/broadcast)包封裝到GRE包中,并且GRE包是單播包,可以被IPSec加密。在用IPSec對GRE包進(jìn)行加密時,可以將IPSec配置為傳輸模式,因?yàn)镚
13、RE已經(jīng)將原始數(shù)據(jù)包封裝為單播的IP包,沒有必要讓IPSec再封裝一個包頭。
IPSec的傳輸模式要求被加密數(shù)據(jù)包的源和目的地址必須與IPSec隧道兩端的地址相匹配,也就是說GRE隧道兩端的地址與IPSec隧道兩端的地址必須相同。由于GRE隧道兩端的路由器與IPSec隧道兩端的路由器是相同的兩臺路由器,所以這一點(diǎn)是可以保證的。
通過GRE隧道與IPSec加密相結(jié)合,我們可以利用動態(tài)路由協(xié)議在加密隧道兩端的路由器上更新路由表。從隧道對端學(xué)到的子網(wǎng)在路由表?xiàng)l目里將會包含隧道對端的IP地址作為到達(dá)對端子網(wǎng)的下一跳地址。這樣,隧道任何一端的網(wǎng)絡(luò)發(fā)生變化,另外一端都會動態(tài)地學(xué)習(xí)到這個變化,并保持網(wǎng)絡(luò)
14、的連通性而無需改變路由器的配置。
三、DMVPN網(wǎng)絡(luò)中動態(tài)路由協(xié)議的實(shí)現(xiàn)
我們在前面提到,在DMVPN網(wǎng)絡(luò)中,分支到中心(Spoke?to?Hub)的隧道一旦建立便持續(xù)存在,而各分支之間并沒有持續(xù)存在的隧道。這樣,在路由器初始化后,中心路由器會通過持續(xù)存在的隧道向分支路由器宣告其它分支子網(wǎng)的可達(dá)路由。于是,分支路由器的路由表中到達(dá)其它分支子網(wǎng)的“下一跳”地址就是中心路由器的隧道端口地址,而不是其它分支路由器的隧道端口地址。如此一來,分支與分支之間的數(shù)據(jù)傳輸還是會通過中心路由器。
要解決這一問題,必須在中心路由器上設(shè)置為在mGRE隧道端口上宣告某一分支子網(wǎng)的可達(dá)路由時“下一跳”地址是該分支
15、路由器的隧道端口地址,而非中心路由器的地址。
在RIP或EIGRP等距離向量型路由協(xié)議中,通常都實(shí)現(xiàn)了水平分割(split horizon)功能,阻止將路由信息發(fā)回到其來源端口,以避免相鄰路由器上路由環(huán)路的產(chǎn)生。如果在DMVPN網(wǎng)絡(luò)上運(yùn)行RIP或EIGRP協(xié)議,則必須關(guān)閉水平分割(split horizon)功能。否則,分支路由器將無法學(xué)習(xí)到通往其它分支子網(wǎng)的路由。
對RIP而言,這已經(jīng)足夠了,因?yàn)镽IP向路由信息來源端口發(fā)送該路由時,其“下一跳”地址不被改變,仍然是原來的地址。而EIGRP在向路由信息來源端口發(fā)送該路由時,其“下一跳”地址將改變?yōu)樵摱丝诘牡刂?。所以,必須關(guān)閉這一特性(EIGRP是CISCO公司的私有協(xié)議,關(guān)閉這一特性的IOS命令為no ip next?hop?self eigrp )。
OSPF是鏈路狀態(tài)型路由協(xié)議,其本身就不存在水平分割(split horizon)問題。但在配置OSPF網(wǎng)絡(luò)類型時,應(yīng)配置為廣播型而不要使用點(diǎn)到多點(diǎn)型,否則,仍然會導(dǎo)致上述的問題。另外需要注意的是,必須把DMVPN的中心路由器(Hub)配置為OSPF的指定路由器(DR),可以通過指定中心路由器(Hub)有更高的OSPF優(yōu)先權(quán)來實(shí)現(xiàn)。