Fortigate SDWAN設定概念與路由選擇理解

Fortigate SDWAN設定概念與路由選擇理解

這幾週發生一些狀況,雖然Fortigate不是我的主要負責項目,但是還是有蠻多機會可以碰到。

Fortigate SDWAN在多外線的場域,就會使用到,算蠻常見的。

為了更瞭解Fortigate,好讓狀況發生時不要把我Call,所以決定好好研究一番

總之,如果想讓流量透過SDWAN去選擇最佳外線,就要把對應的Static Route指到SDWAN,於是最佳配置就是Default Route指到SDWAN。

探討重點

本篇文章不在於教人如何設定SDWAN,更著重要為什麼要這樣設定,也就是運作概念。

補足教學文章沒有提及的部分,讓人更能掌握Fortigate SDWAN是如何運作的。

Static Route 與 SDWAN Rule 是分開的

https://community.fortinet.com/t5/FortiGate/Technical-Tip-Routing-in-FortiGate-route-lookup-process/ta-p/194047

雖然在Fortigate寫說優先順序:Policy Based Routing(PBR) > SDWAN Rule > Static Route。

以及在討論中提到:

  • If there is no match in the policy route, then FortiGate looks for the SD-WAN rules, finds a matching entry lookup, if there is a match, it will forward the packet immediately and stop traversing the routing tables.
  • When configuring a static route that references an SD-WAN zone, it is not necessary to specify a gateway address because FortiGate retrieves it from the member configuration.

Note:
SD-WAN service rules are policy routes that allow the routing of specific traffic over specific SD-WAN members. 

這導致被誤解成SDWAN Rule有設定流量模式Match到,不把Static Route加一筆指到SDWAN,SDWAN Rule會優先走。

其實SDWAN Rule 即便符合,但也不一定會走。因為SDWAN Rule要被選擇做路由,前提是Static Route要指向SDWAN。

實際上應該要是這樣設定: Policy Based Routing(PBR) > Static Route to SDWAN > Default Route

要觸發 SDWAN Rule 走對應的 WAN ,前提是 指向SDWAN的路由 要是最佳路由,即 Route 選擇是最優先。

理論上SDWAN的Member都是Default Route等級,一旦你將特定目的的Route指向SDWAN,例如168.95.1.1/32指向SDWAN,再設一筆168.95.1.0/24指向另外一個地方。

然而,SDWAN Rule命中選擇一條Member送出流量,以路由觀點來看,路由是直接讓168.95.1.1走向該Member Gateway為目的的Default route,自然就超越168.95.1.0/24的優先度。

路由導給SDWAN,但SDWAN Rule沒有

https://docs.fortinet.com/document/fortigate/7.6.3/administration-guide/216765/implicit-rule

一旦走到SDWAN,最終隱性政策是從可用的 SDWAN Member 透過算法做 load balance。

因此!強制要走特定線路的對外服務,就是獨立一個SDWAN Zone。或是靜態路由直接加一筆。

外線類型SDWANSDWAN Zone功能做法SLA更新路由表
網際網路建議納入選擇對外線路放入SDWAN中,透過SLA檢測更新路由表,可作為隱性政策做負載平衡。V
特定服務外線,頻寬可與其他用途共享建議納入選擇對外線路特定服務外線使用靜態路由,SDWAN則加特定服務的Rule。V
特定服務外線,頻寬不可與其他用途共享不納入特定服務外線使用靜態路由或是PBR。
Site to Site VPN可納入選擇品質優秀線路利用SLA偵測,從中選擇優質線路傳輸。X
專線可納入選擇品質優秀線路利用SLA偵測,從中選擇優質線路傳輸。X

如果用途是選擇對外線路,SLA就要能更新路由表,確保監測服務異常時,走其他線路。

如果用途是選擇品質優秀線路,SLA就不用更新路由表,並讓Rule套用其SLA,作為SDWAN Member選擇時的依據。

