Fortigate IPSEC Aggregate + OSPF + SDWAN 實作

參考資料

https://docs.fortinet.com/document/fortigate/6.2.16/cookbook/25967/equal-cost-multi-path

https://docs.fortinet.com/document/fortigate/6.4.0/administration-guide/779544/ipsec-aggregate-for-redundancy-and-traffic-load-balancing

前言

延續前一篇技術分享 Fortigate IPSEC + OSPF + SDWAN 實作,在該篇中OSPF不但能自動交換路由,同時也能 Fail OverLoad Balance 的特性,在內部交換與上網時的彈性線路切換,這在Fortigate上稱為ECMP的機制 (Equal-Cost Multi-Path),但在Fortigate中還有另一個方式可以做到 IPSEC Fail Over 與 Load Balance 的功能,就是所謂的 IPSEC Aggregate,此篇帶大家來看看怎麼搞,並分析其優劣。

環境說明

圖片.png

設計概念: 三個Site透過 IPSEC Aggregate +OSPF+SDWAN 來達成多線路OSPF動態路由,任一條線路故障時可透過其他線路接續連線,並透過SDWAN來監測線路品質狀況,同時由於資訊安全控管的原則希望能統一由同一個Gateway進出。

Firmware Ver. :  Fortigate-VM 7.0.15


WAN IP
LAN Subnets
WAN IPSEC IP
SiteA

WAN1  10.1.1.1

WAN2  10.1.2.1

Port4  (to Internet)

192.168.11.254/24

192.168.12.254/24

192.168.13.254/24

AtoB  172.17.1.1

AtoC  172.17.1.6

SiteB

WAN1  10.1.1.2

WAN2  10.1.2.2

192.168.21.254/24

192.168.22.254/24

192.168.23.254/24

BtoA  172.17.1.2

BtoC  172.17.1.3

SiteC

WAN1  10.1.1.3

WAN2  10.1.2.3

192.168.31.254/24

192.168.32.254/24

192.168.33.254/24

CtoB  172.17.1.4

CtoA  172.17.1.5


設定過程

我們直接接續前一篇的設定繼續做,有問題的人請參照前一篇技術分享 Fortigate IPSEC + OSPF + SDWAN 實作

以下設定皆以一台SiteC為範例,請對照該台設定相關對應設定至SiteB & SiteA

移除SD-WAN IPSEC設定

Delete SD-WAN Performance SLA

圖片.png

Delete SD-WAN Members

圖片.png

移除OSPF IPSEC設定

Delete IPSEC Interface,完成後 要Apply !!   (鍵人我不知道忘了多少次 ......)

圖片.png

建立IPSEC Aggregate

在Console輸入下列指令

config vpn ipsec phase2-interface 
edit C1toA1 
set auto-negotiate enable 
next
edit C1toB1 
set auto-negotiate enable 
next
edit C2toA2 
set auto-negotiate enable 
next
edit C2toB2 
set auto-negotiate enable 
end

config vpn ipsec phase1-interface 
edit C1toA1 
set aggregate-member enable 
next
edit C1toB1 
set aggregate-member enable 
next
edit C2toA2 
set aggregate-member enable 
next
edit C2toB2 
set aggregate-member enable 
end

圖片.png

圖片.png

VPN => IPSEC Turnnels => Create New => IPSEC Aggregate

圖片.png

建立 Aggregate,名稱取為CtoA,將C1toA1C2toA2選起來

圖片.png

建立第二個 Aggregate CtoB 如法炮製

圖片.png

完成後如下圖

圖片.png

設定 IPSEC Aggregate Interface IP

完成Aggregate後發現,IPSEC Interface的IP都被移除了,把它們設回去

圖片.png

圖片.png

圖片.png

完成如下圖

圖片.png

設定OSPF Interface

圖片.png

圖片.png

完成如下圖,記得要Apply !!   (鍵人我不知道忘了多少次 ...... Again ...... )

圖片.png

設定SD-WAN

新增 SD-WAN Member

圖片.png

CtoACtoB 加入OSPF_SDWAN Zone

圖片.png

圖片.png

完成如下圖

圖片.png

重建 SD-WAN Performance SLA

圖片.png

圖片.png

Performance SLA 完成如下圖

圖片.png

設定至此全部完成

※  以防有人忘記了,在此我們沒有建立Firewall Policy的原因是上一篇我們已經制定好了

