6012 字
30 分鐘
載入中...
FortiGate SSL VPN 遷移到 IPsec VPN 教學

1. 為什麼要從 SSL VPN 遷移到 IPsec VPN?#

如果您的組織目前使用 SSL VPN,可能會遇到以下幾個問題:

常見問題#

  1. 連線速度慢、延遲高

    • SSL VPN 無法使用硬體加速(如 FortiGate 的 NPU),所有加密解密都靠 CPU 處理
    • 當多人同時連線時,CPU 使用率會飆高,影響整體效能
  2. TCP 應用容易卡頓

    • SSL VPN 使用 TCP(HTTPS/443)封裝,如果內部應用也是 TCP(如 RDP、SSH),會產生「TCP-over-TCP」問題
    • 當網路不穩定時,兩層 TCP 會互相影響,造成連線變慢甚至中斷
  3. 無法管理流量優先順序

    • SSL VPN 加密後,網路設備看不到內層封包的類型
    • 無法為重要應用(如視訊會議)設定較高優先權

遷移到 IPsec VPN 的好處#

效能大幅提升:支援硬體加速,CPU 負擔降低 ✅ 連線更穩定:使用 UDP 封裝,避免 TCP-over-TCP 問題 ✅ 支援 QoS:可為不同流量設定優先順序 ✅ 更適合長期連線:適合需要穩定、高效能的工作環境

2. SSL VPN vs IPsec VPN 快速比較#

以下表格幫助您快速了解兩者的差異:

項目SSL VPNIPsec VPN
封裝方式TLS over TCP (443)ESP(通常使用 UDP 4500)
加密效能較低(無硬體加速)較高(支援 NPU 硬體加速)
穿越 NAT 能力高(走 TCP 443)中(需 NAT-T,使用 UDP 4500)
穿越防火牆能力高(幾乎不受限制)中(需開放 UDP 500/4500)
QoS 支援差(無法標記流量)佳(可標記 DSCP,支援流量分類)
TCP 應用表現差(TCP-over-TCP)佳(UDP 封裝,無重複擁塞控制)
用戶端需求瀏覽器或 FortiClientFortiClient(或其他 IPsec 客戶端)
適用場景臨時連線、外部存取長期連線、高效能需求、企業遠端辦公

選擇建議#

  • 繼續使用 SSL VPN:臨時需求、少量使用者、網路環境複雜(需穿越多層防火牆)
  • 遷移到 IPsec VPN:長期使用、多人同時連線、需要高效能、重視連線穩定性

3. 環境說明#

本教學使用的環境:

  • 硬體:FortiGate 60F
  • 系統版本:FortiOS 7.2.11

4. 遷移前的準備工作#

在開始建立 IPsec VPN 之前,建議先確認以下項目:

4.1. 身份驗證方式#

SSL VPN 和 IPsec VPN 都支援多種驗證方式,確認您目前使用的方式是否相容:

驗證方式SSL VPNIPsec (IKEv1)IPsec (IKEv2)備註
本機帳號
LDAP✅(XAuth)✅(EAP)IKEv2 整合度較佳,建議優先使用
RADIUS
SAML僅 IKEv2 支援,需 FortiClient 6.4+
憑證

建議

  • 如果使用單一驗證方式(本機帳號、LDAP、RADIUS),可選擇 IKEv1 或 IKEv2
  • 如果需要 SAML 驗證,必須使用 IKEv2
  • 建議優先使用 IKEv2,因為更安全、效能更好

4.2. IP 位址分配方式#

確認要如何分配虛擬 IP 給連線的使用者:

