Skip to main content

Fortigate IPSEC + OSPF + SDWAN 實作

參考資料

https://docs.fortinet.com/document/fortigate/6.2.16/cookbook/632796/ospf-with-ipsec-vpn-for-network-redundancy

前言

上一篇分享了 Fortigate IPSEC + iBGP 的動態路由,但畢竟一般企業中鮮少使用BGP,大多反而是使用OSPF,OSPF不但能自動交換路由,同時也能 Fail Over 與 Load Balance,此篇實作帶大家一起來看看 Fortigate IPSEC + OSPF + SDWAN 有沒有搞頭。

環境說明

圖片.png

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

Firmware Ver. :  Fortigate-VM 7.0.15


WAN IP
LAN Subnets
WAN1 IPSEC IP
WAN2 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

A1toB1  172.17.1.1

A1toC1  172.17.1.6

A2toB2  172.17.2.1

A2toC2  172.17.2.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

B1toA1  172.17.1.2

B1toC1  172.17.1.3

B2toA2  172.17.2.2

B2toC2  172.17.2.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

C1toB1  172.17.1.4

C1toA1  172.17.1.5

C2toB2  172.17.2.4

C2toA2  172.17.2.5

設定過程(1)

設定Interface

以下設定皆以一台SiteC為範例,請對照該台設定相關對應設定至SiteB,第一階段我們先忽略SDWAN,先把IPSEC+OSPF設起來。

圖片.png

先把 WAN1、WAN2、LAN Interface設定好如下圖

圖片.png

為了方便設定,我將 LAN Interface綁成一個Zone,並且不要Block內部流量互通

圖片.png

設定IPSEC

至 VPN => IPSEC 建立 WAN1 IPSEC VPN,我以 C1toB1 來命名

圖片.png

Remote IP設定SiteB WAN1 IP,指定Pre-shared Key

圖片.png

本地Interface就選剛剛做好的LAN Zone,Local & Remote Subnets 都鍵入 0.0.0.0/0

圖片.png

Wizard會建立一堆討厭的東西,晚一點砍掉

圖片.png

圖片.png

建立SiteC WAN2 IPSEC VPN C2toB2

圖片.png

圖片.png

圖片.png

圖片.png

圖片.png

建好兩條VPN之後,至Policy砍掉Wizard自動建立的Policy

圖片.png

至Static Route砍掉Wizard自動建立的路由

圖片.png

至Network Interface,來進行 C1toB1C2toB2 Interface設定

圖片.png

如下圖設定自己(SiteC)與對方(SiteB)的預先定義IP,Netmask設定 /32,開啟Ping

圖片.png

設定完後如下圖

圖片.png

我們將兩個IPSEC VPN綁成一個Zone (VPN_Zone),並且不要Block內部流量讓裡面介面能互通(後面會用到)

圖片.png

設定Firewall Policy

建立Firewall Policy,允許LAN Zone與VPN Zone互通,不要NAT

圖片.png

圖片.png

設定好後Firewall Policy如下圖

圖片.png

至此完成了SiteC IPSEC設定,請依照上面步驟去完成SiteB IPSEC的步驟

SiteCSiteB Firewall Policy設定完成後,你應該可以發現IPSEC Turnel已經起來了

圖片.png

如果還沒起來,可以透過IPSEC介面,點擊 Bring Up

圖片.png

SiteC去Ping SiteB 的 IPSEC IP,已經可以Ping的到,但是SiteB的LAN Ping不到,這是正確的

圖片.png

下圖可知 IPSEC Interface 的路由已經起來了所以Ping的到,因為沒有LAN Subnet的路由所以Ping不到,這個部分就是要靠OSPF上場了。

圖片.png

設定OSPF

至 Network => OSPF,指定Router ID、Area ID、要自動交換路由的網段 (需要包括IPSEC介面的路由)

圖片.png

Interfaces將IPSEC介面加入,Network Type 選擇 "Point to Point"

