iT邦幫忙

0

MPLS 備援線路使用 FortiGate 做Site to Site VPN

Hi 各位先進,

目前遇到一個問題, 想請教大家,
公司三地(A,B,C)辦公室預計於月底更換另一家MPLS,
想將三地的FortiGate 100D (5.4.8)透過Site to Site VPN做該MPLS備援,但問題來了, FortiGate設定的靜態路由, 是往MPLS Router丟(AtoB,AtoC 其它兩點類推),假設MPLS Router故障,我可以如何設定FortiGate自動更新路由改跑Site to Site VPN ?

目前 A site 靜態路由
A to B => MPLS router (優先權 0, 設備距離 10)
A to C => MPLS router (同上)
A to B => StoS VPN (優先權 0, 設備距離 15)
A to C => StoS VPN (優先權 0, 設備距離 15)

或是可以怎麼運作? 偵測到異常時, 把前兩個路由清除,
偵測正常後, 再把前兩個路由恢復?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
bluegrass
iT邦高手 1 級 ‧ 2018-04-12 15:54:11
最佳解答

Rouing OK, 就缺 MONITOR

Fortigate 設定 MONITORING 在 LAN port (你的MPLS也一樣) / VPN

edit "lan"
set srcintf "lan"
set server "x.x.x.x"
set gateway-ip x.x.x.x
set update-cascade-interface disable
next

edit "vpn1"
set srcintf "vpntun"
set server "x.x.x.x"
set gateway-ip x.x.x.x
set update-cascade-interface disable
end

看更多先前的回應...收起先前的回應...
ks1217 iT邦研究生 1 級 ‧ 2018-04-12 16:03:45 檢舉

Hi Sir,感謝您的回覆,
我也有這樣想過, 但是我的FortiGate LAN(3.254)為VLAN30, 與Core(3.1)及MPLS(3.253)接在一起, 假如把LAN disable, 那我所有對外的網路就斷掉了.
Core set VLAN 10(1.1 Users) VLAN 20(2.1 Servers) 路由到 VLAN 30(3.1 Gateways)

是否要把MPLS LAN改設一個新的VLAN來Monitor?

bluegrass iT邦高手 1 級 ‧ 2018-04-12 16:14:19 檢舉

那就換成不是DISABLE LAN PORT而是DISABLE ROUTING

set update-cascade-interface disable

換成

set update-static-route disable

對了, 你現在的default Gateway和MPLS Gateway放在同一SUBNET
這樣的DESIGN會有Asymmetrice route, 你MPLS應該要一個獨立SUBNET

ks1217 iT邦研究生 1 級 ‧ 2018-04-12 16:43:19 檢舉

Hi Sir,感謝指導,
語法的部份是否可以大略說明一下?
set srcintf "lan"
set server "x.x.x.x"
set gateway-ip x.x.x.x
這三個分別是要設定甚麼?
Server是指要偵測的IP?
gateway是指路由的閘道?
偵測這個IP, 如果fail就把這個gateway的 route table disable?

ks1217 iT邦研究生 1 級 ‧ 2018-04-12 16:58:33 檢舉

Hi Sir,我找到詳細的介紹
"http://help.fortinet.com/cli/fos50hlp/54/Content/FortiOS/fortiOS-cli-ref-54/config/system/link-monitor.htm"
我先試看看, 感謝您~
另外您提到的Asymmetrice route會發生甚麼問題?
由於這個設計是在我來這間公司之前就架好的, 使用起來尚未出現問題.

bluegrass iT邦高手 1 級 ‧ 2018-04-13 09:58:48 檢舉

未出現問題不代表沒問題

Asymmetric route 參考:

https://blog.csdn.net/chiyuwei1766/article/details/50706306

bluegrass iT邦高手 1 級 ‧ 2018-04-13 10:07:02 檢舉

同一SUBNET盡量都不應該有一個以上的GATEWAY

你可以看看你MPLS ROUTER的ROUTING有沒一條