方式一:IP 地址池(推薦)

  • 設定一個 IP 範圍(如 10.10.10.10-10.10.10.50
  • 使用者連線時自動分配 IP
  • 類似 SSL VPN 的做法

方式二:DHCP Server

  • 使用內部 DHCP Server 分配 IP
  • 適合需要整合現有 DHCP 環境的場景

建議設定

  • 子網路遮罩:設定為 255.255.255.255,讓每個 VPN 使用者彼此隔離
  • DNS Server:設定內部 DNS,方便使用者存取內部資源

4.3. Split Tunnel(分流設定)#

Split Tunnel 可以讓使用者只有存取公司內部網段時才走 VPN,其他流量(如上網)直接從本地網路出去。

優點

  • 減少 VPN 流量,降低 FortiGate 負擔
  • 使用者上網速度不受影響

建議

  • 啟用 Split Tunnel
  • 設定要走 VPN 的網段(如公司內部網段 192.168.1.0/24

4.4. 多群組管理#

如果您有不同的使用者群組(如 IT 部門、業務部門),需要規劃存取權限:

方式一:單一 VPN 隧道 + 防火牆政策區分

  • 所有使用者連到同一個 VPN
  • 透過防火牆政策依群組給予不同權限
  • 設定較簡單,適合小型環境

方式二:多條 VPN 隧道 + Peer ID 區分

  • 為每個群組建立獨立的 VPN 隧道
  • 使用 Peer ID 識別不同群組
  • 可為不同群組設定不同加密參數和 IP 範圍
  • 適合需要高度區隔的場景

注意

  • 如果使用 IKEv1,必須選擇 Aggressive Mode 才能使用 Peer ID 區分
  • IKEv2 原生支援 Peer ID,不需額外設定

5. 建立 IPsec VPN Tunnel#

FortiGate 提供兩種建立方式:

  1. 使用內建範本(適合初學者,自動建立相關設定)
  2. 自訂設定(彈性高,可精確控制所有參數)

本節將介紹這兩種方式。

5.1. 方式一:使用內建範本(IKEv1)#

這是最簡單的方式,FortiGate 會自動建立所需的所有設定。

5.1.1. 開啟 VPN Wizard#

  1. 登入 FortiGate 管理介面
  2. 前往 VPN > IPsec Wizard
  3. Template Type 選擇:Remote Access
  4. Remote device type 選擇:FortiClient
  5. 輸入 VPN 名稱(例如:Remote-VPN

開啟 VPN 設定精靈,選擇 Remote Access 範本和 FortiClient 作為遠端裝置類型

5.1.2. 設定身份驗證#

設定連線介面、驗證方式和使用者群組

設定說明

欄位說明建議值
Incoming InterfaceVPN 連線使用的 WAN 介面選擇對外的介面(如 wan1
Authentication Method驗證方式Pre-shared Key(共享金鑰)
Pre-shared Key共享金鑰(需與用戶端一致)設定複雜的密碼
User Group允許連線的使用者群組選擇已建立的群組

5.1.3. 配置網路設定#

設定內部介面、可存取網段、IP 地址池和 DNS

設定說明

項目說明建議值
Local Interface內部網段的介面選擇內部介面(如 internal
Local Address使用者可存取的內部網段輸入內部網段(如 192.168.1.0/24
Client Address Range分配給 VPN 使用者的 IP 範圍例如 10.10.10.10-10.10.10.50
Subnet MaskVPN 使用者的子網路遮罩255.255.255.255(使用者彼此隔離)
DNS Server提供給使用者的 DNS輸入內部 DNS 或 FortiGate IP
Enable Split Tunnel是否只讓特定網段走 VPN建議啟用(減少流量)

5.1.4. 客戶端選項#

設定客戶端選項,如密碼儲存、自動連線等

設定說明

選項說明建議
Save Password允許使用者儲存密碼依公司政策決定
Auto Connect開機自動連線適合需長期連線的使用者
Always Up斷線時自動重連建議啟用(提升連線穩定性)

5.1.5. 完成並驗證#

點擊 OK 完成設定。系統會自動建立:

  • ✅ Phase 1 和 Phase 2 設定
  • ✅ IPsec Tunnel 介面
  • ✅ 防火牆政策(允許 VPN 流量進入內部網段)

檢查設定

  • 前往 VPN > IPsec Tunnels 確認 VPN 狀態

IPsec Tunnels 列表,顯示剛建立的 VPN 設定

5.2. 方式二:自訂設定(IKEv2)#

如果您需要更細緻的控制(例如使用 IKEv2、自訂加密參數),可以使用 Custom 方式建立。

5.2.1. 開啟 Custom Wizard#

  1. 前往 VPN > IPsec Wizard
  2. Template Type 選擇:Custom
  3. 輸入 VPN 名稱(例如:IKEv2-VPN

選擇 Custom 範本以自訂所有 VPN 參數

5.2.2. 網路設定#

設定 IP 版本、遠端類型和連線介面

設定 Mode Config、IP 地址池、DNS 和 Split Tunnel

設定說明

項目說明建議值
IP VersionIP 協定版本IPv4
Remote Gateway遠端連線類型Dialup User(允許不固定 IP 的使用者撥入)
InterfaceVPN 綁定的介面選擇 WAN 介面(如 wan1
Mode Config是否啟用 Mode Config(賦予使用者網路資訊)啟用(必須啟用才會分配 IP 和 DNS)
Use system DNS in mode config使用 FortiGate 系統 DNS可勾選(或自訂 DNS Server)
Assign IP FromIP 分配方式Range(使用 IP 範圍)
Client Address RangeVPN 使用者的 IP 範圍例如 10.10.10.10-10.10.10.20
Subnet Mask子網路遮罩255.255.255.255
DNS Server提供給使用者的 DNS輸入內部 DNS 或留空(使用系統 DNS)
Enable IPv4 Split Tunnel啟用分流啟用
Accessible Networks走 VPN 的目的地網段選擇內部網段(如 192.168.1.0/24
NAT Traversal支援 NAT 穿越Enable(支援 NAT 後方的客戶端)
Dead Peer Detection偵測對端是否離線On Demand(建議啟用)

5.2.3. 認證與 IKE 版本設定#

設定認證方式、Pre-shared Key 和 IKE 版本

設定說明

項目說明建議值
Method認證方式Pre-shared Key
Pre-shared Key共享金鑰(需與客戶端一致)設定複雜的密碼
IKE VersionIKE 協定版本2(IKEv2,較安全且效能更好)
Accept TypesPeer ID 接受類型- Any peer ID:單一 VPN 通道
- Specific Peer ID:多通道(需指定 Peer ID)

Peer ID 選擇說明

  • 如果所有使用者共用一個 VPN 設定,選擇 Any peer ID
  • 如果要為不同群組建立不同 VPN 通道,選擇 Specific Peer ID 並指定 Peer ID

5.2.4. Phase 1 設定#

Phase 1 是建立 IKE 安全通道的階段,需要協商加密參數。

設定 Phase 1 的加密演算法、驗證演算法和 DH 群組

設定說明

項目說明建議值
Encryption加密演算法選擇 AES128AES256避免 DES、3DES)
Authentication驗證演算法選擇 SHA256SHA512避免 MD5、SHA1)
Diffie-Hellman Group金鑰交換群組選擇 14 以上(避免 1、2、5)
Key LifetimePhase 1 金鑰有效時間86400 秒(1 天,預設值即可)

安全建議

  • 不要選擇:DES、3DES(加密過時)、MD5、SHA1(易受攻擊)、DH Group 1/2/5(金鑰太短)
  • 建議使用:AES-GCM(整合加密和驗證)、SHA256/SHA512、DH Group 14 以上

多組 Proposal

  • 可以設定多組參數組合
  • 客戶端只要符合其中一組就能連線
  • 方便支援不同版本的 FortiClient 或第三方客戶端

5.2.5. Phase 2 設定#

Phase 2 是建立實際資料加密通道(IPsec SA)的階段。

設定 Phase 2 的 Selectors(流量選擇器)

設定 Phase 2 的加密參數和 PFS

Selectors 設定

項目說明建議值
Local Address本地流量來源(與 Remote 組成 Selector)0.0.0.0/0(所有)
Remote Address遠端流量目的(與 Local 組成 Selector)0.0.0.0/0(所有)

為什麼設定 0.0.0.0/0?

  • Selector 是用來決定「哪些流量需要加密」,而非「哪些流量可以走 VPN」
  • 「哪些流量可以走 VPN」是由 Split Tunnel 設定控制
  • 設定 0.0.0.0/0 表示「所有通過此 VPN 的流量都要加密」

加密參數設定

項目說明建議值
Encryption加密演算法選擇 AES128AES256避免 DES、3DES)
Authentication驗證演算法選擇 SHA256SHA512避免 MD5、SHA1)
Enable Replay Detection防止封包重播攻擊勾選(建議啟用)
Enable Perfect Forward Secrecy啟用完美前向保密(PFS)勾選(提升安全性)
Diffie-Hellman GroupPFS 使用的 DH 群組選擇 14 以上
Key LifetimePhase 2 金鑰有效時間43200 秒(12 小時,預設值即可)
Local Port來源 PortAll
Remote Port目的 PortAll
Protocol傳輸層協定All
Autokey Keep Alive保持連線活躍勾選(防止 NAT Session 超時)

什麼是 PFS(Perfect Forward Secrecy)?

  • 每次建立 Phase 2 連線時,都重新進行 DH 金鑰交換
  • 即使 Phase 1 的金鑰洩漏,也無法解密過去的 Phase 2 流量
  • 建議啟用以提升安全性

5.2.6. 設定 EAP 驗證(IKEv2)#

IKEv2 使用 EAP(Extensible Authentication Protocol)進行使用者驗證,目前此設定僅能透過 CLI 完成。

CLI 指令

Terminal window
config vpn ipsec phase1-interface
edit IKEv2-VPN
# 編輯 VPN 設定(名稱需與您建立的 VPN 一致)
set eap enable
# 啟用 EAP 驗證
set eap-identity send-request
# 設定發送 EAP 驗證請求
set authusrgrp SSL_VPN_Group
# 設定允許連線的使用者群組
# 需替換為您實際的群組名稱
end

如果使用 IKEv1

  • 不需要設定 EAP
  • 改用 XAuth 進行使用者驗證(可在 GUI 設定)

5.2.7. 建立防火牆政策#

Custom 方式不會自動建立防火牆政策,需要手動建立允許 VPN 流量進入內部網段的規則。

建立防火牆政策,允許 VPN 使用者存取內部網段

政策設定

  1. 前往 Policy & Objects > Firewall Policy
  2. 點擊 Create New
  3. 設定以下參數:
    • Incoming Interface:選擇 VPN 介面(如 IKEv2-VPN
    • Outgoing Interface:選擇內部介面(如 internal
    • Source:選擇 VPN IP 範圍或 all
    • Destination:選擇內部網段或特定伺服器
    • Service:選擇 ALL 或特定服務
    • ActionACCEPT

6. FortiClient 用戶端設定#

使用者需要在 FortiClient 上設定 VPN 連線資訊才能撥入。

6.1. 下載並安裝 FortiClient#

  1. 前往 Fortinet 官網下載頁面
  2. 下載 FortiClient VPN Only 版本(如果不需要其他安全功能)
  3. 安裝完成後開啟 FortiClient

FortiClient VPN Only 主畫面

6.2. 建立 VPN 連線#

點擊 建立新連接(或 Configure VPN)。

點擊建立新連接按鈕

6.3. 設定 VPN 參數#

設定 VPN 基本資訊

設定說明

項目說明範例
VPNVPN 類型選擇 IPsec VPN
連接名自訂連線名稱例如 公司 VPN
遠程網關FortiGate 的 WAN IP 或網域名稱例如 vpn.company.com1.2.3.4
驗証方式驗證方式(需與 FortiGate 設定一致)選擇 預設共享金鑰
預設共享金鑰輸入共享金鑰(需與 FortiGate 一致)輸入密碼

6.4. 進階設定(IKE 參數)#

點擊 進階設定(Advanced Settings)設定 IKE 參數。

設定 IKE 版本和加密參數(需與 FortiGate 一致)

重要提醒

  • 這些參數必須與 FortiGate 上的設定匹配
  • Phase 1 和 Phase 2 的 Proposal 至少要有一組相同
  • 如果不確定,可以設定多組 Proposal,只要其中一組匹配即可連線

6.5. 測試連線#

儲存設定後,輸入帳號密碼並點擊 連接

輸入帳號密碼並連線

6.6. 驗證連線成功#

連線成功後,FortiClient 會顯示已連線狀態,並顯示分配到的虛擬 IP。

連線成功,顯示分配到的 IP 和網路資訊

驗證步驟

  1. 確認取得虛擬 IP(如 10.10.10.10
  2. 嘗試 Ping 內部網段的主機
  3. 存取內部資源(如檔案伺服器、內部網站)

7. 常見問題與解決方案#

7.1. 如何限制只有特定國家/地區的 IP 可以連線?#

如果您希望只允許來自台灣的 IP 連線到 VPN,可以透過 Local-in Policy 實現。

步驟 1:建立地理位置 Address Object#

建立新的 Address Object

設定 Geography 類型的 Address,選擇 Taiwan

設定說明

項目設定值
Name自訂名稱(如 Taiwan
Type選擇 Geography
Country/Region選擇 Taiwan

步驟 2:建立 IPsec 使用的 Service Objects#

IPsec VPN 使用 UDP 500(IKE)和 UDP 4500(NAT-T),需要建立這兩個 Service。

建立新的 Service

建立 UDP 500 Service

UDP 500 設定

項目設定值
NameUDP500
ProtocolUDP
Destination PortLow: 500, High: 500

建立 UDP 4500 Service

UDP 4500 設定

項目設定值
NameUDP4500
ProtocolUDP
Destination PortLow: 4500, High: 4500

步驟 3:建立 Local-in Policy(使用 CLI)#

Local-in Policy 用於管制連線到 FortiGate 本身服務的流量,目前只能透過 CLI 設定。

Terminal window
config firewall local-in-policy
edit 1
# 規則編號(如果已有規則,請改用其他編號)
set intf wan1
# IPsec VPN 使用的介面(需根據實際情況修改)
set srcaddr Taiwan
# 允許的來源地區(使用剛才建立的 Address Object)
set srcaddr-negate enable
# 啟用反向選擇,意思是「除了 Taiwan 以外的 IP 都拒絕」
set dstaddr all
# 目的地 IP(可設定 all 或特定 IP)
set service UDP500 UDP4500
# 限制的服務(IPsec 使用的 Port)
set schedule always
# 永遠啟用此規則
set action accept
# 接受符合條件的連線
end

重要提醒

  • Local-in Policy 的比對順序是由上而下
  • 如果有多條規則,請注意順序,避免錯誤阻擋合法流量
  • 建議將此規則放在最前面

測試

  • 使用台灣 IP 連線:應該成功
  • 使用其他國家 IP 連線:應該被拒絕

7.2. 為什麼 Forward Traffic 的 User 欄位沒有顯示使用者資訊?#

當您查看 FortiGate 的流量記錄時,可能會發現 User 欄位是空白的,無法識別是哪位使用者產生的流量。

Forward Traffic 記錄中 User 欄位為空

問題原因#

身份驗證發生在 VPN 層(Phase 1)

  • 當您在 IPsec Phase 1 設定使用者群組(如 authusrgrp)時
  • 身份驗證在 VPN 隧道建立時就完成了
  • 防火牆政策無法識別使用者身份,因此 User 欄位為空

解決方案#

需要將身份驗證從 Phase 1 移到防火牆政策

7.2.1. IKEv1 解決方式#

步驟 1:取消 Phase 1 的群組驗證

在 Phase 1 設定中,將 User Group 改為 Inherit from policy

將 User Group 設定改為 Inherit from policy

步驟 2:在防火牆政策中加入群組

編輯所有與此 VPN 相關的防火牆政策,加入使用者群組。

編輯防火牆政策

在 Source 加入使用者群組

設定完成,政策會顯示群組資訊

現在 Forward Traffic 的 User 欄位會顯示使用者資訊

7.2.2. IKEv2 解決方式#

步驟 1:取消 Phase 1 的群組驗證(使用 CLI)

Terminal window
config vpn ipsec phase1-interface
edit "IKEv2-VPN"
# 編輯 VPN 設定(替換為您的 VPN 名稱)
unset authusrgrp
# 取消群組驗證
end

步驟 2:在防火牆政策中加入群組

與 IKEv1 相同,編輯防火牆政策並加入使用者群組。

編輯防火牆政策

在 Source 加入使用者群組

設定完成

現在 Forward Traffic 會顯示使用者資訊

注意事項

  • 不可同時設定 Phase 1 和防火牆政策的群組驗證
  • 如果兩邊都設定,使用者會無法連線(驗證失敗)
  • 建議統一使用防火牆政策管理使用者權限

8. 附錄:技術原理深入解析#

本節提供 SSL VPN 和 IPsec VPN 的技術原理詳解,適合需要深入了解的讀者。

8.1. SSL VPN 技術原理#

8.1.1. 什麼是 SSL VPN?#

SSL VPN(Secure Sockets Layer Virtual Private Network)是一種基於應用層的 VPN 技術,使用 TLS(Transport Layer Security,SSL 的後繼者)協定進行加密。

運作方式

  • 使用者透過瀏覽器或 FortiClient 連線
  • 使用 HTTPS(TCP 443)建立加密通道
  • 所有流量透過此通道傳輸

8.1.2. SSL VPN 的運作模式#

Web Portal 模式

  • 使用者透過瀏覽器存取 Web 介面
  • 可直接使用 Web 版的應用程式(如 RDP、SSH)
  • 不需安裝客戶端軟體

Tunnel 模式

  • 需要安裝 FortiClient
  • 建立虛擬網路介面
  • 使用者可如同在公司內部一樣存取所有資源

8.1.3. SSL VPN 的限制#

1. TCP-over-TCP 問題

當 SSL VPN(使用 TCP)封裝 TCP 應用(如 RDP、SSH)時,會產生兩層 TCP:

[應用資料] → [TCP Header] → [TLS 加密] → [外層 TCP Header]

問題

  • 當網路發生封包遺失時,內外兩層 TCP 都會嘗試重傳
  • 兩層 TCP 的擁塞控制機制會互相干擾
  • 導致效能大幅下降,連線變得不穩定

2. 無法使用硬體加速

  • SSL/TLS 加密運算發生在應用層
  • 無法使用 FortiGate 的 NPU(Network Processing Unit)硬體加速
  • 所有加密解密都由 CPU 處理,效能受限

3. QoS 支援不佳

  • TLS 加密後,網路設備看不到內層封包的類型
  • 無法根據應用類型設定優先權(如讓視訊會議優先)
  • 所有 VPN 流量被視為相同優先級

8.2. IPsec VPN 技術原理#

8.2.1. 什麼是 IPsec?#

IPsec(Internet Protocol Security)是一種在 IP 層實現安全通訊的協定套件。它透過加密和驗證 IP 封包,確保資料的機密性、完整性和可驗證性。

IPsec 架構圖,包含 IKE、ESP/AH 和 SAD/SPD

核心組成

  • IKE(Internet Key Exchange):負責協商加密參數和交換金鑰
  • ESP(Encapsulating Security Payload):提供加密和驗證
  • AH(Authentication Header):僅提供驗證(較少使用)
  • SAD(Security Association Database):儲存加密參數
  • SPD(Security Policy Database):決定哪些流量需要加密

8.2.2. IPsec 運作模式#

傳輸模式(Transport Mode)

┌──────────────┬──────────────┬─────────────────────┐
│ IP Header │ ESP Header │ TCP/UDP + Data │
└──────────────┴──────────────┴─────────────────────┘
|<- 原始 IP ->| |<- 加密範圍 -------->|

特點

  • 保留原始 IP Header
  • 僅加密 TCP/UDP 及資料部分
  • 開銷較小,但無法隱匿真實 IP
  • 適用於主機對主機通訊

隧道模式(Tunnel Mode)

┌──────────────┬──────────────┬────────────────────────────────┐
│ New IP │ ESP Header │ Old IP + TCP/UDP + Data │
└──────────────┴──────────────┴────────────────────────────────┘
|<- 外層 IP ->| |<- 加密範圍 ------------------>|

特點

  • 新增外層 IP Header
  • 整個原始封包(包含 IP Header)都被加密
  • 完全隱藏內部 IP 位址
  • 適用於 Site-to-Site VPN 和 Remote Access VPN

8.2.3. 封包安全協定#

AH(Authentication Header)

┌────────────┬───────────────────────────┐
│ AH Header │ IP Data │
└────────────┴───────────────────────────┘
|<- 驗證範圍 -------------->|
  • 工作在 IP Protocol 51
  • 僅提供完整性和來源驗證
  • 不提供加密,資料仍是明文
  • 現代部署很少使用,通常被 ESP 取代

ESP(Encapsulating Security Payload)

┌────────────┬──────────┬──────────────┬───────────────┐
│ ESP Header │ IP Data │ ESP Trailer │ ESP Auth │
└────────────┴──────────┴──────────────┴───────────────┘
|<- 加密範圍 ------------>|
|<-------- 驗證範圍 --------------------->|
  • 工作在 IP Protocol 50
  • 同時提供加密和驗證
  • 支援 NAT-T(NAT Traversal),可使用 UDP 4500 封裝
  • 主流 VPN 都使用 ESP

8.2.4. 金鑰管理協定#

IKEv1(Internet Key Exchange version 1)

使用兩階段建立安全連線:

  • Phase 1:建立 IKE SA(IKE 安全關聯),用於保護後續 IKE 訊息
  • Phase 2:建立 IPsec SA(資料加密通道),用於加密實際資料

IKEv1 的兩種模式

項目Main ModeAggressive Mode
Phase 1 封包數6 個3 個
ID 傳送方式加密傳送明文傳送
建立速度較慢較快
安全性較高較低
Peer ID 支援❌(無法區分)✅(可區分)
適用場景Site-to-Site VPNRemote Access

Main Mode 流程

Initiator Responder
| |
|--- 1. Propose algorithms ------------------->|
|<-- 2. Select algorithms ----------------------|
| |
|--- 3. Exchange DH public values ------------->|
|<-- 4. Exchange DH public values --------------|
| |
|--- 5. Authenticate (encrypted) -------------->|
|<-- 6. Authenticate (encrypted) ---------------|
| |
|========== IKE SA established =================|
| |
|--- Phase 2: Propose IPsec SA ---------------->|
|<-- Phase 2: Select algorithms ----------------|

Aggressive Mode 流程

Initiator Responder
| |
|--- 1. Proposal + DH + ID -------------------->|
|<-- 2. Response + DH + ID + Auth --------------|
|--- 3. Auth ----------------------------------->|
| |
|========== IKE SA established =================|
| |
|--- Phase 2: Propose IPsec SA ---------------->|
|<-- Phase 2: Select algorithms ----------------|

IKEv2(Internet Key Exchange version 2)

  • 重新設計的 IKE 協定,簡化流程
  • 將 Phase 1 和 Phase 2 整合成單一流程
  • 僅需 4 個封包就能完成連線建立

IKEv2 流程

Initiator Responder
| |
|========= IKE_SA_INIT (建立加密通道) ===========|
| |
|--- 1. Proposal + DH + Nonce ----------------->|
|<-- 2. Selected + DH + Nonce ------------------|
| |
| [雙方計算 Shared Key] |
| |
|========= IKE_AUTH (認證與資料通道) ============|
| [以下封包使用 Shared Key 加密] |
| |
|--- 3. Encrypted(ID + Auth + CHILD_SA) ------->|
|<-- 4. Encrypted(ID + Auth + CHILD_SA) --------|
| |
|========== 連線建立完成 =======================|

IKEv2 優點

  • ✅ 更快(4 個封包 vs 9 個封包)
  • ✅ 更安全(ID 加密傳送、強制使用 DH)
  • ✅ 支援 EAP 認證(靈活的使用者驗證方式)
  • ✅ 支援 MOBIKE(移動裝置 IP 變更時自動重連)
  • ✅ 原生支援 Peer ID(無需 Aggressive Mode)

8.2.5. 封包處理流程#

Outbound Path(封包送出)

[應用層產生資料]
[加上 IP Header]
[SPD 查詢] → 根據來源/目的 IP、Port、協定查詢規則
┌───┴───┐
↓ ↓ ↓
Bypass Discard Protect
↓ ↓ ↓
[直接送出] [丟棄] [SAD 查找 SA]
[有 SA?]
↓ ↓
否 是
↓ ↓
[IKE 協商] [ESP/AH 加密]
↓ ↓
└──>──┘
[送出到網路]

簡單理解

  1. 資料要送出時,先問 SPD:「這資料要加密嗎?」
  2. 如果要加密,再問 SAD:「我有鑰匙嗎?」
  3. 有鑰匙就直接加密送出,沒有就先用 IKE 協商取得鑰匙

Inbound Path(封包接收)

[從網路接收封包]
[有 ESP/AH Header?]
↓ ↓
是 否
↓ ↓
[解析 SPI] [跳到 SPD 查詢]
[SAD 查找 SA]
[ESP/AH 驗證與解密]
[SPD 查詢] → 驗證是否符合規則
┌───┴───┐
↓ ↓ ↓
Protect Bypass Discard
↓ ↓ ↓
[交付上層] [交付上層] [丟棄]

簡單理解

  1. 收到封包時,先看有沒有「加密封條」(ESP Header)
  2. 有的話,用 SAD 裡的鑰匙解密
  3. 解密後,再問 SPD:「這資料可以接受嗎?」
  4. 符合規則就交給應用程式,不符合就丟棄

8.3. 為什麼 IPsec VPN 效能更好?#

1. 硬體加速支援

  • IPsec 在 IP 層運作,可以使用 FortiGate 的 NPU(Network Processing Unit)
  • NPU 是專門的硬體晶片,專門處理加密/解密
  • CPU 負擔降低,可以處理更多連線

2. UDP 封裝避免 TCP-over-TCP

  • IPsec 使用 UDP(或直接在 IP 層),不會產生兩層 TCP
  • 避免擁塞控制機制互相干擾
  • 連線更穩定,效能更好

3. QoS 支援

  • ESP Header 之外仍保留原始 IP Header 資訊
  • 網路設備可以識別流量類型
  • 可為重要應用設定優先權

參考資料#

FortiGate SSL VPN 遷移到 IPsec VPN 教學
https://blog.fiskao.com.tw/posts/fortinet/fortigate-sslvpn-to-ipsecvpn/
作者
Wilder
發佈於
2025-05-05
許可協議
CC BY-NC-SA 4.0