路由的部分全部交由OSPF處理,SiteBSiteC 請不要設定任何Static Route進入SD-WAN。

狀態確認

OSPF 狀態

get router info ospf neighbor
get router info routing-table ospf

圖片.png

圖片.png

get router info ospf route

圖片.png

圖片.png

get router info routing-table all

圖片.png

圖片.png

IPSEC 狀態

圖片.png

圖片.png

圖片.png

比較過後,是不是看到流量分配的比之前更平均了 ?


連線測試

圖片.png

SiteC PC 連續Ping 8.8.8.8,透過Sniffer可知道是走CtoA

圖片.png

CtoA 斷線,流量改走 CtoB

圖片.png

CtoA 恢復,流量又回到 CtoA

圖片.png

有此可證明Fail Over正常運作

Pros and Cons

所以,一路看下來,整體設定變得更簡潔、流量分配更平均,這樣設定應該是更好的選擇 ...... 吧 ?

讓我們來看看 IPSEC Aggregate的問題

問題1

回到上面的Fail Over測試,其實鍵人我不是只單純做了CtoA斷線測試,我其實是優先做C1toA1的斷線測試

圖片.png

圖片.png

看到了嗎 ? IPSEC Aggregate下,因為IPSEC斷線偵測比較慢,所以Aggregate還是很盡責地將封包分給兩條IPSEC所以會導致掉封包,等到IPSEC斷乾淨了之後才恢復順暢(如下圖)

圖片.png

你要說這個問題會很嚴重嗎 ? 也不見得,但是相較於沒有Aggregate以OSPF的切換機制來說是慢得多了

圖片.png

問題2

還記得我們最初為什麼要嘗試把OSPF去結合SD-WAN嗎 ? 就是因為要去監測OSPF線路品質是很困難的事情,所以雖然這樣設定SD-WAN完全沒有生效,但能藉由SD-WAN Performance SLA去監測OSPF線路品質還是一件很棒的事。

但一旦IPSEC Aggregate之後,SD-WAN Performace SLA監測機制就失去意義了,下圖是以SiteA的角度來看C1toA1斷線

圖片.png

看到了嗎 ? 上圖只知道AtoC有掉包,但卻無法直觀的得知是由於C1toA1斷線所造成的

再來請看下圖,這是實務上容易發生的,當整個SiteC WAN1斷了的時候,C1toA1 & C1toB1 會同時斷線。

圖片.png

但在IPSEC還沒切乾淨網路還沒恢復通順的期間,SD-WAN Performance SLA有可能會變成這樣

圖片.png

對,就像上圖,顯示上SiteASiteB都斷了,但其實沒斷還能夠連線,偵測要等恢復通順才會回來,那這樣就大大的降低了利用SD-WAN Performance SLA監測的意義與正確性。

優勢

說完了問題,IPSEC Aggregate還是有優勢的地方

記得一開始前言的地方,我有提到沒有Aggregate的時候,Fortigate是透過OSPF ECMP的方式來達成Fail Over & Load Balance的,預設的ECMP Policy是基於 Source-IP-Base 去作分流,也就是如下圖

圖片.png

也因為ECMP是Source-IP-Base的關係,單一Source IP的流量無法超過單一線路頻寬,假設你WAN1、WAN2皆為100M/100M,在ECMP 單一Source IP 最大流量就是100M。

但再看一次上面那張圖,反而佐證了透過IPSEC Aggregate Fortigate會去拆分封包分別丟入兩個IPSEC Turnnel

圖片.png

所以我們可以確定,在IPSEC Aggregate下,單一Source IP的流量可以超過單一條線路頻寬,也就是WAN1、WAN2皆為100M/100M,在IPSEC Aggregate下單一Source IP 最大流量可達 200M。

優劣比較

綜合以上優劣,僅以下表呈現鍵人我的推薦程度,✅較為推薦,❌較不推薦

  IPSEC IPSEC Aggregate
動態路由
Fail Over
Load Balance
線路監控
即時切換
整合頻寬

如果是鍵人我,我會選擇 IPSEC 不作 Aggregate,這樣才能充分發揮OSPF的優勢

但在某些不是這麼Critical的Site,線路頻寬小且無法升速的區域 (比方說偏鄉地區),IPSEC Aggregate依然是個不錯的選擇


Revision #6
Created 7 August 2024 02:40:28 by 天殺の
Updated 16 August 2024 02:42:32 by 天殺の