十月 18 2018

用Fortigate與Azure建立站對站VPN連線

分類:Cloud

aska_azure_s2s_vpn_01

類似文章其實國內外都有人寫過,不過也想用自己的方式分享一下。

一般狀況下,已在使用的 Azure 環境正常應該都至少有一個虛擬網路,所以文章說明直接從建立 VPN 閘道開始。

設定Azure 端

建立虛擬網路閘道 (Virtual Network Gateway)

點擊左上角的「+」符號,建立資源 → 網路 → 虛擬網路閘道。
aska_azure_add_vpn_gw_01

參考下圖範例建立資源,並依據需求填入名稱及選擇。
閘道類型,因為會用 Fortigate 走 IPSEC 方式與 Azure 建立連線,而且 EpressRoute 的申請費用及程序不會是中小企業的選擇,所以請選擇「VPN」。
VPN 類型,請選擇依路由 (路由式 RouteBased, 動態路由)。原則式的限制很多,且只能有一個站對站連線。
SKU 等級,若是單純測試需求,可以考慮只選擇「基本」。
請留意,基本 (Basic) 屬於舊版,之後也僅能在基本、標準及高效能間等傳統模式更換設定,無法轉換為 Azure 較新且快的 VpnGw 等級。
閘道子網路的範圍,正常會自動設定也能自訂,但最小只能切 /29,官方建議至少是 /28 或更大。若看不到這部份的設定資訊,代表之前已經新增過。

至於 BGP ASN 什麼的,如果不知道是啥,就代表不用特別去按了。
aska_azure_add_vpn_gw_02

建立區域網路閘道 (Local Network Gateway)

點擊左上角的「+」符號,建立資源 → 網路 → 區域網路閘道。

參考下圖範例新增。這部份的設定,主要是針對 VPN 另一端的網路環境做資訊新增。
● IP 位址,請填入另一端網路環境的 VPN Gateway IP。以本文來說,也就是 Fortigate 用來對接的外部 IP。
● 位址空間,請填入另一端網路環境會需要連通的網段。
aska_azure_add_local_gw_01

建立連接 (Connections)

新增上述兩種閘道資訊的設定後,尚需要建立連接才算是完成 Azure 端的設定。

到虛擬網路閘道的頁面,選擇「連接」並新增。
aska_azure_add_vpn_conn_01

參考下圖範例新增,虛擬網路閘道及區域網路閘道,則是選擇剛新增的項目。
● 連接類型,請選擇「站對站 (IPSec)」。
● 共用金鑰,請設定一組密碼供 Azure 與 Fortigate 建立連接加密使用。
aska_azure_add_vpn_conn_02

連接狀態檢查,請順手記下 Azure 端虛擬網路閘道的 Internet IP。
aska_azure_add_vpn_conn_status

設定 Fortigate 端

以下為 5.6.x 版環境範例,簡單整理與 IPsec VPN 相關會動到的設定:
1. VPN 通道
2. Address
3. 路由
4. 原則

建立 VPN 通道 (Tunnel)

VPN → IPsec Wizard,建立名稱並選擇自訂後,點擊下一步。
aska_fortigate_create_vpn_conn_01

參考下圖範例選擇及設定:
● IP Address 填入前面提醒,請順手記下的 Azure 端虛擬網路閘道的 Internet IP
● NAT Traversal 設定為 Disable
● Dead Peer Detection 設定為 On Idle
● IKE 版本使用 Version 2
● Dead Peer Detection 輸入與 Azure 相同的密碼金鑰值
● Peer Accept Types 設定為 Any peer ID
aska_fortigate_set_vpn_01

● Phase 1 的 Encryption 及Authentication 新增如下
AES 256 對應 SHA1
3DES 對應 SHA1
AES 256 對應 SHA 256
DH Group 指定為 2
● Key Lifetime 設定為 28800 秒
aska_fortigate_set_vpn_02