0.0.0.0/0 -> GW: Fortigate

然後你電腦的DEFAULTI GATEWAY是否指向 MPLS ROUTER / FORTIGATE?

如果你電腦的DEFAULTI GATEWAY是指向 MPLS ROUTER
當你上網時侯, 你電腦是期待"MPLS ROUTER"回應你的, 但你MPLS ROUTER將這個PACKET交給了Fortigate, 然後因為Fortigate和你的電腦是同SUBNET, Packet會由Fortigate直接返回你電腦, 與你電腦期待"MPLS ROUTER"回應有衝突, >如果< 你電腦/FORTIGATE是會檢查TCP, 這個PACKET就會"被"以為是黑客/攻擊而DROP掉

如果你電腦的DEFAULTI GATEWAY是指向Fortigate
那你在瀏覽MPLS SUBNET的時侯一樣會有上面的問題

ks1217 iT邦研究生 1 級 ‧ 2018-04-13 10:11:25 檢舉

Hi Sir,
為避免我的認知錯誤, 我將設定如下指令,
環境說明
Site A ,
LAN subnet (.1.1, .2.1, .3.1)
FortiGate 3.254
MPLS Router LAN 3.253 (next step 3.254) WAN 100.1

Site B,
LAN subnet (.11.1, .21.1, .31.1)
FortiGate 31.254
MPLS Router LAN 31.253 (next step 31.254) WAN 101.1

Site C,
LAN subnet (.41.1,)
FortiGate 41.254
MPLS Router LAN 41.253 (next step 41.254) WAN 102.1

Site A FortiGate static-route
11.0/24 => 3.253 P0 , D10
21.0/24 => 3.253 P0 , D10
31.0/24 => 3.253 P0 , D10
41.0/24 => 3.253 P0 , D10
11.0/24 => StS VPN P0 , D15
21.0/24 => StS VPN P0 , D15
31.0/24 => StS VPN P0 , D15
41.0/24 => StS VPN P0 , D15

預計新增Link monitor如下

edit "lan"
set srcintf "lan"
set server "101.1""102.1"
set gateway-ip 3.253
set update-static-route disable
end

這樣偵測到MPLS不通時, 把自己的Route table關掉,
就會只剩下StS VPN的路由紀錄, 那假設MPLS通了, 會自動加回來嗎?
StS VPN平日就接在線上, 供其它功能使用.
以上設定是否正確??

ks1217 iT邦研究生 1 級 ‧ 2018-04-13 10:13:19 檢舉

假設Site B MPLS斷線, 是否Site C也會改跑 VPN? 能否指定更新的路由表?

bluegrass iT邦高手 1 級 ‧ 2018-04-13 10:23:35 檢舉

WAN 100.1 是什麼?

我這樣說吧

set server "101.1""102.1"

這里的SERVER應該是你REMOTE SITE MPLS的GATEWAY IP

即是

-> 253.3 (SITE A MPLS ROUTER) ----> (SITE B MPLS ROUTER) X.X -> 11.0 Network

X.X 就是你要PING的set server ip

ks1217 iT邦研究生 1 級 ‧ 2018-04-13 10:39:53 檢舉

Hi Sir, 感謝您的回覆, 首先關於Asymmetrice route,我的User default Gateway是設在Core上,Core也有設定remote site subnet路由到MPLS (3.253)

以下更新語法
edit "lan"
set srcintf "lan"
set server "31.253"
set gateway-ip 3.253
set update-static-route disable
next
edit "lan"
set srcintf "lan"
set server "41.253"
set gateway-ip 3.253
set update-static-route disable
end

如果這樣的指令是把3.253的路由拿掉,
是否其中一個Site異常, 全部的Site就要跑VPN了?
是否能指定更新的路由呢?
例如Site B異常跑StS VPN, Site C正常跑MPLS 3.253?

bluegrass iT邦高手 1 級 ‧ 2018-04-16 10:16:45 檢舉

