1. 為什麼要從 SSL VPN 遷移到 IPsec VPN?
如果您的組織目前使用 SSL VPN,可能會遇到以下幾個問題:
常見問題
-
連線速度慢、延遲高
- SSL VPN 無法使用硬體加速(如 FortiGate 的 NPU),所有加密解密都靠 CPU 處理
- 當多人同時連線時,CPU 使用率會飆高,影響整體效能
-
TCP 應用容易卡頓
- SSL VPN 使用 TCP(HTTPS/443)封裝,如果內部應用也是 TCP(如 RDP、SSH),會產生「TCP-over-TCP」問題
- 當網路不穩定時,兩層 TCP 會互相影響,造成連線變慢甚至中斷
-
無法管理流量優先順序
- SSL VPN 加密後,網路設備看不到內層封包的類型
- 無法為重要應用(如視訊會議)設定較高優先權
遷移到 IPsec VPN 的好處
✅ 效能大幅提升:支援硬體加速,CPU 負擔降低 ✅ 連線更穩定:使用 UDP 封裝,避免 TCP-over-TCP 問題 ✅ 支援 QoS:可為不同流量設定優先順序 ✅ 更適合長期連線:適合需要穩定、高效能的工作環境
2. SSL VPN vs IPsec VPN 快速比較
以下表格幫助您快速了解兩者的差異:
| 項目 | SSL VPN | IPsec 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 封裝,無重複擁塞控制) |
| 用戶端需求 | 瀏覽器或 FortiClient | FortiClient(或其他 IPsec 客戶端) |
| 適用場景 | 臨時連線、外部存取 | 長期連線、高效能需求、企業遠端辦公 |
選擇建議
- 繼續使用 SSL VPN:臨時需求、少量使用者、網路環境複雜(需穿越多層防火牆)
- 遷移到 IPsec VPN:長期使用、多人同時連線、需要高效能、重視連線穩定性
3. 環境說明
本教學使用的環境:
- 硬體:FortiGate 60F
- 系統版本:FortiOS 7.2.11
4. 遷移前的準備工作
在開始建立 IPsec VPN 之前,建議先確認以下項目:
4.1. 身份驗證方式
SSL VPN 和 IPsec VPN 都支援多種驗證方式,確認您目前使用的方式是否相容:
| 驗證方式 | SSL VPN | IPsec (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 提供兩種建立方式:
- 使用內建範本(適合初學者,自動建立相關設定)
- 自訂設定(彈性高,可精確控制所有參數)
本節將介紹這兩種方式。
5.1. 方式一:使用內建範本(IKEv1)
這是最簡單的方式,FortiGate 會自動建立所需的所有設定。
5.1.1. 開啟 VPN Wizard
- 登入 FortiGate 管理介面
- 前往 VPN > IPsec Wizard
- Template Type 選擇:Remote Access
- Remote device type 選擇:FortiClient
- 輸入 VPN 名稱(例如:
Remote-VPN)

5.1.2. 設定身份驗證

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

設定說明:
| 項目 | 說明 | 建議值 |
|---|---|---|
| Local Interface | 內部網段的介面 | 選擇內部介面(如 internal) |
| Local Address | 使用者可存取的內部網段 | 輸入內部網段(如 192.168.1.0/24) |
| Client Address Range | 分配給 VPN 使用者的 IP 範圍 | 例如 10.10.10.10-10.10.10.50 |
| Subnet Mask | VPN 使用者的子網路遮罩 | 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 狀態

5.2. 方式二:自訂設定(IKEv2)
如果您需要更細緻的控制(例如使用 IKEv2、自訂加密參數),可以使用 Custom 方式建立。
5.2.1. 開啟 Custom Wizard
- 前往 VPN > IPsec Wizard
- Template Type 選擇:Custom
- 輸入 VPN 名稱(例如:
IKEv2-VPN)

5.2.2. 網路設定


設定說明:
| 項目 | 說明 | 建議值 |
|---|---|---|
| IP Version | IP 協定版本 | IPv4 |
| Remote Gateway | 遠端連線類型 | Dialup User(允許不固定 IP 的使用者撥入) |
| Interface | VPN 綁定的介面 | 選擇 WAN 介面(如 wan1) |
| Mode Config | 是否啟用 Mode Config(賦予使用者網路資訊) | 啟用(必須啟用才會分配 IP 和 DNS) |
| Use system DNS in mode config | 使用 FortiGate 系統 DNS | 可勾選(或自訂 DNS Server) |
| Assign IP From | IP 分配方式 | Range(使用 IP 範圍) |
| Client Address Range | VPN 使用者的 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 版本設定

設定說明:
| 項目 | 說明 | 建議值 |
|---|---|---|
| Method | 認證方式 | Pre-shared Key |
| Pre-shared Key | 共享金鑰(需與客戶端一致) | 設定複雜的密碼 |
| IKE Version | IKE 協定版本 | 2(IKEv2,較安全且效能更好) |
| Accept Types | Peer 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 安全通道的階段,需要協商加密參數。

設定說明:
| 項目 | 說明 | 建議值 |
|---|---|---|
| Encryption | 加密演算法 | 選擇 AES128、AES256(避免 DES、3DES) |
| Authentication | 驗證演算法 | 選擇 SHA256、SHA512(避免 MD5、SHA1) |
| Diffie-Hellman Group | 金鑰交換群組 | 選擇 14 以上(避免 1、2、5) |
| Key Lifetime | Phase 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)的階段。


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 | 加密演算法 | 選擇 AES128、AES256(避免 DES、3DES) |
| Authentication | 驗證演算法 | 選擇 SHA256、SHA512(避免 MD5、SHA1) |
| Enable Replay Detection | 防止封包重播攻擊 | 勾選(建議啟用) |
| Enable Perfect Forward Secrecy | 啟用完美前向保密(PFS) | 勾選(提升安全性) |
| Diffie-Hellman Group | PFS 使用的 DH 群組 | 選擇 14 以上 |
| Key Lifetime | Phase 2 金鑰有效時間 | 43200 秒(12 小時,預設值即可) |
| Local Port | 來源 Port | All |
| Remote Port | 目的 Port | All |
| 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 指令:
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 流量進入內部網段的規則。

