IPSec VPN高可用性解決方案需要用到DPD、RRI、路由、SLA等技術組合使用才能做到簡單的高可用性,缺點是使用場景單一且配置繁瑣。由于IPSec VPN的局限性,思科基于IPSec VPN和動態路由推出了新的VPN技術DMVPN(動態多點VPN),DMVPN我們將在VPN系列的后續內容中講述,此章節主要講述IPSec VPN如何實現高可用性。
下圖為此文章所用拓撲圖:
實驗拓撲
以上實驗配置內容較多不便貼入文章當中,文章中僅體現必要配置,如需要實驗全部配置可私信我獲取。
1、解決多SA的?;顧C制DPD技術
前文講到,IKE SA有效時長24小時,IPSec SA有效時長1小時,如果在有效時間內鏈路中間發生了故障,加密數據無法正常傳輸,這時我們需要盡快清除有問題的IPSec SA,與正常工作的其他peer建立IPsec VPN隧道。
這時我們將使用到IPSec VPN的?;顧C制叫做DPD(Dead Peer Detection),用其來檢查對端加密點路由器是否可用,如果對端設備不可用則不需要等到SA有效期到期立即清除不可用的SA。
VPN高可用性
如上圖所示,為保證IPSec的高可用性,外地辦事處與總部的兩臺VPN設備分別建立了兩條VPN隧道做主備備份。但是如果沒有使用DPD技術,如果主用VPN隧道出現線路故障,VPN又沒有使用DPD保活機制,VPN設備不知道遠端設備已經不可達,SA依舊存在,則數據包依舊使用主用VPN隧道進行發送,結果就是報文被丟棄,這時需要網絡管理員手動清除兩端設備的SA,使VPN設備通過IKE重新協商使用備用線路建立備用VPN隧道,但網絡管理員手動清除SA顯然不符合VPN高可用性的標準,從故障發現到處理故障響應時長也比設備自動檢測保活時間長。
這時就需要使用DPD技術,通過VPN設備之間"按需"或"定時"發送HELLO報文探測遠端VPN設備是否存活,如果遠端VPN設備已經不可達則自動刪除現有SA,與備用線路建立IPSec VPN。根據設備性能、設置的DPD檢測時長不通,切換時間也不盡相同,但基本保持在10s-20s左右,與網絡管理員發現故障后手動清除VPN兩端設備的SA相比大大縮短了響應時間。
下圖為DPD功能配置:
crypto isakmp keepalive [探測周期時間 [超時重試間隔時間] [模式]
探測周期:設置每多少秒進行一次?;钐綔y。
超時重試間隔時間:設備對端響應時間,如遠端VPN設備未在要求響應時間內響應則再次放松一次?;钐綔y,共持續5次,5次均未響應則清除此SA。
模式:on-demand模式:按需模式,一旦有數據報文激活SA則開始進行探測。
periodic模式:周期模式,只要存在SA即每指定時間內周期發送探測報文。
舉例:crypto isakmp keepalive 10 2 on-demand
開啟DPD一旦有數據報文激活SA,則每10秒發送HELLO報文探測遠端存活性,遠端超出2秒內沒有響應則繼續發送HELLO報文探測遠端存活性,共發送5次,如遠端VPN設備5次都沒有在2秒鐘內響應探測報文則此SA將被清除。
下圖為DPD探測報文(由于探測報文為密文,所以我們抓取debug信息):
正常探測報文:
探測報文抓取
正常SA建立情況:
SA建立情況
這時手動shutdown端口,讓其中一條隧道的加密點不可達。
探測報文:
探測報文抓取
發現加密點沒有響應,開始每隔兩秒發送一條探測報文,共發送五條。
第一次探測:
探測報文-1
第二次探測:
探測報文-2
第三次探測:
探測報文-3
第四次探測:
探測報文-4
第五次探測未響應后刪除相應加密點的SA:
探測報文-5
此時再查看SA建立情況發現對應加密點的SA已經被刪除:
IKE SA建立狀態
附:外地辦事處路由器IPSec VPN高可用的相關配置:
crypto isakmp keepalive 10 periodic
crypto map fenzhi 1 ipsec-isakmp
set peer 202.111.34.2 default
set peer 60.111.34.2
set transform-set 20
match address 100
由配置能發現分支與總部兩臺VPN設備都建立了關聯
知識擴展:set peer 202.111.34.2 default為什么后面加了一個 default?
增加default的作用在于如果此設備與多臺VPN設備建立了聯系,在沒有設置default的情況下,是基于設置peer的順序來選擇使用哪一個peer建立的SA進行傳輸的,一旦第一個peer的SA失效則選擇第二的SA進行加解密傳輸,第二個SA失效則選擇第三個SA進行加解密傳輸,以此類推。
設置上default與未設置default的區別在于,default SA失效以及第二個SA失效后、會再次探測并嘗試使用default進行加解密傳輸,如果default還是處于失效狀態,這時才會選擇第三個SA進行加解密傳輸,以此類推。
default set peer的作用
2、解決核心交換機路由指向問題
然而,僅適用DPD技術只能保證VPN隧道的建立,無法解決下圖所描述問題:
新問題圖示
由于公司總部有多個出口VPN設備,所以核心交換機的默認網關一定是指向主用VPN隧道的VPN出口設備,一旦主用VPN鏈路斷掉,DPD刪除主用VPN隧道SA,重新建立備用VPN隧道后,數據報文雖然能夠通過備用VPN隧道發送至總部服務器,但總部服務器將響應報文發送給核心交換機后,核心交換機根據自己的默認路由將加密報文發送給了主用VPN設備,由于主用VPN設備上的SA已經被DPD刪除,所以加密數據報文無法發出,如何告知核心交換機將默認網關指向備用VPN設備將是一大問題。
這時我們將使用OSPF與RRI技術的組合或等價路由與SLA技術的組合來進行解決。
2.1、使用OSPF+RRI技術
RRI的作用在于應用在IPSec VPN的map中,一旦此map建立SA,則生成一條靜態路由,該靜態路由是目標地址為對端通信點,下一條為對端加密點的靜態路由。
然后使用OSPF的重分布靜態路由功能,將RRI產生的靜態路由告知三層交換機。
正常數據傳輸:
OSPF+RRI技術圖示
主用VPN隧道SA因加密點不可達被DPD清除:
OSPF+RRI技術解決方案圖示
相關配置:
總部聯通路由器:
1、 在IPSec VPN的map中啟用RRI并打上tag
crypto map zongbu-lt 1 ipsec-isakmp
set peer 202.102.134.2
set transform-set 11
set reverse-route tag 10 為產生的靜態路由打上tag10,便于后面再route-map調用
match address 100
reverse-route 啟用RRI
2、 創建名為static的route-map并匹配tag 10,建立route-map的作用是為了在ospf中引入此靜態路由。
route-map static permit 10
match tag 10
3、在OSPF中重分布名為static的route-map中的靜態路由。
router ospf 1
redistribute static subnets route-map static
network 10.1.1.0 0.0.0.255 area 0
總部電信路由器:
電信路由器與聯通路由器配置基本相同。
1、在IPSec VPN的map中啟用RRI并打上tag
crypto map zongbu-dx 1 ipsec-isakmp
set peer 202.102.134.2
set transform-set 12
set reverse-route tag 20 為產生的靜態路由打上tag20,便于后面再route-map調用
match address 100
reverse-route 啟用RRI
2、創建名為static的route-map并匹配tag 20,建立route-map的作用是為了在ospf中引入此靜態路由。
route-map static permit 20
set tag 20
3、在OSPF中重分布名為static的route-map中的靜態路由。
router ospf 1
redistribute static subnets route-map static
network 10.1.1.0 0.0.0.255 area 0
總部核心交換機:
核心交換機只需要加入OSPF域中等待靜態路由的引入即可。
router ospf 1
network 10.1.1.0 0.0.0.255 area 0
2.2使用等價路由+SLA技術
正常數據傳輸:
等價路由+SLA技術圖示
主用VPN隧道SA因加密點不可達被DPD清除:
等價路由+SLA技術解決方案圖示
相關配置:
核心交換機:
1、 創建兩個SLA
ip sla 1
icmp-echo 202.111.34.2 source-interface Vlan1
frequency 5
ip sla schedule 1 life forever start-time now
ip sla 2
icmp-echo 60.111.34.2 source-interface Vlan1
frequency 5
ip sla schedule 2 life forever start-time now
2、 track綁定SLA
track 1 ip sla 1 reachability
track 2 ip sla 2 reachability
3、 創建等價路由并使用track探測
ip route 0.0.0.0 0.0.0.0 10.1.1.1 60 track 1
ip route 0.0.0.0 0.0.0.0 10.1.1.2 60 track 2
知識擴展:由于測試需要這里的等價路由我使用的是基于包的隨機負載分擔,具體命令如下:
Int vlan 1
ip load-sharing per-packet
默認情況下是基于目標地址的負載分擔:
ip load-sharing per-destination
以上內容均為本人對所掌握知識的總結歸納所創作的原創文章,希望能給大家的學習過程帶來幫助,如有技術理解錯誤希望能夠及時得到大家的指正,大家共同學習,共同進步。
歡迎關注我的頭條號,私信交流,學習更多網絡技術!