如果你要指定更新的路由, 那MONITOR的SERVER就是要改成REMOTE SITE 接 MPLS 的 GATEWAY IP, 理論上是這樣

但實際你要多考慮一個問題, 也是我最擔心的:

你 MPLS的ROUTE 和 VPN的ROUTE 都是能PING 到你 REMOTE SITE 接 MPLS的 GATEWAY IP 的, 這樣你要如何判定你真的在用MPLS ROUTE去做 MONITORING 呢?

  1. 假設你MPLS真的死了, 是INTERFACE有電但線不能通那種
  2. FG PING 不到對家的接 MPLS 的 GATEWAY IP
  3. FG 以為MPLS 死了, 換VPN ROUTE
  4. VPN ROUTE 通了, 因為VPN ROUTE 通了, 也能PING到 對家接 MPLS 的 GATEWAY IP
  5. FG 以為MPLS 復活了, 換回MPLS ROUT, 實際MPLS已經死了
  6. LOOP......
ks1217 iT邦研究生 1 級 ‧ 2018-04-16 10:42:32 檢舉

Hi Sir,
假設 B site不通,
A ping 不到 31.253 (B site MPLS),
B ping 不到 3.253 (A Site MPLS),

A Site 會把往 B Site LAN(.11.1, .21.1, .31.1)向 3.253丟的路由拿掉, 改成跑 Site to Site VPN
B Site 會把往 A Site LAN(.1.1, .2.1, .3.1)向 31.253丟的路由拿掉, 改成跑 Site to Site VPN
C Site 會把往 B Site LAN(.11.1, .21.1, .31.1)向 41.253丟的路由拿掉, 改成跑 Site to Site VPN

三地的Site此時並不會偵測到各自的MPLS Gateway(因為沒有路由往.253跑), 也就沒有Loop的問題吧?
假設各點可以Ping 到31.253, 就把靜態路由改回來,
所有路由就可以恢復了,

或是我可以改偵測 ISP GW (MPLS Router WAN端IP 100.1, 101.1, 102.1)來做更精準的偵測 ?

bluegrass iT邦高手 1 級 ‧ 2018-04-16 11:11:07 檢舉

其實的ABC是否各自都有個MPLS GATEWAY, 如果是就不用想了MONITOR MPLS GATEWAY就是了, 如果BC共享一個MPLS GATEWAY, A自己一個MPLS GATEWAY 才有你之前說的一個Site異常, 全部的Site就要跑VPN的問題

ks1217 iT邦研究生 1 級 ‧ 2018-04-16 11:30:43 檢舉

Hi Sir, 感謝您的回覆, 您提到的loop的問題確實很重要,讓我重新思考路由問題, ABC個點都有自己的MPLS Gateway(在三地), Monitor的部份應該會改ping本地MPLS Gateway + Remote MPLS + Remote ISP , 只要其中一點異常, 就跑VPN, 這樣應該可以解決這個問題,
只是這些語法我不是很了解
像是

  1. set server "x.x.x.x""X.X.X""X.X.X"
    語法正確嗎? 其中一個異常就算是Fail?
  2. set gateway-ip x.x.x.x
    假設Site A 往 Site B LAN 與 Site C LAN都往 3.253丟
    上述語法是否會把所有3.253的路由關掉? 還是只是往set server跑的路由刪掉? 那Set Server 應該要有 11.1 ,21.1之類的LAN subnet嗎?
  3. set update-static-route disable
    disable是指把上述路由關掉嗎? 如果是Enable呢?

語法不懂, 還望大大多多指教~~ 感謝

bluegrass iT邦高手 1 級 ‧ 2018-04-16 14:44:34 檢舉

set server "x.x.x.x""X.X.X""X.X.X"
全部異常才算是Fail

set gateway-ip x.x.x.x

會把所有x.x.x.x的路由關掉

update-static-route {disable | enable}
Enable to remove static routes from the routing table that use this interface if the link monitor fails. Default is enable

以你現在的設計, 我說也說不清楚

我用正規的設計去說明

