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