● Phase 2 點開 Advanced 進階項目, Encryption 及Authentication 新增項目如同 Phase 1,但
請取消勾選「Enable Perfect Forward Secrecy (PFS)」
● Auto-negotiate 建議勾選,勾選後同時會自動勾選 Autokey Keep Alive (感謝某技術人士補充此設定建議)
● Key Lifetime 設定為 27000 秒
aska_fortigate_set_vpn_03

如果對相關設定項目有興趣或疑慮,可參考文末資訊。

建立與 Azure 網段相關的防火牆物件 (Objects)

Policy & Objects → Addresses,主要針對 Azure 網段做資訊新增。
aska_fortigate_set_address_01

Interface 請選擇剛建立的 VPN 通道名稱。從這張圖也可以發現,此時 VPN 尚未接通。
aska_fortigate_set_address_02

若想更謹慎些,也可多建立一個針對地端網段做範圍限定。
aska_fortigate_set_address_03

建立到 Azure 網段的路由

Network → Static Routes,針對 Azure 網段做路由指定。
aska_fortigate_add_route_01

Interface 同樣選擇剛建立的 VPN 通道名稱,Administrative Distance 優先權請低於其他預設。
aska_fortigate_add_route_02

新增 Azure 網路與地端連通的防火牆原則。

由於要雙邊互通,所以會建立兩條相關原則。
aska_fortigate_add_policy_01

Azure Virtual Network 到 CorpNet,請取消勾選 NAT,並依需求參考下圖完成設定。
aska_fortigate_add_policy_02

CorpNet 到 Azure Virtual Network,請取消勾選 NAT,並依需求參考下圖完成設定。從這張圖可以稍微發現,在建立好 Azure VNet 網段到內網的 Policy 後,VPN 已經呈現接通狀態。
aska_fortigate_add_policy_03

檢查 Policy 設定
aska_fortigate_add_policy_status

到 Monitor → IPsec Monitor,檢查 VPN 連接狀態,確認連接成功。
aska_fortigate_ipsec_monitor

轉到 Azure Portal 再檢查,同樣回報已連接。
aska_azure_vpn_connect_status

用放在 Azure 上的 VM 與地端主機互 Ping 也沒問題。
aska_azure_vpn_ping_test

後記

承襲過往碎唸風格,文字描述很多,若很懶得看,直接照圖做應該也可以。

再補充,一般會建立雲端及地端的 VPN 對接,除了希望能直接從內部進行管理外,大多會希望在雲端的 VM 能加入網域。假使雲端的虛擬網路未佈建 DC (強烈建議至少放置一台於雲端,避免 VPN 斷線時無法溝通驗證),請務必參考下圖到虛擬網路的 DNS 設定,自訂 DNS 伺服器指向到 DC 相關 IP。
aska_azure_vnet_set_dns

若 Fortigate 的版本,不是微軟官方文件目前驗證公告的 5.6 以上,我自己測試過,舊版的 FortiOS 4.x 也是能建立連線,但請瞭解,沒有人可以保證及支援這樣使用一定會是正常。

延伸閱讀
Azure 部落格 - New Azure VPN Gateways now 6x faster
Azure 文件 - 關於 VPN 裝置
Azure 文件 - 使用虛擬網路閘道 SKU (舊版 SKU)
Azure 文件 - VPN 閘道 SLA

資料參考
The Fortinet Cookbook - IPsec VPN to Microsoft Azure
FortiOS 5.6 Online Help - Chapter 14 - IPsec VPN

目前有 3 個回應 , 標籤:


目前有 3 個回應

  1. royce 說道:

    你好,请问这个操作会改变本地网络的出口IP为云端的ip吗

    • AskaSu 說道:

      不會,純粹是兩邊的網路連接串通,
      除非您有特別去改動本地端的路由

      • yz 說道:

        您好, 請問若要達成本地端出口為 Azure IP 可以達成嗎?
        因為我測試好幾次都無法成功, 都只抓到 local public IP
        謝謝~

發表迴響

*