正規的設計不會有ASYMMETRIC ROUTE/LOOP問題

要把MPLS放在獨立的SUBNET和INTERFACE

假設:
A SITE LAN : 192.168.0.0/24
MPLS ROUTER Interface IP (ConnectToFirewall): 172.16.0.254
Firewall IP to Interface IP (ConnectToMPLS): 172.16.0.1
Static route 1 : 192.168.1.0/24 -> 172.16.0.254

B SITE LAN : 192.168.1.0/24
MPLS ROUTER Interface IP (ConnectToFirewall): 172.16.1.254
Firewall IP to Interface IP (ConnectToMPLS): 172.16.1.1
Static route 1 : 192.168.0.0/24 -> 172.16.1.254

A site:

edit "lan"
set srcintf "lan"
set server "172.16.1.1" <----

set gateway-ip "172.16.0.254" <----
因為你沒STATIC ROUTE教FIREWALL怎去172.16.1.0/24
所以這里要指明GATEWAY

set update-cascade-interface disable
next

B site:
edit "lan"
set srcintf "lan"
set server "172.16.0.1"
set gateway-ip "172.16.1.254"
set update-cascade-interface disable
next

set update-static-route disable
disable是指把所有有關路由(比如Static route 1 : 192.168.1.0/24 -> 172.16.0.254)關掉, default 就是 Enable

ks1217 iT邦研究生 1 級 ‧ 2018-04-16 15:13:50 檢舉

Hi Sir,感謝回覆,
假設C Site LAN 192.168.3.0/24
A Site 的static route 192.168.3.0/24 也是丟 172.16.0.254,
假設B Site異常, 執行了set update-cascade-interface disable這項指令, 是否A Site to C Site也會中斷?改跑Site to Site VPN?
是否能指定 192.168.1.0/24 路由到 172.16.0.254才disable,
而 192.168.3.0.24路由到 172.16.0.254保留呢?
如果語法不能這樣指定, 那我再鑽研也不符合我的需求了.
感謝您的耐心回覆

bluegrass iT邦高手 1 級 ‧ 2018-04-16 16:41:52 檢舉

這種是hub and spoke, FG應該真的不可指定了

而 SONICWALL / PALOALTO 就可以 (可以按個別STATIC ROUTE 做 MONITORING)

然後我又在想了, 如果你建兩個VLAN INTERFACE, 各給一個沒在用的SUBNET IP

你把你 兩個REMOTE NETWORKS STATIC ROUTE GATEWAY分別指向這兩VLAN 個IP, 然後建一個POLICY BASED ROUTE, 把來自這兩個VLAN INTERFACE的TRAFFIC都要沒腦經你MPLS ROUTER出去

再來兩個MONITORING建在這兩個VLAN INTERFACE之上的話....

恩, 不知道行不行.

https://ithelp.ithome.com.tw/upload/images/20180416/201020313Rs2rfU3kZ.jpg

https://ithelp.ithome.com.tw/upload/images/20180416/20102031FGAD2nIPt4.jpg

ks1217 iT邦研究生 1 級 ‧ 2018-04-16 17:35:36 檢舉

Hi Sir, 感謝您的回覆,
您是指設定兩個虛假VLAN給B Site跟C Site用?
這樣兩個Interface是否都要接上線才會UP?
您的想法我也曾經想過, 也許可以跑看看~~

另外我面臨的問題是Core上面有設定remote subnet路由到MPLS(3.253), 這一段是否要拿掉? 這樣User才會流向Fortigate(3.254)?
這樣才能用Fortigate來做路由控制, 也可以避免掉不對稱路由的問題,不知道我這樣想是否正確.

我會找時間測試一下您說的方法, 也許可行, 測試結果會分享於此.

bluegrass iT邦高手 1 級 ‧ 2018-04-16 17:48:23 檢舉

不錯玩, 記得 FIREWALL POLICY 要放行有關INTERFACE

如果你HOST的DEFAULT GATEWAY是指向CORE SWITCH, 而CORE SWITCH又有ROUTING去REMOTE/MPLS NETWORK, 要拿掉.