圖片.png

圖片.png

請依照上面步驟去完成SiteB OSPF設定

完成後至CLI Console,輸入下列指令可查詢OSPF Neighbor、OSPF路由

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

圖片.png

輸入下列指令顯示完整路由

get router info routing-table all

圖片.png

或者可由 Dashboard => Network => Routing,確認路由

圖片.png

圖片.png

連線測試

我們在SiteB放一台PC (192.168.21.4)、SiteC放一台PC (192.168.31.5)

圖片.png

Ping ok

圖片.png

Traceroute 確認路由

圖片.png

設定過程(2)

比照上述 SiteC <=> SiteB 設定過程,來完成 SiteA <=> SiteBSiteC <=> SiteA 的設定。

圖片.png

設定IPSEC

設定IPSEC Turnel

圖片.png

設定Interface

設定IPSEC Interface IP、並把新增的IPSEC加入VPN_Zone

圖片.png

圖片.png

圖片.png

設定Firewall Policy

Firewall Policy由於一開始是由Zone來設定的,所以完全不需要調整

圖片.png

IPSEC應該就起來了

圖片.png

設定OSPF

將新增的IPSEC介面加入

圖片.png

完成後至CLI Console,查詢OSPF Neighbor、OSPF路由

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

圖片.png

輸入下列指令顯示OSPF路由詳細資訊

get router info ospf route

圖片.png

Fail Over測試

我測試的方式如下

1. 由SiteB PC連續Ping SiteC PC,先確定是走哪一條IPSEC

圖片.png

圖片.png

透過packet sniffer確認是由C1toB1過來的

圖片.png

2. 將C1toB1 IPSEC手動斷線,觀察是否會走另一條IPSEC

圖片.png

確認由C1toB1切到C2toB2

圖片.png

3. 將C2toB2再度手動斷線,觀察流量是否會透過SiteA過來

圖片.png

確認由C2toB2切到C1toA1,流量從SiteA過來了

圖片.png

如此一來就驗證了OSPF運作ok 👍

SDWAN設定過程

ok,OSPF運作ok了,那說好的SDWAN呢 ? 這邊哪來的SDWAN ?

別急,現在我們就來把VPN_Zone改接成SDWAN

把IPSEC從Zone移除

至Network => VPN_Zone將IPSEC移出Zone

圖片.png

設定SD-WAN Zone

Network => SD-WAN => Create New => SD-WAN Zone

圖片.png

在此建立一個OSPF_SDWAN的Zone

圖片.png

將剛剛移除Zone的四條IPSEC VPN新增至SD-WAN Member

圖片.png

圖片.png

圖片.png

到Interface也可以看到SD-WAN Zone

圖片.png

建立Firewall Policy

建立 LAN <=> SDWAN、SDWAN <=> LAN的 Firewall Policy,一樣皆不要做NAT。

圖片.png

圖片.png

在此要建立一條 SDWAN <=> SDWAN,使其IPSEC VPN可內部互通

圖片.png

圖片.png

OSPF設定

不需異動

圖片.png

用Console看一下OSPF Neighbor,看起來沒問題,路由也都有正確交換

圖片.png

設定SD-WAN Performance SLA

分別針對SiteBSiteA設定線路SLA,檢查的對象就設為對方的Interface IP

圖片.png

圖片.png

圖片.png

圖片.png

圖片.png

Fail Over測試

再做一次Fail Over測試

1. 由SiteB PC連續Ping SiteC PC,先確定是走哪一條IPSEC

圖片.png

ok,目前是走 C1toB1

圖片.png

2. 將C1toB1 IPSEC手動斷線

圖片.png

流量改走C2toB2

圖片.png

3. 將C2toB2再度手動斷線

圖片.png

流量改走C2toA2

圖片.png

驗證了OSPF運作ok

統一上網出口

最後,我們來將 SiteASiteBSiteC 設定為統一透過 SiteA 出去上網

圖片.png