政策設定:
- 前往 Policy & Objects > Firewall Policy
- 點擊 Create New
- 設定以下參數:
- Incoming Interface:選擇 VPN 介面(如
IKEv2-VPN) - Outgoing Interface:選擇內部介面(如
internal) - Source:選擇 VPN IP 範圍或
all - Destination:選擇內部網段或特定伺服器
- Service:選擇
ALL或特定服務 - Action:
ACCEPT
- Incoming Interface:選擇 VPN 介面(如
6. FortiClient 用戶端設定
使用者需要在 FortiClient 上設定 VPN 連線資訊才能撥入。
6.1. 下載並安裝 FortiClient
- 前往 Fortinet 官網下載頁面
- 下載 FortiClient VPN Only 版本(如果不需要其他安全功能)
- 安裝完成後開啟 FortiClient

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

6.3. 設定 VPN 參數

設定說明:
| 項目 | 說明 | 範例 |
|---|---|---|
| VPN | VPN 類型 | 選擇 IPsec VPN |
| 連接名 | 自訂連線名稱 | 例如 公司 VPN |
| 遠程網關 | FortiGate 的 WAN IP 或網域名稱 | 例如 vpn.company.com 或 1.2.3.4 |
| 驗証方式 | 驗證方式(需與 FortiGate 設定一致) | 選擇 預設共享金鑰 |
| 預設共享金鑰 | 輸入共享金鑰(需與 FortiGate 一致) | 輸入密碼 |
6.4. 進階設定(IKE 參數)
點擊 進階設定(Advanced Settings)設定 IKE 參數。

重要提醒:
- 這些參數必須與 FortiGate 上的設定匹配
- Phase 1 和 Phase 2 的 Proposal 至少要有一組相同
- 如果不確定,可以設定多組 Proposal,只要其中一組匹配即可連線
6.5. 測試連線
儲存設定後,輸入帳號密碼並點擊 連接。

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

驗證步驟:
- 確認取得虛擬 IP(如
10.10.10.10) - 嘗試 Ping 內部網段的主機
- 存取內部資源(如檔案伺服器、內部網站)
7. 常見問題與解決方案
7.1. 如何限制只有特定國家/地區的 IP 可以連線?
如果您希望只允許來自台灣的 IP 連線到 VPN,可以透過 Local-in Policy 實現。
步驟 1:建立地理位置 Address Object


設定說明:
| 項目 | 設定值 |
|---|---|
| Name | 自訂名稱(如 Taiwan) |
| Type | 選擇 Geography |
| Country/Region | 選擇 Taiwan |
步驟 2:建立 IPsec 使用的 Service Objects
IPsec VPN 使用 UDP 500(IKE)和 UDP 4500(NAT-T),需要建立這兩個 Service。


UDP 500 設定:
| 項目 | 設定值 |
|---|---|
| Name | UDP500 |
| Protocol | UDP |
| Destination Port | Low: 500, High: 500 |

UDP 4500 設定:
| 項目 | 設定值 |
|---|---|
| Name | UDP4500 |
| Protocol | UDP |
| Destination Port | Low: 4500, High: 4500 |
步驟 3:建立 Local-in Policy(使用 CLI)
Local-in Policy 用於管制連線到 FortiGate 本身服務的流量,目前只能透過 CLI 設定。
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 欄位是空白的,無法識別是哪位使用者產生的流量。

問題原因
身份驗證發生在 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。

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




7.2.2. IKEv2 解決方式
步驟 1:取消 Phase 1 的群組驗證(使用 CLI)
config vpn ipsec phase1-interface edit "IKEv2-VPN" # 編輯 VPN 設定(替換為您的 VPN 名稱)
unset authusrgrp # 取消群組驗證end步驟 2:在防火牆政策中加入群組
與 IKEv1 相同,編輯防火牆政策並加入使用者群組。




注意事項:
- 不可同時設定 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 封包,確保資料的機密性、完整性和可驗證性。

核心組成:
- 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 Mode | Aggressive Mode |
|---|---|---|
| Phase 1 封包數 | 6 個 | 3 個 |
| ID 傳送方式 | 加密傳送 | 明文傳送 |
| 建立速度 | 較慢 | 較快 |
| 安全性 | 較高 | 較低 |
| Peer ID 支援 | ❌(無法區分) | ✅(可區分) |
| 適用場景 | Site-to-Site VPN | Remote 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 加密] ↓ ↓ └──>──┘ ↓ [送出到網路]簡單理解:
- 資料要送出時,先問 SPD:「這資料要加密嗎?」
- 如果要加密,再問 SAD:「我有鑰匙嗎?」
- 有鑰匙就直接加密送出,沒有就先用 IKE 協商取得鑰匙
Inbound Path(封包接收):
[從網路接收封包] ↓[有 ESP/AH Header?] ↓ ↓ 是 否 ↓ ↓[解析 SPI] [跳到 SPD 查詢] ↓[SAD 查找 SA] ↓[ESP/AH 驗證與解密] ↓[SPD 查詢] → 驗證是否符合規則 ↓ ┌───┴───┐ ↓ ↓ ↓Protect Bypass Discard ↓ ↓ ↓[交付上層] [交付上層] [丟棄]簡單理解:
- 收到封包時,先看有沒有「加密封條」(ESP Header)
- 有的話,用 SAD 裡的鑰匙解密
- 解密後,再問 SPD:「這資料可以接受嗎?」
- 符合規則就交給應用程式,不符合就丟棄
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 資訊
- 網路設備可以識別流量類型
- 可為重要應用設定優先權
參考資料
- SSL VPN to IPsec VPN Migration - Fortinet Documentation
- Technical Tip: How to use multiple groups with EAP for IKEv2 (SAML/RADIUS/local)
- Technical Tip: Using group based firewall policy for Dial-Up VPN to restrict network access
- Troubleshooting Tip: Dialup IPsec VPN user-info not displaying in ‘Assets & Identities’