對, VLAN要接線的才會UP, UP才有用

你可以把兩個沒在用的RJ45建成一個HARDWARE/SOFTWARE SWITCH, STP(SPANNING TREE)要啟用然後用一條LAN CABLE直接連接這兩個RJ45, STP會生效自動BLOCK了其中一個RJ45

然後VLAN就建在這個HARDWARE/SOFTWARE SWITCH之上就OK了

ks1217 iT邦研究生 1 級 ‧ 2018-04-20 11:53:31 檢舉

Hi Sir,
目前作法可能會稍作修正, MPLS申請 Secondrly IP,然後接到 FortiGate Port上, 再透過這組IP跟其他兩地做內網VPN連線(GRE-Tunnel), 這樣一地同時會有四組VPN設定(兩內網兩外網),假設內網MPLS斷線, VPN也會斷線(自動清除Static route), 這時兩地都會自動跑另一組VPN(外網), 這樣好像是一個不錯的設計, 只是怕內網MPLS 2M/2M專線做VPN後, 還剩下多少可用了. 目前測試中~ 供大家參考

ks1217 iT邦研究生 1 級 ‧ 2018-05-04 09:44:03 檢舉

由於考量到各地IT人力有限, 只有我比較瞭解這一塊,怕到時候緊急情況手忙腳亂, 還是委託MPLS廠商建立備援VPN, 以免增加IT負擔, 所以不進行上述設定, FortiGate設定好GRE-Tunnel後只能在CLI介面看連線狀況, 不是那麼好掌握, 不過是可行的(已嘗試過兩點串聯OK). 以上供大家參考.

ks1217 iT邦研究生 1 級 ‧ 2018-05-04 10:20:33 檢舉

奇怪我點"選為最佳解答"沒有反映ㄟ..

0
mytiny
iT邦超人 1 級 ‧ 2018-04-12 12:43:21

簡短說明一下Fortigate的靜態路由順序

  1. 距離數值小的優先
  2. 優先權數值小的優先(0無作用)

因此樓主可以利用此方式設定靜態路由的優先順序
只是當原先走的MPLS斷線時
Site to Site VPN路由要多久會生效需要測試看情況
另外也可能同時Site to Site VPN線路也斷
實際也無法生效

看更多先前的回應...收起先前的回應...
ks1217 iT邦研究生 1 級 ‧ 2018-04-12 14:05:09 檢舉

Hi Sir,
感謝您的回覆,如您所述, 是否改成
A to B => MPLS router (優先權 1, 設備距離 10)
A to C => MPLS router (同上)
A to B => StoS VPN (優先權 10, 設備距離 10)
A to C => StoS VPN (優先權 10, 設備距離 10)
即可?
假設 MPLS Router異常, 會自動往STS VPN路由過去嗎?
是否有像 link monitor之類的功能去觸發?

mytiny iT邦超人 1 級 ‧ 2018-04-12 21:19:51 檢舉

以上設定是可以的
當設定去目的地一致且距離數值相同時
會自動啟用ECMP,但優先權值會指定何者優先

由於樓主採用的是OS5.4.8
沒有link-monitor的WEB操作畫面(5.2有)
所幸樓主已經找到CLI命令,一樣可行
設定好之後可以在左側最底的 監測>WAN Link監視
看到即時的連線狀態。

萬一有需要兩條線路同時運作
會建議採用另一產品 FortiWAN
這樣可以整合MPLS及多條Site to Site VPN
除了線路可以整合頻寬,分配資源外
線路也可以自動備援互補

ks1217 iT邦研究生 1 級 ‧ 2018-04-16 09:29:49 檢舉

Hi Sir,感謝回覆,
CLI指令雖然有語法說明, 但全是分開解釋, 手邊也沒有空餘機器可以測試...
不知道哪裡有CLI範本可以參考... 如果可以指定關掉哪條靜態路由, 而不是把整個有關253的路由關掉, 那就可以解決我的問題了,
我想也許是要用 source-ip 參數..