設定SiteA Interface & SD-WAN

SiteA Port4 接到Internet,設定SD-WAN Interface Gateway,並把Port4加入Default SD-WAN Zone

圖片.png

設定SiteA SD-WAN Rule

設定出Internet走Default SD-WAN Zone

圖片.png

設定SiteA Static Route

設定Default Route進Default SDWAN

圖片.png

圖片.png

設定SiteA OSPF Inject Static Route

圖片.png

設定SiteA Firewall Policy

設定 OSPF_SDWAN Zone、SiteA LAN 出Internet Firewall Policy,此處需開啟NAT

圖片.png

圖片.png

確認SiteA Default Route

確認一下上面設定進SDWAN的Static Route

get router info routing-table all

圖片.png

確認SiteC Default Route

可以發現OSPF自動生成了SiteC 的Default Route

圖片.png

到此,設定大功告成

來看一下 SiteC 的SDWAN Rule,沒有 !! 這是正確的

圖片.png

來看一下 SiteC 的Static Route,沒有 !! 這是正確的,因為路由我們全靠OSPF

圖片.png

熟知SD-WAN設定的人應該知道

SD-WAN設定至少要包含四個步驟

  1. SD-WAN線路設定
  2. SD-WAN Rule設定
  3. Static Route 指向SD-WAN
  4. Firewall Policy

SiteC 我們只做了 1.4. ,但卻沒有做 2.3.,也就是說其實針對LAN的部分Fortigate SD-WAN功能根本沒生效,我們只是因為需要SD-WAN Performance SLA來監測OSPF線路的狀態,所以硬把SDWAN Interface當作是上面的Zone來使用,也就是說其實理論上這樣設定是有問題的,但其實這樣設定有其好處。

圖片.png

有用過OSPF的MIS應該就能體會,這應該是最困擾所有MIS的事情,就是你根本不知道OSPF裡面的狀態,鍵人我就曾碰過兩地間的OSPF其中一條線路掉包很嚴重,但一直很難查出來的窘境,讓我們繼續看下去...

Internet連線測試

SiteC PC持續發動Traceroute 8.8.8.8

圖片.png

確認是走A1toC1

圖片.png

A1toC1斷線,改走A2toC2

圖片.png

A2toC2斷線,流量改走SiteB A1toB1 過來

圖片.png

運作完美 ദ്ദി ༎ຶ‿༎ຶ )

OSPF Load Balance 測試

圖片.png

來驗證OSPF Load Balance是否正常,鍵人我將兩台PC都放到SiteC,透過這兩台PC分別Ping SiteA不同的Interface。

圖片.png

192.168.31.2A1toC1去192.168.12.254,192.168.31.5A2toC2去192.168.13.254,由此證明 IPSEC OSPF Load Balancing ok。

透過這兩台PC分別Ping Internet 8.8.8.8。

圖片.png

192.168.31.2A1toC1去 8.8.8.8,192.168.31.5A2toC2去 8.8.8.8,由此證明 IPSEC SDWAN Load Balancing ok。

結語

我中間有提到過,有用過OSPF的MIS應該就能體會,監測OSPF線路品質是最困擾所有MIS的事情,就是你根本不知道OSPF裡面的狀態好壞,鍵人我就曾碰過兩地間的OSPF其中一條線路掉包很嚴重但很難查出來的窘境,經過實作發現Fortigate 目前SD-WAN在IPSEC OSPF的搭配上雖然可以運作,但其實針對LAN的部分SD-WAN功能根本沒生效,也就是說其實理論上這樣設定是有問題的,我們只是因為需要SD-WAN Performance SLA來監測OSPF線路的狀態,所以硬把SDWAN Interface當作是上面的Zone來使用。

但透過SD-WAN下能夠監測OSPF線路品質,利用SD-WAN Performance SLA 的偵測機制確實可以大大的幫助OSPF線路狀況的研判與監測,且還是可以自動交換路由,依然提供給大家參考。