IPsec協(xié)議作為目前最為常見的VPN隧道協(xié)議,其強(qiáng)大的加密與驗(yàn)證功能保障了私網(wǎng)數(shù)據(jù)在公網(wǎng)傳遞時(shí)通信的安全。由于IPsec VPN隧道不支持對(duì)多播和廣播數(shù)據(jù)包的傳遞,需要接合GRE隧道技術(shù),GRE隧道將多播和廣播數(shù)據(jù)包封裝成單播包,再由IPsec技術(shù)提供數(shù)據(jù)傳輸?shù)募用芎万?yàn)證。
如圖1所示,使用GRE over IPsec VPN技術(shù)實(shí)現(xiàn)單位總部局域網(wǎng)中主機(jī)c1和分部局域網(wǎng)中主機(jī)c2間的通信,通過路由器模擬在Internet中實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)陌踩?。這里使用銳捷RSR20-18路由器,系統(tǒng)版本為 10.3(5b6)p2。(為 方 便實(shí)驗(yàn)驗(yàn)證,主機(jī)c1和c2分別在路由器上用loopback0口來代替做測試。)
1.路由器RA配置
圖1 GRE over IPsec案例應(yīng)用
//只要建了tunnel隧道,默認(rèn)封裝模式就是GRE,隧道源和目的地址分別是兩端路由器物理口的公網(wǎng)IP地址。
RA(config)#ip route 0.0.0.0 0.0.0.0 tunnel 0//發(fā)往目標(biāo)主機(jī)的路由發(fā)到tunnel口就是對(duì)數(shù)據(jù)包進(jìn)行GRE封裝,GRE封裝后生成的新IP包的報(bào)頭IP地址就是tunnel隧道內(nèi)定義的源地址和目的地址。
//定義IKE的第一階段,這里采用預(yù)共享密鑰的認(rèn)證方式,預(yù)共享密碼為zt,其余ISAKMP安全策略為默認(rèn)。
//定義IKE的第二階段,定義轉(zhuǎn)換集test保護(hù)傳輸數(shù)據(jù)流。由于IPsec中ESP方式加密后生成的新IP報(bào)頭地址和GRE封裝后的報(bào)頭IP地址都是隧道的源地址和目的地址,因此這里選擇傳輸模式,可以省略掉GRE報(bào)頭中的IP地址,相較tunnel模式而言,每個(gè)數(shù)據(jù)包可以節(jié)省20字節(jié)的IP頭部信息,提升網(wǎng)絡(luò)傳輸效率。要的區(qū)別之一就在于感興趣流量定義不同,GRE over IPSec VPN中順序:先路由(由于下一跳是tunnel口,所以就要先做GRE封裝);感興趣流量再撞擊map,這時(shí)GRE封裝后的新IP報(bào)頭是公網(wǎng)地址,報(bào)頭中目標(biāo)IP變 為 200.1.1.2,源 IP為200.1.1.1,所以感興趣ACL中源地址和目的地址要用公網(wǎng)端口IP地址。此外,這里感興趣流量ACL定義時(shí)如果使用access-list 100 permit gre host 200.1.1.1 host 200.1.1.2,只允許放行g(shù)re流量,不使用IP流量,會(huì)更嚴(yán)謹(jǐn)些。
2.路由器RB配置
//定義IKE的第一階段,這里采用預(yù)共享密鑰的認(rèn)證方式,預(yù)共享密碼為zt,其余ISAKMP安全策略為默認(rèn)。
RB(config)#crypto map VPN 10 ipsecisakmp //定義加密圖VPN
圖2 GRE over IPSec數(shù)據(jù)報(bào)文封裝結(jié)構(gòu)
在路由器RA上使用ping命令模擬主機(jī)c1到c2的通信測試,發(fā)現(xiàn)已互通,但剛開始數(shù)據(jù)傳輸仍然掉包,說明做了IPSec,前面數(shù)據(jù)包先觸發(fā)協(xié)商把隧道打通。同時(shí)可以看見GRE和數(shù)據(jù)部分都用ESP方式加密了,如圖2所示,這就是GRE over IPSec VPN。
如果不使用靜態(tài)路由,而使用一些IGP動(dòng)態(tài)路由協(xié)議,利用其定期發(fā)送的hello包來觸發(fā)打通隧道,那么上面ping包測試時(shí)前面就不會(huì)再有丟包出現(xiàn)。這里假設(shè)使用OSPF路由協(xié)議替代上面靜態(tài)路由,實(shí)現(xiàn)私網(wǎng)路由的學(xué)習(xí)。
在RA上再使用ping命令進(jìn)行測試,發(fā)現(xiàn)數(shù)據(jù)包全部ping通,由于OSPF中以太網(wǎng)口每10s發(fā)送hello包,這時(shí)已不需再用一些數(shù)據(jù)包去觸發(fā)打通IPSec隧道。此外,這時(shí)由于經(jīng)過tunnel口需要進(jìn)行GRE的封裝,GRE已把OSPF組播報(bào)文封裝成單播報(bào)文進(jìn)行發(fā)送,報(bào)頭中源地址和目的地址分別為雙方路由器的物理口IP地址。
RA#ping
GRE over IPsec VPN技術(shù)先做GRE隧道封裝,后進(jìn)行數(shù)據(jù)加密,把感興趣流訪問列表中的源和目的IP地址定義為GRE隧道的源和目的IP,把加密圖應(yīng)用在路由器的公網(wǎng)物理出口上,這樣就可以保證所有進(jìn)入隧道的數(shù)據(jù)包都會(huì)被加密傳輸,在實(shí)際場景中有著廣泛應(yīng)用。