mytiny iT邦超人 1 級 ‧ 2018-04-16 11:51:09 檢舉

樓主看來site to site VPN在fortigate
但是MPLS卻在core switch上
這樣想要做到線路備援,恐怕會不好弄
如果當初VPN與MPLS都是接在fortigate上
之前所描述的線路備援作法才有意義
況且MPLS接在防火牆上才能有資安防護
為今之計,小弟是建議改網路架構
將MPLS接在fortigate上,並修改靜態路由規則
茲事體大,建議找當初防火牆維護SI來處理
可能會有相關技術服務費用

ks1217 iT邦研究生 1 級 ‧ 2018-04-16 12:11:48 檢舉

Hi Sir, 感謝您的回覆,
關於MPLS資安問題, 由於ISP設定MPLS 是往防火牆丟, 不是向Core Switch丟, 所以各點進入LAN端還是會先經過防火牆,
假設Corw Switch不設定外點路由跑MPLS, 讓全部跑到FortiGate個外點IP再導向MPLS,應該不會有路由問題吧??
目前困難點在於其他兩點一個沒有IT, 一個網路知識=0, 要做變動可能有點難度...

0
做工仔人!
iT邦大師 1 級 ‧ 2018-04-12 14:38:49

報告樓主,
MPLS VPN的備援方式,一般都是連到ISP他們當地的機房.而且只要提供一個IP給他們就好了.
(一般他們都是自己從ROUTER上VPN回他們當地的機房)
沒聽過要客戶自己建SITE TO SITE 的VPN.

因為即使斷線,他們還是會收VPN的錢啊 !(最多只是少收LOCAL LOOP 的費用而己)

另一個問題是:客戶自建 SITE TO SITE的VPN如果穩定的話.就不會用MPLS-VPN.所以ISP廠商一般不會請客戶建SITE TO SITE 的VPN .

ks1217 iT邦研究生 1 級 ‧ 2018-04-12 14:58:03 檢舉

Hi Sir, 感謝回覆, 我知道可以這樣做, 目前尚未到期的MPLS廠商也是這樣做備援的, 很可惜的新的MPLS廠商說只能另外再建一條專用線路做備援線路, 想當然價格就不那麼親民了, 只好想辦法自己搞, 這個月底要切換, 原本新的MPLS窗口離職了(SingTel)....原本VoIP問題也被接手的新人處理好了...
所以其實是可以做的~ 只是窗口技術程度不高, 我也不是很瞭解MPLS運作, 才會搞到現在這樣, 需要用FortiGate來做備援.

其實這個是要求廠商的問題.
如果是我的處理方式:拉專線可以, 廠商出錢.(含在服務費當中, 而且不准漲價-誰叫你們的技術能力比其他廠商差),否則就比照其他廠商的作法.只提供一個IP,剩下來的業務自己去想辦法.

ks1217 iT邦研究生 1 級 ‧ 2018-04-12 15:55:12 檢舉

可能廠商是新加坡在地的, 基本上甚麼都要算錢, 加上Internet備援方案, 每個月多加 1500 新幣,一次性設定費增加 3900新幣.... 分明是不想做這塊, 只好矇著頭硬做了.
不知道FortiGate有沒有甚麼好方法可以做? 曾測過手動調整設備距離, 可以把流量導向Site to Site VPN, 只是兩邊都要手動調整.

0
jimmyhiyawu
iT邦新手 3 級 ‧ 2018-05-02 18:05:22

其大大大,已經回覆滿多訊息了,分享一個工具EVE-NG
http://www.emulatedlab.com/eve-ng

建議大大可以去爬一下文...

這個工具,可以模擬滿多網路設備的,要做LAB的話,應該是滿足夠的!

ks1217 iT邦研究生 1 級 ‧ 2018-05-04 09:34:44 檢舉

Hi Sir,
感謝您的分享

我要發表回答

立即登入回答