於是,一般來說,所有外線都能上網的,就會做成一個Zone,放在Default Route指到SDWAN,讓外線能夠發揮到備援功能。

將所有WAN的Gateway設定成Default Route但不加指定SDWAN 與 單筆Default Route指向 SDWAN差異?

官方文件部署SD-WAN步驟《Adding a static route》,是將Default Route指到SDWAN Zone。

SD-WAN routing logic | FortiGate / FortiOS 7.2.0 | Fortinet Document Library

SDWAN Route

傳統Default Route的缺點

Default Route的運作,即所有路由都能命中,但由於遮罩長度最小,所以如果沒有先命中更長遮罩的路由,Default Route將會是最後命中的路由。

路由的next hop一定是某個自身介面同網段的IP。然而,ISP出狀況時,通常都不是數據機故障,讓介面轉為Down。然而,介面轉為Down,才能讓Routing table踢掉不在活著的同網段的Nexthop路由。

所以,出狀況但介面不Down,這導致踢不掉出問題的預設路由,流量還是會往有狀況的預設路由走。

SDWAN透過SLA偵測並更新Route,確保出狀況的ISP外線,能透過更新路由表,讓流量迴避。

SDWAN環境下Static Route建議配置

如果Fortigate是作與Site to Site的端點,Default Route不一定要設,因為再前一跳,可能會有其他路由設備。

如果Fortigate作為主要上網的Default Gateway,則Default Route要指定SDWAN。

SDWAN Zone可以濃縮成一個,讓特定服務走特定外線,不特定目的則透過SDWAN Rule選擇SLA去做負載平衡,隱性政策維持預設即可。

如果特定外線,像是專線或是MPLS,頻寬不大,建議SDWAN Zone直接獨立一個,或是就不加入SDWAN,直接Static Route指定。※個人稱為獨占外線,特色是會嚴格檢查來源與目的,不合就無法正常使用的。

SDWAN Route > Static Route 確切描述

SDWAN Rule的選擇通常跟SLA相關,SLA則是透過SDWAN Member與其設定Gateway作為來源去檢測。

SDWAN的SLA不遵循Static Route去走,這部份可以看成 SDWAN Route > Static Route。

再提一次重要概念!即便SLA正常,測出優秀的線路,如果Static Route沒有指向SDWAN,就不會使用SLA測出的外線。

SLA的檢測Route,不走Static Route,因此這能確保故障後再檢測時,SLA檢測不走已被刪除掉的Static Route,該SDWAN對外的能力恢復時才能正確被檢測。

SDWAN Rule

如果有三條外線,SDWAN Rule 可以判斷哪一條外線最好,優先走哪一條。

判斷外線的依據就是SLA,SLA用Ping或http或dns三種方式去檢測,去得到各線路成員的檢測成績,SDWAN Rule就會選最好的那條去走。

如果 Default Route 指到 SDWAN Zone,自然就能使用SDWAN Rule的選擇。

通常不特定來源與目的的對外線路,就是用SDWAN與Default Route指定就好,再透過SDWAN Rule走更好的線路,透過SLA刪除掉有狀況的外線。

SDWAN一旦被選擇為Default Route,就相當於,所有介面up的SDWAN Member其Gateway都會作為Default Route。

SLA可以勾選更新路由,確保對外檢測有問題時,可以把該介面的SDWAN Member其Gateway的Default Route刪除,這能遏制出狀況的SDWAN Member的Gateway被使用到。

SDWAN解決介面狀態正常,但是服務不正常的狀態。如果有多個外線,

Fortigate設定DNS Server走SDWAN

關於路由優先度的狀況,Local Out的流量預設不會走SDWAN。

Local Out本得是Fortigate本身對外的路由選擇。

# 1) 指定系統 DNS
config system dns
    # Server都是internet,直接丟SDWAN往外網送。
    # 2) 讓系統 DNS 依 SD-WAN 規則選線
    set interface-select-method sdwan
end