Fortinet FortiGate 實戰課程

階段二:安全防護與連接 (Level 2) - 單元 09:IPsec VPN 實戰

一、核心概念 (Concept)

IPsec VPN:虛擬私人網路

IPsec VPN (Internet Protocol Security Virtual Private Network) 是一種在公共網路(如 Internet)上建立加密通道的技術,用於連接兩個不同的網路端點(Site-to-Site)或使用者與網路(Remote Access)。

生活化比喻:運鈔車與專用車道

想像網際網路 (Internet) 是一條充滿各種車輛(好人、壞人)的公共高速公路。

  • IPsec VPN 隧道:就像是一輛防彈的「運鈔車」。
  • 加密 (Encryption):運鈔車是完全封閉且上鎖的,外面的人看不到裡面載的是現金還是黃金(資料內容)。
  • 認證 (Authentication):司機出發和到達時,都要核對身分證與密碼,確保不是假冒的站點。
  • Site-to-Site:總公司與分公司之間建立了一條固定的運鈔路線,每天定時運送物資。
二、運作原理 (Mechanism)

IKEv1 vs IKEv2 與協商流程

1. IPsec 的兩個階段 (Phases)

  • Phase 1 (IKE Phase):
    雙方建立一條「管理通道」。驗證彼此身分 (Pre-shared Key 或 憑證),並協商加密演算法。
    關鍵參數: Encryption, Hash, DH Group, Lifetime
  • Phase 2 (IPsec Phase):
    在管理通道內,建立實際傳輸資料的「資料通道」。定義哪些流量 (Selectors) 可以通過。
    關鍵參數: Local/Remote Subnet, PFS

2. IKEv1 與 IKEv2 的差異

特性 IKEv1 IKEv2 (推薦)
交換封包數 Main Mode (6-9 packets)
Aggressive Mode (3 packets)
僅需 4 個封包即可建立
穩定性 斷線需重新完整協商 支援 MOBIKE,網路切換時可快速恢復
NAT 穿越 需額外設定 (NAT-T) 內建支援 NAT-T
架構師觀點

在 FortiGate 實務中,除非對方設備老舊僅支援 IKEv1,否則**一律建議使用 IKEv2**。它更快速、更簡單,且在除錯時封包量較少,更容易分析。另外,請務必確認兩端的 Phase 1 與 Phase 2 參數完全一致 (Mirror Image)。

三、架構視覺化 (Visuals)

1. Site-to-Site VPN 拓撲圖

※ 已經強制放大字體,請使用下方卷軸左右滑動檢視完整架構。

%%{init: {'theme': 'base', 'themeVariables': { 'fontSize': '20px', 'fontFamily': 'Noto Sans TC' }}}%% graph LR subgraph "HQ (總部)" HQ_LAN[HQ LAN
192.168.10.0/24] --- HQ_FGT[FortiGate HQ
WAN: 1.1.1.1] end subgraph "Internet" Cloud((Internet)) end subgraph "Branch (分公司)" BR_FGT[FortiGate Branch
WAN: 2.2.2.2] --- BR_LAN[Branch LAN
192.168.20.0/24] end HQ_FGT -- "IPsec Tunnel
(Encrypted)" --> Cloud Cloud -- "ESP Packets" --> BR_FGT classDef fw fill:#fca5a5,stroke:#b91c1c,stroke-width:2px; classDef net fill:#e5e7eb,stroke:#374151; class HQ_FGT,BR_FGT fw; class HQ_LAN,BR_LAN,Cloud net;

2. IKEv2 協商流程 (Sequence Diagram)

%%{init: {'theme': 'base', 'themeVariables': { 'fontSize': '9px', 'actorFontSize': '10px', 'noteFontSize': '9px', 'messageFontSize': '9px', 'fontFamily': 'Noto Sans TC' }}}%% sequenceDiagram participant Initiator as HQ FortiGate participant Responder as Branch FortiGate Note over Initiator, Responder: IKE_SA_INIT
(協商加密演算法, Nonces, DH Key) Initiator->>Responder: HDR, SAi1, KEi, Ni Responder->>Initiator: HDR, SAr1, KEr, Nr Note over Initiator, Responder: IKE_AUTH
(驗證身分, 建立第一條 Child SA) Initiator->>Responder: HDR, SK {IDi, AUTH, SAi2, TSi, TSr} Responder->>Initiator: HDR, SK {IDr, AUTH, SAr2, TSi, TSr} Note over Initiator, Responder: 隧道建立完成,開始傳送加密資料 (ESP) Initiator->>Responder: ESP Encrypted Data

