強叔侃牆 VPN篇 對等體檢測洞察先機,雙鏈路備份有備無患

天地會應用了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報文。

實際應用中keepalive很少使用。主要原因是keepalive存在如下兩個方面的缺陷:

  1. Keepalive機制週期性發送Hello報文將消耗大量的CPU資源,會限制可建立的IPSec會話的數量。
  2. 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/0IP地址

 tunnel-protocol ipsec

 ipsec policy policy1

interface Tunnel2

 ip address unnumbered interface GigabitEthernet1/0/0//借用物理口GE1/0/0IP地址

 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有什麼差別,適用於哪些場景,又該如何配置呢? 敬請關注下期的強叔侃牆。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章