南京 張韜
IPSec VPN通道的建立過程中,當(dāng)其中一端peer 出現(xiàn)故障連接時,VPN 的另一端是沒有辦法檢測出來的,只有在SA 的lifetime 時間超時以后,另一端才能識別出來,顯然這種情形在實(shí)際使用中會帶來問題。通過引入一種類似動態(tài)路由協(xié)議中建立和維護(hù)鄰居關(guān)系的機(jī)制,可以實(shí)現(xiàn)對VPN 通信雙方失效的檢測和發(fā)現(xiàn),這個機(jī)制就是IPSec DPD(IPSec Dead Peer Detection)技術(shù)。
在IPSec VPN 通道建立的過程中,通常由兩個階段構(gòu)成。無論是在第一階段IKE 還是在第二階段IPSec 協(xié)商加密的過程中,它們的SA 都會存在一個lifetime 時間,IKE SA 的 lifetime 時間默認(rèn)為86400 秒(1 天),而IPsec SA 的lifetime 時間默認(rèn)為3600 秒(1 小時)。如果其中一邊的VPN 對等體出現(xiàn)故障失去連接時,另一邊是無法檢測出來的,只有在SA 的lifetime 超時后才會刪除與對端peer 建立的SA 信息。換句話說,在VPN 其中的一端peer 斷開以后,另一端至少要等待3600 秒才能發(fā)現(xiàn)線路故障,顯然這對實(shí)際通信是有明顯影響。
為了解決上述問題,可以在建立IPSec VPN 通道的雙方對等體之間引入一個類似于OSPF 動態(tài)路由協(xié)議鄰居之間使用的hello 包機(jī)制,在對等體之間定期交換hello 包信息,如果超過一定時間內(nèi)沒有收到對方的hello 包,便認(rèn)為對方已經(jīng)失效,從而立刻刪除與對方建立的SA,這個機(jī)制就是IPSec DPD 技術(shù),可以用在IPSec 中用來實(shí)時檢測兩邊對等體狀態(tài)。
DPD 技術(shù)可以分為周期性和按需兩種模式使用。
周期性模式就是VPN 對等體雙方每隔一個固定時間就會向?qū)Ψ桨l(fā)送一個hello包或者從對端收到一個hello 包,如果超過一定的時間后仍然沒有收到對方發(fā)送 的hello 包,則認(rèn)為對方已經(jīng)失效,從而立即刪除與對方建立的SA。
圖1 驗(yàn)證相關(guān)IPSec DPD 效果
圖2 R1 上VPN 主要配置
在使用周期模式時,除了需要配置hello間隔時間外,還可以選擇設(shè)置retry 時間,如hello 間隔定義為10 秒,retry 時間為2秒,那就表示每隔10 秒都應(yīng)該收到鄰居一個hello 包,但如果到了10 秒后沒收到鄰居發(fā)送的hello 包,則不會再等10 秒,而是會在retry 定義的時間2 秒后即向?qū)Ψ桨l(fā)送hello 包,默認(rèn)連續(xù)發(fā)5 次,即10 秒后還沒收到就認(rèn)為鄰居已經(jīng)失效。retry 默認(rèn)時間為2 秒、發(fā)送5 個。
圖3 激活I(lǐng)KE SA 并查看其相應(yīng)狀態(tài)
按需模式則不會在雙方間發(fā)送hello 包,而是根據(jù)流量來檢測。只有在要發(fā)數(shù)據(jù)時,才發(fā)送hello 包去查詢鄰居狀態(tài),如果沒有數(shù)據(jù)要發(fā),就不會發(fā)送hello包,所以在沒有數(shù)據(jù)發(fā)送時,即使鄰居失效了,本地也不知道,只有SA 的lifetime 超時后才會發(fā)現(xiàn)。
這里以GNS3 模擬器來實(shí)現(xiàn)相關(guān)IPSec DPD 效果驗(yàn)證,3 臺路由器連接及IP 地址信息如圖1 所示,R1 同時和R2 與R3 建立IPSec VPN 隧道,R2 和R3 之間不需要建立VPN,路由器上使用環(huán)回口進(jìn)行測試,此處各路由器基本信息和相關(guān)路由配置省略。
1.配置IPSec site-tosite VPN
R1 上VPN 主要配置如圖2 所示。
分別在R2 和R3 路由器上配置與R1 之間相對應(yīng)的IPSec VPN 信息,此處省略配置。
2.測試IPSec VPN 隧道
圖4 SA 的lifetime 超時后進(jìn)行刪除
圖5 R1 路由器上只有與R3 建立的SA 信息
在R1 路由器上向R2 和R3 的環(huán)回口分別發(fā)送流量激活I(lǐng)KE SA,并查看其相應(yīng)狀態(tài),如圖3 所示,并且可以看到相應(yīng)IPSec SA 也已為活動狀態(tài)。
這時可以清楚的看到當(dāng)前R1 與R2 建立的IKE SA 的lifetime 還剩23 小時50 分4 秒,與R3 建立的lifetime 還剩23 小時50 分29 秒。
3.測試和驗(yàn)證IPSec DPD 技術(shù)
關(guān)閉R2 路由器的fa0/0接口后,再次查看IKE SA 信息,可以看到R1 上并沒有發(fā)現(xiàn)此時連接已斷開,IKE SA的狀態(tài)依然顯示正常,直到SA 的lifetime 超時后才會刪除,如圖4 所示。
這時需要分別在三臺路由器上配置IPSec DPD 技術(shù),以R1 為例,R2 和R3 配置一樣,如下所示:
注意:配置了IPSec DPD后,必須重新應(yīng)用crypto map才能生效。
因?yàn)榇藭rR1 路由器不可能收到R2 的DPD 周期檢測信息,所以會將與R2 路由器的IKE SA 信息刪除,R1 路由器上這時只有與R3 建立的SA 信息,如圖5 所示。
在IPSec 中使用DPD 技術(shù)可以及時高效的實(shí)現(xiàn)檢測VPN 對等體間的連接狀態(tài),確保網(wǎng)絡(luò)的可靠性。它不僅支持site-to-site 場景VPN,也可以支持Easy VPN。在使用中必須先配置DPD,再應(yīng)用crypto map 到接口,反之無法生效,并且兩邊必須同時都要配置DPD 才有意義。