天地會應用了IPSec後,通信安全得到保障。當網絡上突發問題時,比如路由問題、對端設備重啓等,會導致IPSec通信中斷或時斷時續,那麼如何才能快速的檢測到故障並迅速恢復IPSec通信呢?這就需要用到IKE對等體檢測機制和IPSec可靠性了。
對等體檢測洞察先機
當兩個對等體之間採用IKE和IPSec進行通信時,對等體之間可能會由於路由問題、IPSec對等體設備重啓或其他原因導致連接斷開。由於IKE協議本身沒有提供對等體狀態檢測機制,一旦發生對等體不可達的情況,只能等待安全聯盟老化。只有快速檢測到對等體的狀態變化,纔可以儘快恢復IPSec通信。
現在強叔給大家展示一下由於對端設備重啓導致IPSec中斷的情況。
網關FW_A跟網關FW_B之間採用IPSec進行通信。重啓網關FW_B後,查看兩端IPSec隧道情況。
- 發現網關FW_A上的IPSec隧道還在。
<FW_A> display ike sa
current ike sa number: 2
---------------------------------------------------------------------
conn-id peer flag phase vpn
---------------------------------------------------------------------
40015 2.2.3.2 RD v1:2 public
40014 2.2.3.2 RD v1:1 public
- 發現網關FW_B重啓後其上的IPSec隧道不在了。
<FW_B> display ike sa
current sa Num :0
這就會導致如下的問題:
- 總舵的PC1先訪問分舵的PC2,無法通信。
原因就在於FW_A上的安全聯盟還存在,但FW_B上的安全聯盟已經沒有了。從PC1訪問PC2會採用原有的安全聯盟,而無法觸發FW_A與FW_B之間建立新的安全聯盟。從而導致訪問失敗。 - 分舵的PC2先訪問總舵的PC1,可以正常通信。
因爲FW_B上不存在安全聯盟,因此可以觸發建立安全聯盟。安全聯盟建立後,雙方可以正常通信。
針對這種問題的解決辦法就是需要開啓IPSec檢測機制。開啓IPSec檢測機制後,當一端設備故障後,另一端設備的安全聯盟也同時刪除。
USG系列防火牆支持兩種IPSec檢測機制:
- Keepalive機制
Keepalive機制通過IKE對等體週期性發送Hello消息來告訴對方自己處於活動狀態。若在超時時間內沒有收到Hello報文,則認爲對端不可達。此時將刪除該IKE SA及由它協商的IPSec SA。
Keepalive機制默認關閉。配置相應參數後,keepalive機制生效。 - DPD機制
DPD(Dead Peer Detection)機制不用週期性發送Hello消息,而是通過使用IPSec流量來最小化對等體狀態檢測所需消息報文的數量。若可以收到對端發來的流量,則認爲對方處於活動狀態;只有當一定時間間隔內沒有收到對端發來的流量時,纔會發送DPD報文探測對端的狀態。若發送幾次DPD報文後一直沒有收到對端的迴應,則認爲對端不可達,此時將刪除該IKE SA及由它協商的IPSec SA。- IKEv1時配置DPD機制
IKEv1默認不支持DPD。需要在隧道兩端同時配置。兩端配置的DPD參數彼此獨立,不需要匹配。 - IKEv2時配置DPD機制
IKEv2默認支持DPD。只要在隧道一端配置DPD,另一端就可以響應DPD報文。
- IKEv1時配置DPD機制
實際應用中keepalive很少使用。主要原因是keepalive存在如下兩個方面的缺陷:
- Keepalive機制週期性發送Hello報文將消耗大量的CPU資源,會限制可建立的IPSec會話的數量。
- Keepalive沒有統一標準,各廠商的設備可能無法對接。
說明:對等體檢測機制雖然不是必配項,但對IPSec故障恢復有益,推薦大家配置IPSec時配置DPD檢測機制。
下面以配置DPD機制爲例,說明FW_B發生故障後FW_A上的變化。
配置 |
總舵 |
分舵 |
配置DPD |
ike dpd interval 10 2 |
ike dpd interval 10 2 |
說明:採用IKEv2是隻要一端配置就可以了。
配置完成後,設備檢測到鏈路狀態的變化。此時查看IKE SA和IPSec SA的情況,發現FW_A上的安全聯盟已經刪除了。
<FW_A> display ike sa
current sa Num :0
此時可以正常建立IPSec隧道了。
雙鏈路備份有備無患
IPSec可靠性可以分爲設備可靠性和鏈路可靠性。設備可靠性主要是雙機熱備,由於雙機熱備非常複雜,不是一句兩句可以說清的,強叔將在後面專門講解。本次講解的重點是鏈路可靠性。
由於天地會的發展壯大,總舵要與所有分舵進行通信,網絡帶寬倍感壓力。一旦網絡出問題,就完全不能通信了。爲避免此等悲劇,陳總舵主決定爲總舵再購買一條鏈路,既可緩解帶寬壓力,又可以雙鏈路備份。針對雙鏈路的場景可以採用如下兩種方案進行配置:
方案一:IPSec主備鏈路備份
總舵採用雙鏈路與分舵通信,採用IPSec主備鏈路備份方式的典型組網如下圖所示。
FW_B上配置兩個Tunnel接口(借用GE1/0/0的IP地址)分別於FW_A的主鏈路接口GE1/0/0和備鏈路接口GE1/0/1進行IPSec對接。其配置的關鍵在於必須配置IP-Link,並採用IP-Link檢測主鏈路的狀態。
- 不配置IP-Link時,當FW_A的主鏈路故障時,FW_B無法感知。因此FW_B上的路由表不會變化,其出接口仍然是與主鏈路對接的Tunnel1。這會導致IPSec隧道建立失敗。
- 配置IP-Link時,FW_B上可以感知FW_A上的主鏈路狀態的變化。當FW_A的主鏈路故障時,FW_B上的路由表也會同步發生改變。此時可以通過備鏈路建立IPSec隧道,恢復通信。
總舵和分舵網關的關鍵配置如下:
關鍵配置 |
總舵 |
分舵 |
IP-Link //用於監控主鏈路的情況 |
ip-link check enable ip-link 1 destination 2.2.2.2 interface GigabitEthernet1/0/0 mode icmp next-hop 202.38.163.2 |
ip-link check enable ip-link 1 destination 202.38.163.1 interface GigabitEthernet1/0/0 mode icmp next-hop 2.2.2.1 |
路由配置 |
ip route-static 10.2.1.0 24 202.38.163.2 preference 10 track ip-link 1 //到分支的路由,GE1/0/0出口的鏈路爲主鏈路 ip route-static 10.2.1.0 24 202.38.164.2 preference 20 //到分支的路由,GE1/0/1出口的鏈路爲備鏈路 ip route-static 0.0.0.0 0.0.0.0 202.38.163.2 preference 10 track ip-link 1 //缺省路由,GE1/0/0出口的鏈路爲主鏈路 ip route-static 0.0.0.0 0.0.0.0 202.38.164.2 preference 20//缺省路由,GE1/0/1出口的鏈路爲備鏈路 |
ip route-static 10.1.1.0 255.255.255.0 Tunnel 1 preference 10 track ip-link 1 //Tunnel1跟主鏈路對接 ip route-static 10.1.1.0 255.255.255.0 Tunnel 2 preference 20 //Tunnel2跟備鏈路對接 ip route-static 0.0.0.0 0.0.0.0 2.2.2.1 //配置缺省路由,下一跳爲2.2.2.1 |
定義被保護的數據流
|
acl 3000 rule 5 permit ip source 10.1.1.0 0.0.0.255 destiantion 10.2.1.0 0.0.0.255 acl 3001 rule 5 permit ip source 10.1.1.0 0.0.0.255 destiantion 10.2.1.0 0.0.0.255
|
acl 3000 rule 5 permit ip source 10.2.1.0 0.0.0.255 destiantion 10.1.1.0 0.0.0.255 acl 3001 rule 5 permit ip source 10.2.1.0 0.0.0.255 destiantion 10.1.1.0 0.0.0.255 |
配置IPSec安全提議 |
ipsec proposal pro1 |
ipsec proposal pro1 |
配置IKE安全提議 |
ike proposal 10 |
ike proposal 10 |
IKE對等體 |
ike peer fenduo pre-shared-key tiandihui1 ike-proposal 10 |
ike peer a1 pre-shared-key tiandihui1 ike-proposal 10 remote-address 202.38.163.1//原有鏈路的出接口IP地址 ike peer a2 pre-shared-key tiandihui1 ike-proposal 10 remote-address 202.38.164.1//原有鏈路的出接口IP地址 |
IPSec安全策略 //創建兩條IPSec安全策略 |
ipsec policy-template tem1 1 security acl 3000 proposal pro1 ike-peer fenduo ipsec policy policy1 1 isakmp template tem1 ipsec policy-template tem2 1 security acl 3001 proposal pro1 ike-peer fenduo ipsec policy policy2 1 isakmp template tem2 |
ipsec policy policy1 1 isakmp security acl 3000 proposal pro1 ike-peer a1 ipsec policy policy1 1 isakmp security acl 3001 proposal pro1 ike-peer a2 |
應用IPSec安全策略 |
interface GigabitEthernet1/0/0 ip address 202.38.163.1 24 ipsec policy policy1 interface GigabitEthernet1/0/1 ip address 202.38.164.1 24 ipsec policy policy2
|
interface Tunnel1 ip address unnumbered interface GigabitEthernet1/0/0 //借用物理口GE1/0/0的IP地址 tunnel-protocol ipsec ipsec policy policy1 interface Tunnel2 ip address unnumbered interface GigabitEthernet1/0/0//借用物理口GE1/0/0的IP地址 tunnel-protocol ipsec ipsec policy policy2 |
配置完成後,建立IPSec VPN。從PC2 ping PC1,可以ping通。查看IKE SA的建立情況如下:
<FW_B> display ike sa
current ike sa number: 2
---------------------------------------------------------------------
conn-id peer flag phase vpn
---------------------------------------------------------------------
40003 202.38.163.1 RD|ST v2:2 public
3 202.38.163.1 RD|ST v2:1 public
斷開主鏈路(shutdown GE1/0/0接口)後,可以使用備鏈路建立IPSec VPN。從分舵PC ping總舵PC,可以ping通。查看IKE SA建立情況如下:
<FW_B> display ike sa
current ike sa number: 2
---------------------------------------------------------------------
conn-id peer flag phase vpn
---------------------------------------------------------------------
40009 202.38.164.1 RD|ST v2:2 public
9 202.38.164.1 RD|ST
v2:1 public
說明IP-Link檢測到主鏈路的接口故障後,修改了FW_A上和FW_B上使用的路由。
主鏈路正常情況下FW_B上的路由表(只給出靜態路由):
<FW_B> display ip routing-table
Route Flags: R - relay, D - download to fib
---------------------------------------------------------------------
Routing Tables: Public
Destinations : 10 Routes : 12
Destination/Mask Proto Pre Cost Flags NextHop Interface
0.0.0.0/0 Static 60 0 RD 2.2.2.1 GigabitEthernet1/0/0
10.1.1.0/24 Static 10 0 D 2.2.2.2 Tunnel1
主鏈路斷開後FW_B上的路由表(只給出靜態路由):
<FW_B> display ip routing-table
Route Flags: R - relay, D - download to fib
---------------------------------------------------------------------
Routing Tables: Public
Destinations : 10 Routes : 12
Destination/Mask Proto Pre Cost Flags NextHop Interface
0.0.0.0/0 Static 60 0 RD 2.2.2.1 GigabitEthernet1/0/0
10.1.1.0/24 Static 20 0 D 2.2.2.2 Tunnel2
方案二:IPSec隧道化鏈路備份
IPSec主備鏈路備份需要分別在兩個物理接口上應用IPSec策略,配置複雜;且需要通過IP-Link跟蹤路由狀態,以便正確的進行IPSec隧道切換。那能否不直接在物理接口上應用IPSec策略呢,這樣是否就可以避免隧道切換的問題呢?
當然是可以的。方法就是將IPSec策略應用到一個虛擬的Tunnel接口上。由於策略不是應用到實際物理接口,那麼IPSec並不關心有幾條鏈路可以到達對端,也不關心哪條鏈路發生故障,只有可以查找到可以到達對端的路由,IPSec通信就不會中斷。
總舵採用雙鏈路與分舵通信,採用IPSec隧道化鏈路備份方式組網如下圖所示。
下面強叔就講一下IPSec隧道化鏈路備份時報文是如何封裝和解封裝的。
FW_A上報文加封裝的過程如下圖所示:
(1) FW_A收到需要進行IPSec處理的報文後,將收到的IP明文送到轉發模塊進行處理。
(2) 轉發模塊通過查找路由,發現路由出接口爲Tunnel接口。轉發模塊依據路由查詢結果將IP明文發送到Tunnel接口。
(3) 由於Tunnel接口應用了IPSec策略,報文在Tunnel接口上進行IPSec加封裝。封裝後的報文的源IP和目的IP分別爲兩端隧道接口(應用IPSec策略的接口)的IP地址。
(4) 封裝後的IP報文被送到轉發模塊進行處理。轉發模塊再次對密文查找路由。
(5) 轉發模塊通過查找路由,發現路由下一跳爲物理接口的路由。根據路由的優先級等選擇合適的路由,將IP密文從設備的某個實際物理接口轉發出去。
FW_A上報文解封裝的過程如下圖所示:
(1) FW_A收到加密後的IPSec報文後,將收到的IP密文送到轉發模塊進行處理。
(2) 轉發模塊識別到此IP密文的目的地址爲本設備Tunnel接口的IP地址且IP協議號爲AH或ESP,將IP密文發送到Tunnel接口進行解封裝。
(3) IPSec報文在Tunnel接口上進行解封裝。
(4) 解封裝後的IP明文被再次送到轉發模塊進行處理。轉發模塊再次對明文查找路由。
(5) 轉發模塊通過查找路由,將IP明文從隧道的實際物理接口轉發出去。
總舵和分舵網關的關鍵配置如下:
關鍵配置 |
總舵 |
分舵 |
路由配置 |
ip route-static 10.2.1.0 24 tunnel1//到分舵的路由 ip route-static 2.2.2.2 32 202.38.163.2//到分舵網關的路由 ip route-static 2.2.2.2 32 202.38.164.2//到分舵網關的路由 |
ip route-static 10.1.1.0 255.255.255.0 2.2.2.1//到總舵的路由 ip route-static 1.1.1.2 255.255.255.0 2.2.2.1//到總舵網關Tunnel1接口的路由 |
定義被保護的數據流 |
acl 3000 rule 5 permit ip source 10.1.1.0 0.0.0.255 destiantion 10.2.1.0 0.0.0.255 |
acl 3000 rule 5 permit ip source 10.2.1.0 0.0.0.255 destiantion 10.1.1.0 0.0.0.255 |
配置IPSec安全提議 |
ipsec proposal pro1 |
ipsec proposal pro1 |
配置IKE安全提議 |
ike proposal 10 |
ike proposal 10 |
IKE對等體 |
ike peer fenduo pre-shared-key tiandihui1 ike-proposal 10 |
ike peer zongduo pre-shared-key tiandihui1 ike-proposal 10 remote-address 1.1.1.2//Tunnel接口的IP地址 |
IPSec安全策略 |
ipsec policy-template tem1 1 //配置模板方式 security acl 3000 proposal pro1 ike-peer fenduo ipsec policy policy1 1 isakmp template tem1 |
ipsec policy policy1 1 isakmp security acl 3000 proposal pro1 ike-peer zongduo |
應用IPSec安全策略 |
interface Tunnel1 ip address 1.1.1.2 24 tunnel-protocol ipsec ipsec policy policy1 |
interface GigabitEthernet0/0/0 ip address 2.2.2.2 24 ipsec policy policy1 |
配置完成後,建立IPSec VPN。從分舵PC ping 總舵PC,可以ping通。查看IKE SA的建立情況如下:
<FW_B> display ike sa
current ike sa number: 2
---------------------------------------------------------------------
conn-id peer flag phase vpn
---------------------------------------------------------------------
40003 1.1.1.2 RD|ST v2:2 public
3 1.1.1.2 RD|ST v2:1 public
主鏈路正常情況下FW_A上的路由表(只給出靜態路由):
<FW_B> display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 17 Routes : 18
Destination/Mask Proto Pre Cost Flags NextHop Interface
2.2.2.2/0 Static 60 0 RD 202.38.163.1 GigabitEthernet1/0/0
2.2.2.2/0 Static 60 0 RD 202.38.164.2 GigabitEthernet1/0/1
10.2.1.0/24 Static 60 0 D 1.1.1.2 Tunnel1
主鏈路中斷情況下FW_A上的路由表(只給出靜態路由):
<FW_B> display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 17 Routes : 18
Destination/Mask Proto Pre Cost Flags NextHop Interface
2.2.2.2/0 Static 60 0 RD 202.38.164.2 GigabitEthernet1/0/1
10.2.1.0/24 Static 60 0 D 1.1.1.2 Tunnel1
由於分舵是與總舵Tunnel接口的IP地址建立IPSec隧道,所以在總舵FW_A上斷開GE1/0/0接口所屬鏈路後,分舵PC ping 總舵PC的業務流量不會中斷。在FW_B上查看IKE SA,可以看到對端的IP地址還是1.1.1.2。
IPSec隧道化鏈路備份跟IPSec主備鏈路備份相比有如下優勢,推薦採用IPSec隧道化備份。
IPSec鏈路備份方案 |
IPSec主備鏈路備份 |
IPSec隧道化鏈路備份 |
配置 |
複雜 |
簡單 |
平滑切換 |
IPSec隧道切換,需重新協商隧道 |
不需要隧道切換 |
適用場景 |
雙鏈路 |
雙鏈路或多鏈路 |
至此IPSec專題就講完了。接下來強叔將介紹另一種安全的VPN:SSL VPN。由於SSL VPN配置簡單,且通信安全,一經問世就開始攻城掠地,搶佔L2TP和IPSec的市場,大有後生可畏的勁頭。那麼SSL VPN跟前面講的幾種VPN有什麼差別,適用於哪些場景,又該如何配置呢? 敬請關注下期的強叔侃牆。