3. Hub-and-Spoke 架構

%%{init: {'theme': 'base', 'themeVariables': { 'fontSize': '10px', 'fontFamily': 'Noto Sans TC' }}}%% graph TD Hub[HQ Hub
Concentrator] Spoke1[Store A] Spoke2[Store B] Spoke3[Store C] Hub <==> Spoke1 Hub <==> Spoke2 Hub <==> Spoke3 Spoke1 -.->|Traffic via Hub| Spoke2 style Hub fill:#f87171,stroke:#991b1b,stroke-width:4px style Spoke1 fill:#93c5fd style Spoke2 fill:#93c5fd style Spoke3 fill:#93c5fd
四、實務應用與設定 (Use Case)

案例 A:總部與分公司連線 (Site-to-Site)

情境: 台北總部 (HQ) 需與高雄分公司 (Branch) 連線,存取內部的 ERP 系統。
HQ WAN IP: 1.1.1.1, LAN: 192.168.10.0/24
Branch WAN IP: 2.2.2.2, LAN: 192.168.20.0/24
Preshared Key: Fortinet123!

HQ 端 FortiGate 設定範例 (CLI)

# 1. 設定 Phase 1 (定義鄰居與驗證)
config vpn ipsec phase1-interface
    edit "To-Branch"
        set interface "wan1"          # 出口介面
        set ike-version 2             # 使用 IKEv2
        set peertype any
        set net-device disable        # 建立虛擬介面而非綁定硬體
        set proposal aes256-sha256    # 加密演算法
        set remote-gw 2.2.2.2         # 對端公網 IP
        set psksecret Fortinet123!    # 預先共用金鑰
    next
end

# 2. 設定 Phase 2 (定義加密流量選取器)
config vpn ipsec phase2-interface
    edit "To-Branch"
        set phase1name "To-Branch"
        set proposal aes256-sha256
        set auto-negotiate enable     # 自動發起連線
        # src-subnet 與 dst-subnet 預設為 0.0.0.0/0 (由路由控制)
        # 若需嚴格限制,可在此設定
    next
end

# 3. 設定路由 (讓流量知道往 VPN 介面送)
config router static
    edit 1
        set dst 192.168.20.0 255.255.255.0  # 目的:分公司網段
        set device "To-Branch"              # 介面:VPN 通道
    next
end

# 4. 防火牆策略 (允許流量通過)
config firewall policy
    edit 1
        set name "HQ_to_Branch"
        set srcintf "lan"
        set dstintf "To-Branch"
        set srcaddr "192.168.10.0/24"
        set dstaddr "192.168.20.0/24"
        set action accept
        set schedule "always"
        set service "ALL"
        set logtraffic all
    next
    edit 2
        set name "Branch_to_HQ"
        set srcintf "To-Branch"
        set dstintf "lan"
        set srcaddr "192.168.20.0/24"
        set dstaddr "192.168.10.0/24"
        set action accept
        set schedule "always"
        set service "ALL"
        set logtraffic all
    next
end

案例 B:Hub-and-Spoke 架構

情境: 連鎖店模式。分店 A 與分店 B 之間沒有直接連線,若要通訊必須經過 HQ 轉送。
這需要在 HQ 設定防火牆策略允許 VPN 進到 VPN 出 (Hairpinning)。

優缺點分析

  • 優點: 設定集中化,分店只需連回總部。節省分店間建立 Mesh VPN 的複雜度。
  • 缺點: 所有流量經過 HQ,增加 HQ 頻寬負擔與延遲 (Latency)。單點故障風險 (HQ 掛了,分店間也斷了)。

HQ 端關鍵設定 (允許 VPN 間互通)

# 允許 Spoke A (VPN) 到 Spoke B (VPN) 的流量
config firewall policy
    edit 3
        set name "Spoke_to_Spoke"
        set srcintf "VPN_Hub_Interface"   # 來源:VPN
        set dstintf "VPN_Hub_Interface"   # 目的:同一個 VPN
        set srcaddr "All_Spokes_Subnets"
        set dstaddr "All_Spokes_Subnets"
        set action accept
        set service "ALL"
    next
end
五、隨堂測驗 (Quiz)

挑戰你的理解